From adce4fd821e259f83752dc6bb2452bca1fd7106b Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Sat, 10 Jul 2021 16:00:05 -0400 Subject: [PATCH 01/12] stash --- decompiler/config/all-types.gc | 236 +++++------------- decompiler/config/jak1_ntsc_black_label.jsonc | 2 +- 2 files changed, 68 insertions(+), 170 deletions(-) diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 656f88a0db..63fb1dc7b9 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -20135,7 +20135,7 @@ ;; - Functions (define-extern eco-blue-glow function) -(define-extern cloud-track function) +(define-extern cloud-track (function none)) ;; ---------------------- @@ -20146,179 +20146,77 @@ ;; - Types -; (deftype crate-bank (basic) -; ((COLLIDE_YOFF float :offset-assert 4) -; (COLLIDE_RADIUS float :offset-assert 8) -; (DARKECO_EXPLODE_RADIUS float :offset-assert 12) -; ) -; :method-count-assert 9 -; :size-assert #x10 -; :flag-assert #x900000010 -; ) +(deftype crate-bank (basic) + ((COLLIDE_YOFF float :offset-assert 4) + (COLLIDE_RADIUS float :offset-assert 8) + (DARKECO_EXPLODE_RADIUS float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) -; (deftype crate (process-drawable) -; ((smush smush-control :inline :offset-assert 176) -; (base vector :inline :offset-assert 208) -; (look basic :offset-assert 224) -; (defense basic :offset-assert 228) -; (incomming-attack-id uint64 :offset-assert 232) -; (target uint64 :offset-assert 240) -; (child-count int32 :offset-assert 248) -; (victory-anim basic :offset-assert 252) -; ) -; :method-count-assert 30 -; :size-assert #x100 -; :flag-assert #x1e00900100 -; ;; inherited inspect of process-drawable -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; (dummy-22 () none 22) -; (dummy-23 () none 23) -; (dummy-24 () none 24) -; (dummy-25 () none 25) -; (dummy-26 () none 26) -; (dummy-27 () none 27) -; (dummy-28 () none 28) -; (dummy-29 () none 29) -; ) -; ) +(deftype crate (process-drawable) + ((smush smush-control :inline :offset-assert 176) + (base vector :inline :offset-assert 208) + (look basic :offset-assert 224) + (defense basic :offset-assert 228) + (incomming-attack-id uint64 :offset-assert 232) + (target uint64 :offset-assert 240) + (child-count int32 :offset-assert 248) + (victory-anim basic :offset-assert 252) + ) + :method-count-assert 30 + :heap-base #x90 + :size-assert #x100 + :flag-assert #x1e00900100 + ;; inherited inspect of process-drawable + (:methods + (dummy-20 () none 20) + (dummy-21 () none 21) + (dummy-22 () none 22) + (dummy-23 () none 23) + (dummy-24 () none 24) + (dummy-25 () none 25) + (dummy-26 () none 26) + (dummy-27 () none 27) + (dummy-28 () none 28) + (dummy-29 () none 29) + ) + ) -; (deftype barrel (crate) -; () -; :method-count-assert 30 -; :size-assert #x100 -; :flag-assert #x1e00900100 -; ;; not enough basic ops -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; (dummy-22 () none 22) -; (dummy-23 () none 23) -; (dummy-24 () none 24) -; (dummy-25 () none 25) -; (dummy-26 () none 26) -; (dummy-27 () none 27) -; (dummy-28 () none 28) -; (dummy-29 () none 29) -; ) -; ) +(deftype barrel (crate) + () + :method-count-assert 30 + :heap-base #x90 + :size-assert #x100 + :flag-assert #x1e00900100 + ) -; (deftype bucket (crate) -; () -; :method-count-assert 30 -; :size-assert #x100 -; :flag-assert #x1e00900100 -; ;; not enough basic ops -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; (dummy-22 () none 22) -; (dummy-23 () none 23) -; (dummy-24 () none 24) -; (dummy-25 () none 25) -; (dummy-26 () none 26) -; (dummy-27 () none 27) -; (dummy-28 () none 28) -; (dummy-29 () none 29) -; ) -; ) +(deftype bucket (crate) + () + :method-count-assert 30 + :heap-base #x90 + :size-assert #x100 + :flag-assert #x1e00900100 + ) -; (deftype crate-buzzer (crate) -; () -; :method-count-assert 30 -; :size-assert #x100 -; :flag-assert #x1e00900100 -; ;; not enough basic ops -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; (dummy-22 () none 22) -; (dummy-23 () none 23) -; (dummy-24 () none 24) -; (dummy-25 () none 25) -; (dummy-26 () none 26) -; (dummy-27 () none 27) -; (dummy-28 () none 28) -; (dummy-29 () none 29) -; ) -; ) +(deftype crate-buzzer (crate) + () + :method-count-assert 30 + :heap-base #x90 + :size-assert #x100 + :flag-assert #x1e00900100 + ) -; (deftype pickup-spawner (crate) -; ((blocker basic :offset-assert 256) -; ) -; :method-count-assert 30 -; :size-assert #x104 -; :flag-assert #x1e00a00104 -; ;; inherited inspect of crate -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; (dummy-22 () none 22) -; (dummy-23 () none 23) -; (dummy-24 () none 24) -; (dummy-25 () none 25) -; (dummy-26 () none 26) -; (dummy-27 () none 27) -; (dummy-28 () none 28) -; (dummy-29 () none 29) -; ) -; ) +(deftype pickup-spawner (crate) + ((blocker basic :offset-assert 256) + ) + :method-count-assert 30 + :heap-base #xa0 + :size-assert #x104 + :flag-assert #x1e00a00104 + ) ;; - Functions diff --git a/decompiler/config/jak1_ntsc_black_label.jsonc b/decompiler/config/jak1_ntsc_black_label.jsonc index 64fea87854..a421fab0a9 100644 --- a/decompiler/config/jak1_ntsc_black_label.jsonc +++ b/decompiler/config/jak1_ntsc_black_label.jsonc @@ -3,7 +3,7 @@ // if you want to filter to only some object names. // it will make the decompiler much faster. - "allowed_objects": [], + "allowed_objects": ["crates"], //////////////////////////// // CODE ANALYSIS OPTIONS From f0d8943bd7f8c9a9b0e7b00222459adfd2c6805e Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Sat, 10 Jul 2021 21:16:26 -0400 Subject: [PATCH 02/12] stash --- .vscode/settings.json | 81 ++- decompiler/config/all-types.gc | 479 +++++------------- decompiler/config/jak1_ntsc_black_label.jsonc | 2 +- .../jak1_ntsc_black_label/type_casts.jsonc | 4 + 4 files changed, 203 insertions(+), 363 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index f6b26adec6..023166ced3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,20 +11,38 @@ "filterFileRegex": ".*ir2\\.asm", "decorations": [ { - "overviewRulerColor": "transparent", // TODO - fix this bug, it extends beyond the line match + "overviewRulerColor": "transparent", "color": "#41f041", "fontWeight": "bold" } ] }, + "()": { + "filterFileRegex": ".*ir2\\.asm", + "decorations": [ + { + "overviewRulerColor": "transparent", + "color": "#c72855" + } + ] + }, "(INFO:.*)": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ { "overviewRulerColor": "transparent", "color": "yellow", - "fontWeight": "bold", - "filterFileRegex": ".*ir2\\.asm" + "fontWeight": "bold" + } + ] + }, + "(sp, -?\\d+ )": { + "filterFileRegex": ".*ir2\\.asm", + "decorations": [ + { + "overviewRulerColor": "transparent", + "color": "#00ff08", + "fontWeight": "bold" } ] }, @@ -57,6 +75,24 @@ } ] }, + "(lwu t9)": { + "filterFileRegex": ".*ir2\\.asm", + "decorations": [ + { + "overviewRulerColor": "transparent", + "color": "magenta" + } + ] + }, + "(jalr)": { + "filterFileRegex": ".*ir2\\.asm", + "decorations": [ + { + "overviewRulerColor": "transparent", + "color": "magenta" + } + ] + }, "(L\\d+)": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ @@ -75,117 +111,130 @@ } ] }, - "(at)": { + "([\\s\\(])(at)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "red" } ] }, - "(gp)": { + "([\\s\\(])(gp)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#64c5e3" } ] }, - "(v0)": { + "([\\s\\(])(v0)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#c6c1e6" } ] }, - "(v1)": { + "([\\s\\(])(v1)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#dae6be" } ] }, - "(s6)": { + "([\\s\\(])(s6)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#41f0b0" } ] }, - "(a0)": { + "([\\s\\(])(a0)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "pink" } ] }, - "(a1)": { + "([\\s\\(])(a1)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#e065bb" } ] }, - "(a2)": { + "([\\s\\(])(a2)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#6dd1a6" } ] }, - "(a3)": { + "([\\s\\(])(a3)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#bad192" } ] }, - "(t0)": { + "([\\s\\(])(t0)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#b56b82" } ] }, - "(t1)": { + "([\\s\\(])(t1)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#6d32ba" } ] }, - "(t2)": { + "([\\s\\(])(t2)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#db9267" } ] }, - "(t3)": { + "([\\s\\(])(t3)([\\s\\),:-])": { "filterFileRegex": ".*ir2\\.asm", "decorations": [ + {}, { "overviewRulerColor": "transparent", "color": "#92db67" diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 63fb1dc7b9..ea28db3285 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -9708,15 +9708,18 @@ (declare-type collide-shape basic) (declare-type water-control basic) (declare-type sparticle-launch-control basic) +(declare-type nav-control basic) +(declare-type path-control basic) +(declare-type vol-control basic) (deftype process-drawable (process) ((root trsqv :offset-assert 112) (node-list cspace-array :offset-assert 116) (draw draw-control :offset-assert 120) (skel joint-control :offset-assert 124) - (nav basic :offset-assert 128) + (nav nav-control :offset-assert 128) (align align-control :offset-assert 132) - (path basic :offset-assert 136) - (vol basic :offset-assert 140) + (path path-control :offset-assert 136) + (vol vol-control :offset-assert 140) (fact fact-info :offset-assert 144) (link basic :offset-assert 148) (part sparticle-launch-control :offset-assert 152) @@ -10813,8 +10816,8 @@ (pat-ignore-mask uint32 :offset-assert 148) (event-self basic :offset-assert 152) (event-other basic :offset-assert 156) - (root-prim basic :offset-assert 160) - (riders basic :offset-assert 164) + (root-prim collide-shape-prim :offset-assert 160) + (riders collide-sticky-rider-group :offset-assert 164) (backup-collide-as uint64 :offset-assert 168) (backup-collide-with uint64 :offset-assert 176) ) @@ -10866,8 +10869,8 @@ (old-status uint64 :offset-assert 280) (prev-status uint64 :offset-assert 288) (reaction-flag uint32 :offset-assert 296) - (reaction basic :offset-assert 300) - (no-reaction basic :offset-assert 304) + (reaction function :offset-assert 300) + (no-reaction function :offset-assert 304) (local-normal vector :inline :offset-assert 320) (surface-normal vector :inline :offset-assert 336) (poly-normal vector :inline :offset-assert 352) @@ -10879,7 +10882,7 @@ (poly-angle float :offset-assert 424) (touch-angle float :offset-assert 428) (coverage float :offset-assert 432) - (dynam basic :offset-assert 436) + (dynam dynamics :offset-assert 436) (surf basic :offset-assert 440) ) :method-count-assert 65 @@ -21892,13 +21895,14 @@ ) (deftype nav-enemy (process-drawable) - ((hit-from-dir vector :inline :offset-assert 176) + ((collide-info collide-shape-moving :score 100 :offset 112) + (hit-from-dir vector :inline :offset-assert 176) (event-param-point vector :inline :offset-assert 192) (frustration-point vector :inline :offset-assert 208) (jump-dest vector :inline :offset-assert 224) (jump-trajectory trajectory :inline :offset-assert 240) (jump-time uint64 :offset-assert 280) - (nav-info basic :offset-assert 288) + (nav-info nav-enemy-info :offset-assert 288) (target-speed float :offset-assert 292) (momentum-speed float :offset-assert 296) (acceleration float :offset-assert 300) @@ -21906,7 +21910,7 @@ (turn-time uint64 :offset-assert 312) (frustration-time uint64 :offset-assert 320) (speed-scale float :offset-assert 328) - (neck basic :offset-assert 332) + (neck basic :offset-assert 332) ; WHAT IS THIS (look at mother-spider / pelican) (reaction-time uint64 :offset-assert 336) (notice-time uint64 :offset-assert 344) (state-timeout uint64 :offset-assert 352) @@ -21915,7 +21919,7 @@ (nav-enemy-flags uint32 :offset-assert 376) (incomming-attack-id uint64 :offset-assert 384) (jump-return-state basic :offset-assert 392) - (rand-gen basic :offset-assert 396) + (rand-gen random-generator :offset-assert 396) ) :heap-base #x120 :method-count-assert 76 @@ -21923,62 +21927,62 @@ :flag-assert #x4c01200190 ;; inherited inspect of process-drawable (:methods - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) - (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) - (dummy-28 () none 28) - (dummy-29 () none 29) - (dummy-30 () none 30) - (dummy-31 () none 31) - (dummy-32 () none 32) - (dummy-33 () none 33) - (dummy-34 () none 34) - (dummy-35 () none 35) - (dummy-36 () none 36) - (dummy-37 () none 37) - (dummy-38 () none 38) - (dummy-39 () none 39) - (dummy-40 () none 40) - (dummy-41 () none 41) - (dummy-42 () none 42) - (dummy-43 () none 43) - (dummy-44 () none 44) - (dummy-45 () none 45) - (dummy-46 () none 46) - (dummy-47 () none 47) - (dummy-48 () none 48) - (dummy-49 () none 49) - (dummy-50 () none 50) - (dummy-51 () none 51) - (dummy-52 () none 52) - (dummy-53 () none 53) - (dummy-54 () none 54) - (dummy-55 () none 55) - (dummy-56 () none 56) - (dummy-57 () none 57) - (dummy-58 () none 58) - (dummy-59 () none 59) - (dummy-60 () none 60) - (dummy-61 () none 61) - (dummy-62 () none 62) - (dummy-63 () none 63) - (dummy-64 () none 64) - (dummy-65 () none 65) - (dummy-66 () none 66) - (dummy-67 () none 67) - (dummy-68 () none 68) - (dummy-69 () none 69) - (dummy-70 () none 70) - (dummy-71 () none 71) - (dummy-72 () none 72) - (dummy-73 () none 73) - (dummy-74 () none 74) - (dummy-75 () none 75) + (dummy-20 (_type_) none 20) + (dummy-21 (_type_) none 21) + (dummy-22 (_type_) none 22) + (dummy-23 (_type_) none 23) + (dummy-24 (_type_) none 24) + (dummy-25 (_type_) none 25) + (dummy-26 (_type_) none 26) + (dummy-27 (_type_) none 27) + (dummy-28 (_type_) none 28) + (dummy-29 (_type_) none 29) + (dummy-30 (_type_) none 30) + (dummy-31 (_type_) none 31) + (dummy-32 (_type_) none 32) + (dummy-33 (_type_) none 33) + (dummy-34 (_type_) none 34) + (dummy-35 (_type_) none 35) + (dummy-36 (_type_) none 36) + (dummy-37 (_type_) none 37) + (dummy-38 (_type_) none 38) + (dummy-39 (_type_) none 39) ;; TODO - what the hell is neck + (dummy-40 (_type_) none 40) + (dummy-41 (_type_) none 41) + (TODO-RENAME-42 (_type_) int 42) + (dummy-43 (_type_) none 43) + (dummy-44 (_type_) none 44) + (dummy-45 (_type_) none 45) + (dummy-46 (_type_) none 46) + (dummy-47 (_type_) none 47) + (dummy-48 (_type_) none 48) + (dummy-49 (_type_) none 49) + (dummy-50 (_type_) none 50) + (dummy-51 (_type_) none 51) + (dummy-52 (_type_) none 52) + (dummy-53 (_type_) none 53) + (dummy-54 (_type_) none 54) + (dummy-55 (_type_) none 55) + (dummy-56 (_type_) none 56) + (dummy-57 (_type_) none 57) + (dummy-58 (_type_) none 58) + (dummy-59 (_type_) none 59) + (dummy-60 (_type_) none 60) + (dummy-61 (_type_) none 61) + (dummy-62 (_type_) none 62) + (dummy-63 (_type_) none 63) + (dummy-64 (_type_) none 64) + (dummy-65 (_type_) none 65) + (dummy-66 (_type_) none 66) + (dummy-67 (_type_) none 67) + (dummy-68 (_type_) none 68) + (dummy-69 (_type_) none 69) + (dummy-70 (_type_) none 70) + (dummy-71 (_type_) none 71) + (dummy-72 (_type_) none 72) + (dummy-73 (_type_) none 73) + (dummy-74 (_type_) none 74) + (dummy-75 (_type_) none 75) ) ) @@ -21991,14 +21995,14 @@ ;; - Functions -(define-extern nav-enemy-rnd-int-range function) +(define-extern nav-enemy-rnd-int-range (function int int int)) (define-extern nav-enemy-initialize-jump function) (define-extern nav-enemy-neck-control-look-at function) (define-extern nav-enemy-facing-point? function) (define-extern nav-enemy-turn-to-face-point function) (define-extern nav-enemy-execute-jump function) (define-extern nav-enemy-jump-land-anim function) -(define-extern nav-enemy-rnd-float-range function) +(define-extern nav-enemy-rnd-float-range (function float float float)) (define-extern nav-enemy-common-post function) (define-extern nav-enemy-execute-custom-jump function) (define-extern nav-enemy-initialize-custom-jump function) @@ -22008,7 +22012,7 @@ (define-extern nav-enemy-frustrated? function) (define-extern nav-enemy-player-at-frustration-point? function) (define-extern nav-enemy-reset-frustration function) -(define-extern nav-enemy-rnd-go-idle? function) +(define-extern nav-enemy-rnd-go-idle? (function float symbol)) (define-extern nav-enemy-notice-player? function) (define-extern nav-enemy-turn-to-face-dir function) (define-extern nav-enemy-facing-direction? function) @@ -22017,9 +22021,9 @@ (define-extern nav-enemy-get-new-patrol-point function) (define-extern nav-enemy-set-hit-from-direction function) (define-extern nav-enemy-send-attack function) -(define-extern nav-enemy-rnd-int-count function) -(define-extern nav-enemy-rnd-float function) -(define-extern nav-enemy-rnd-percent? function) +(define-extern nav-enemy-rnd-int-count (function int int)) +(define-extern nav-enemy-rnd-float (function float)) +(define-extern nav-enemy-rnd-percent? (function float symbol)) (define-extern nav-enemy-default-event-handler function) (define-extern nav-enemy-jump-event-handler function) (define-extern process-drawable-death-event-handler function) @@ -22477,97 +22481,28 @@ ;; - Types -; (deftype sharkey (nav-enemy) -; ((dir vector :inline :offset-assert 400) -; (spawn-point vector :inline :offset-assert 416) -; (scale float :offset-assert 432) -; (anim-speed float :offset-assert 436) -; (y-max meters :offset-assert 440) -; (y-min meters :offset-assert 444) -; (attack-time float :offset-assert 448) -; (player-water-time uint64 :offset-assert 456) -; (player-in-water basic :offset-assert 464) -; (last-y float :offset-assert 468) -; (spawn-distance meters :offset-assert 472) -; (chase-speed meters :offset-assert 476) -; (y-speed meters :offset-assert 480) -; (sound-id sound-id :offset-assert 484) -; (enable-patrol basic :offset-assert 488) -; ) -; :method-count-assert 76 -; :size-assert #x1ec -; :flag-assert #x4c018001ec -; ;; inherited inspect of nav-enemy -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; (dummy-22 () none 22) -; (dummy-23 () none 23) -; (dummy-24 () none 24) -; (dummy-25 () none 25) -; (dummy-26 () none 26) -; (dummy-27 () none 27) -; (dummy-28 () none 28) -; (dummy-29 () none 29) -; (dummy-30 () none 30) -; (dummy-31 () none 31) -; (dummy-32 () none 32) -; (dummy-33 () none 33) -; (dummy-34 () none 34) -; (dummy-35 () none 35) -; (dummy-36 () none 36) -; (dummy-37 () none 37) -; (dummy-38 () none 38) -; (dummy-39 () none 39) -; (dummy-40 () none 40) -; (dummy-41 () none 41) -; (dummy-42 () none 42) -; (dummy-43 () none 43) -; (dummy-44 () none 44) -; (dummy-45 () none 45) -; (dummy-46 () none 46) -; (dummy-47 () none 47) -; (dummy-48 () none 48) -; (dummy-49 () none 49) -; (dummy-50 () none 50) -; (dummy-51 () none 51) -; (dummy-52 () none 52) -; (dummy-53 () none 53) -; (dummy-54 () none 54) -; (dummy-55 () none 55) -; (dummy-56 () none 56) -; (dummy-57 () none 57) -; (dummy-58 () none 58) -; (dummy-59 () none 59) -; (dummy-60 () none 60) -; (dummy-61 () none 61) -; (dummy-62 () none 62) -; (dummy-63 () none 63) -; (dummy-64 () none 64) -; (dummy-65 () none 65) -; (dummy-66 () none 66) -; (dummy-67 () none 67) -; (dummy-68 () none 68) -; (dummy-69 () none 69) -; (dummy-70 () none 70) -; (dummy-71 () none 71) -; (dummy-72 () none 72) -; (dummy-73 () none 73) -; (dummy-74 () none 74) -; (dummy-75 () none 75) -; ) -; ) +(deftype sharkey (nav-enemy) + ((dir vector :inline :offset-assert 400) + (spawn-point vector :inline :offset-assert 416) + (scale float :offset-assert 432) + (anim-speed float :offset-assert 436) + (y-max float :offset-assert 440) ; meters + (y-min float :offset-assert 444) ; meters + (attack-time float :offset-assert 448) + (player-water-time uint64 :offset-assert 456) + (player-in-water symbol :offset-assert 464) + (last-y float :offset-assert 468) + (spawn-distance float :offset-assert 472) ; meters + (chase-speed float :offset-assert 476) ; meters + (y-speed float :offset-assert 480) ; meters + (sound-id sound-id :offset-assert 484) + (enable-patrol symbol :offset-assert 488) + ) + :method-count-assert 76 + :heap-base #x180 + :size-assert #x1ec + :flag-assert #x4c018001ec + ) ;; - Functions @@ -23946,34 +23881,24 @@ ;; - Types -; (deftype lurkerworm (process-drawable) -; ((twister basic :offset-assert 176) -; (head-tilt float :offset-assert 180) -; (strike-count int32 :offset-assert 184) -; (angle float :offset-assert 188) -; (vulnerable basic :offset-assert 192) -; (part2 basic :offset-assert 196) -; ) -; :method-count-assert 22 -; :size-assert #xc8 -; :flag-assert #x16006000c8 -; ;; inherited inspect of process-drawable -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; ) -; ) +(deftype lurkerworm (process-drawable) + ((twister basic :offset-assert 176) + (head-tilt float :offset-assert 180) + (strike-count int32 :offset-assert 184) + (angle float :offset-assert 188) + (vulnerable basic :offset-assert 192) + (part2 basic :offset-assert 196) + ) + :method-count-assert 22 + :heap-base #x60 + :size-assert #xc8 + :flag-assert #x16006000c8 + ;; inherited inspect of process-drawable + (:methods + (dummy-20 () none 20) + (dummy-21 () none 21) + ) + ) ;; - Functions @@ -24002,83 +23927,14 @@ ;; - Types -; (deftype lurkercrab (nav-enemy) -; ((orient basic :offset-assert 400) -; ) -; :method-count-assert 76 -; :size-assert #x194 -; :flag-assert #x4c01300194 -; ;; inherited inspect of nav-enemy -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; (dummy-22 () none 22) -; (dummy-23 () none 23) -; (dummy-24 () none 24) -; (dummy-25 () none 25) -; (dummy-26 () none 26) -; (dummy-27 () none 27) -; (dummy-28 () none 28) -; (dummy-29 () none 29) -; (dummy-30 () none 30) -; (dummy-31 () none 31) -; (dummy-32 () none 32) -; (dummy-33 () none 33) -; (dummy-34 () none 34) -; (dummy-35 () none 35) -; (dummy-36 () none 36) -; (dummy-37 () none 37) -; (dummy-38 () none 38) -; (dummy-39 () none 39) -; (dummy-40 () none 40) -; (dummy-41 () none 41) -; (dummy-42 () none 42) -; (dummy-43 () none 43) -; (dummy-44 () none 44) -; (dummy-45 () none 45) -; (dummy-46 () none 46) -; (dummy-47 () none 47) -; (dummy-48 () none 48) -; (dummy-49 () none 49) -; (dummy-50 () none 50) -; (dummy-51 () none 51) -; (dummy-52 () none 52) -; (dummy-53 () none 53) -; (dummy-54 () none 54) -; (dummy-55 () none 55) -; (dummy-56 () none 56) -; (dummy-57 () none 57) -; (dummy-58 () none 58) -; (dummy-59 () none 59) -; (dummy-60 () none 60) -; (dummy-61 () none 61) -; (dummy-62 () none 62) -; (dummy-63 () none 63) -; (dummy-64 () none 64) -; (dummy-65 () none 65) -; (dummy-66 () none 66) -; (dummy-67 () none 67) -; (dummy-68 () none 68) -; (dummy-69 () none 69) -; (dummy-70 () none 70) -; (dummy-71 () none 71) -; (dummy-72 () none 72) -; (dummy-73 () none 73) -; (dummy-74 () none 74) -; (dummy-75 () none 75) -; ) -; ) +(deftype lurkercrab (nav-enemy) + ((orient basic :offset-assert 400) + ) + :method-count-assert 76 + :heap-base #x130 + :size-assert #x194 + :flag-assert #x4c01300194 + ) ;; - Functions @@ -24100,82 +23956,13 @@ ;; - Types -; (deftype lurkerpuppy (nav-enemy) -; () -; :method-count-assert 76 -; :size-assert #x190 -; :flag-assert #x4c01200190 -; ;; not enough basic ops -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; (dummy-22 () none 22) -; (dummy-23 () none 23) -; (dummy-24 () none 24) -; (dummy-25 () none 25) -; (dummy-26 () none 26) -; (dummy-27 () none 27) -; (dummy-28 () none 28) -; (dummy-29 () none 29) -; (dummy-30 () none 30) -; (dummy-31 () none 31) -; (dummy-32 () none 32) -; (dummy-33 () none 33) -; (dummy-34 () none 34) -; (dummy-35 () none 35) -; (dummy-36 () none 36) -; (dummy-37 () none 37) -; (dummy-38 () none 38) -; (dummy-39 () none 39) -; (dummy-40 () none 40) -; (dummy-41 () none 41) -; (dummy-42 () none 42) -; (dummy-43 () none 43) -; (dummy-44 () none 44) -; (dummy-45 () none 45) -; (dummy-46 () none 46) -; (dummy-47 () none 47) -; (dummy-48 () none 48) -; (dummy-49 () none 49) -; (dummy-50 () none 50) -; (dummy-51 () none 51) -; (dummy-52 () none 52) -; (dummy-53 () none 53) -; (dummy-54 () none 54) -; (dummy-55 () none 55) -; (dummy-56 () none 56) -; (dummy-57 () none 57) -; (dummy-58 () none 58) -; (dummy-59 () none 59) -; (dummy-60 () none 60) -; (dummy-61 () none 61) -; (dummy-62 () none 62) -; (dummy-63 () none 63) -; (dummy-64 () none 64) -; (dummy-65 () none 65) -; (dummy-66 () none 66) -; (dummy-67 () none 67) -; (dummy-68 () none 68) -; (dummy-69 () none 69) -; (dummy-70 () none 70) -; (dummy-71 () none 71) -; (dummy-72 () none 72) -; (dummy-73 () none 73) -; (dummy-74 () none 74) -; (dummy-75 () none 75) -; ) -; ) +(deftype lurkerpuppy (nav-enemy) + () + :method-count-assert 76 + :heap-base #x120 + :size-assert #x190 + :flag-assert #x4c01200190 + ) ;; - Unknowns diff --git a/decompiler/config/jak1_ntsc_black_label.jsonc b/decompiler/config/jak1_ntsc_black_label.jsonc index a421fab0a9..ae49fc34d1 100644 --- a/decompiler/config/jak1_ntsc_black_label.jsonc +++ b/decompiler/config/jak1_ntsc_black_label.jsonc @@ -3,7 +3,7 @@ // if you want to filter to only some object names. // it will make the decompiler much faster. - "allowed_objects": ["crates"], + "allowed_objects": ["nav-enemy"], //////////////////////////// // CODE ANALYSIS OPTIONS diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 6a8048bbe5..2b618dabbe 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -1154,5 +1154,9 @@ [6, "a3", "symbol"] ], + "(method 42 nav-enemy)": [ + [[5, 9], "t9", "(function object object)"] + ], + "placeholder-do-not-add-below": [] } From 48ec6f8ffbbb1b16023c51372cc59b4bab863e8b Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Tue, 13 Jul 2021 00:20:57 -0400 Subject: [PATCH 03/12] decomp: vast majority of `nav-enemy` done --- decompiler/config/all-types.gc | 276 ++++++--------- .../anonymous_function_types.jsonc | 46 +++ .../jak1_ntsc_black_label/label_types.jsonc | 32 ++ .../stack_structures.jsonc | 81 +++++ .../jak1_ntsc_black_label/type_casts.jsonc | 324 ++++++++++++++++++ 5 files changed, 590 insertions(+), 169 deletions(-) diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index ea28db3285..f39c674719 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -620,8 +620,15 @@ :bitfield #t :type uint32 (display-marks 0) + (bit0 0) ;; TODO - nav-enemy::45 + (bit3 3) ;; TODO - nav-enemy::45 + (bit5 5) ;; TODO - nav-enemy::45 + (bit6 6) ;; TODO - nav-enemy::45 + (bit7 7) ;; TODO - nav-enemy::45 (bit8 8) + (bit10 10) ;; TODO - nav-enemy::nav-enemy-patrol-post (bit13 13) + (bit19 19) ;; TODO - nav-enemy::lambda::17 ) (defenum task-status @@ -9689,7 +9696,7 @@ (:methods (new (symbol type process) _type_ :behavior process-drawable 0) (dummy-9 () none 9) - (dummy-10 () none 10) + (dummy-10 (_type_ int vector int float) none 10) (dummy-11 () none 11) (dummy-12 () none 12) (dummy-13 () none 13) @@ -10718,30 +10725,11 @@ :flag-assert #x1c0000004c (:methods (new (symbol type basic uint) _type_ 0) - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 () none 16) - (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) - (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) ) ) (deftype collide-shape-prim-mesh (collide-shape-prim) - ((mesh basic :offset-assert 72) + ((mesh collide-mesh :offset-assert 72) (mesh-id int32 :offset-assert 76) (mesh-cache-id uint64 :offset-assert 80) (mesh-cache-tris uint32 :offset-assert 88) @@ -10751,25 +10739,6 @@ :flag-assert #x1d0000005c (:methods (new (symbol type basic uint uint) _type_ 0) - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 () none 16) - (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) - (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) (dummy-28 () none 28) ) ) @@ -10784,25 +10753,6 @@ :flag-assert #x1e00000054 (:methods (new (symbol type basic uint int) _type_ 0) - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 () none 16) - (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) - (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) (dummy-28 () none 28) (dummy-29 () none 29) ) @@ -10970,8 +10920,8 @@ ;; - Types (deftype touching-prim (structure) - ((cprim basic :offset-assert 0) - (has-tri? basic :offset-assert 4) + ((cprim collide-shape-prim :offset-assert 0) ;; a big guess, there's a few that meet this name + (has-tri? symbol :offset-assert 4) (tri collide-tri-result :inline :offset-assert 16) ) :method-count-assert 9 @@ -10982,7 +10932,7 @@ (deftype touching-prims-entry (structure) ((next touching-prims-entry :offset-assert 0) (prev touching-prims-entry :offset-assert 4) - (allocated? basic :offset-assert 8) + (allocated? symbol :offset-assert 8) (u float :offset-assert 12) (prim1 touching-prim :inline :offset-assert 16) (prim2 touching-prim :inline :offset-assert 128) @@ -11015,8 +10965,8 @@ ) (deftype touching-shapes-entry (structure) - ((cshape1 basic :offset-assert 0) - (cshape2 basic :offset-assert 4) + ((cshape1 collide-shape :offset-assert 0) + (cshape2 collide-shape :offset-assert 4) (resolve-u int8 :offset-assert 8) (head touching-prims-entry :offset-assert 12) ) @@ -11028,7 +10978,7 @@ (dummy-9 () none 9) (dummy-10 () none 10) (dummy-11 () none 11) - (dummy-12 () none 12) + (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one! (dummy-13 () none 13) (dummy-14 () none 14) (dummy-15 () none 15) @@ -14393,7 +14343,7 @@ (dummy-13 () none 13) (dummy-14 () none 14) (set-target-pos! (_type_ vector) none 15) - (dummy-16 () none 16) + (dummy-16 (_type_ vector) symbol 16) ; see - nav-enemy-test-point-in-nav-mesh? (dummy-17 () none 17) (dummy-18 () none 18) (dummy-19 () none 19) @@ -14402,7 +14352,7 @@ (dummy-22 () none 22) (dummy-23 () none 23) (dummy-24 () none 24) - (dummy-25 () none 25) + (dummy-25 (_type_ vector float) symbol 25) ; see - nav-enemy-test-point-near-nav-mesh? (dummy-26 () none 26) (dummy-27 () none 27) (dummy-28 () none 28) @@ -21896,6 +21846,7 @@ (deftype nav-enemy (process-drawable) ((collide-info collide-shape-moving :score 100 :offset 112) + (enemy-info fact-info-enemy :score 100 :offset 144) (hit-from-dir vector :inline :offset-assert 176) (event-param-point vector :inline :offset-assert 192) (frustration-point vector :inline :offset-assert 208) @@ -21910,7 +21861,7 @@ (turn-time uint64 :offset-assert 312) (frustration-time uint64 :offset-assert 320) (speed-scale float :offset-assert 328) - (neck basic :offset-assert 332) ; WHAT IS THIS (look at mother-spider / pelican) + (neck joint-mod :offset-assert 332) ; this is what `neck` is on the pelican (reaction-time uint64 :offset-assert 336) (notice-time uint64 :offset-assert 344) (state-timeout uint64 :offset-assert 352) @@ -21944,20 +21895,20 @@ (dummy-34 (_type_) none 34) (dummy-35 (_type_) none 35) (dummy-36 (_type_) none 36) - (dummy-37 (_type_) none 37) - (dummy-38 (_type_) none 38) - (dummy-39 (_type_) none 39) ;; TODO - what the hell is neck + (TODO-RENAME-37 (_type_) none 37) + (TODO-RENAME-38 (_type_) none 38) + (TODO-RENAME-39 (_type_) none 39) (dummy-40 (_type_) none 40) (dummy-41 (_type_) none 41) (TODO-RENAME-42 (_type_) int 42) - (dummy-43 (_type_) none 43) - (dummy-44 (_type_) none 44) - (dummy-45 (_type_) none 45) - (dummy-46 (_type_) none 46) - (dummy-47 (_type_) none 47) - (dummy-48 (_type_) none 48) - (dummy-49 (_type_) none 49) - (dummy-50 (_type_) none 50) + (dummy-43 (_type_ process) none 43) + (dummy-44 (_type_ process) none 44) + (TODO-RENAME-45 (_type_ nav-enemy-info) none 45) + (TODO-RENAME-46 (_type_ float) basic 46) + (TODO-RENAME-47 (_type_) none 47) ;; - Stubbed + (TODO-RENAME-48 (_type_) none 48) ;; - Stubbed + (TODO-RENAME-49 (_type_ nav-enemy-info) float 49) + (TODO-RENAME-50 (_type_ vector) symbol 50) (dummy-51 (_type_) none 51) (dummy-52 (_type_) none 52) (dummy-53 (_type_) none 53) @@ -21966,7 +21917,7 @@ (dummy-56 (_type_) none 56) (dummy-57 (_type_) none 57) (dummy-58 (_type_) none 58) - (dummy-59 (_type_) none 59) + (TODO-RENAME-59 (_type_) none 59) (dummy-60 (_type_) none 60) (dummy-61 (_type_) none 61) (dummy-62 (_type_) none 62) @@ -21974,13 +21925,13 @@ (dummy-64 (_type_) none 64) (dummy-65 (_type_) none 65) (dummy-66 (_type_) none 66) - (dummy-67 (_type_) none 67) + (dummy-67 (_type_) symbol 67) (dummy-68 (_type_) none 68) (dummy-69 (_type_) none 69) (dummy-70 (_type_) none 70) (dummy-71 (_type_) none 71) - (dummy-72 (_type_) none 72) - (dummy-73 (_type_) none 73) + (dummy-72 (_type_ process) none 72) ;; TODO - args unknown, 3rd arg contains a touching-shapes-entry offset 16/20 + (TODO-RENAME-73 (_type_ process) symbol 73) (dummy-74 (_type_) none 74) (dummy-75 (_type_) none 75) ) @@ -21996,56 +21947,56 @@ ;; - Functions (define-extern nav-enemy-rnd-int-range (function int int int)) -(define-extern nav-enemy-initialize-jump function) -(define-extern nav-enemy-neck-control-look-at function) -(define-extern nav-enemy-facing-point? function) -(define-extern nav-enemy-turn-to-face-point function) -(define-extern nav-enemy-execute-jump function) -(define-extern nav-enemy-jump-land-anim function) -(define-extern nav-enemy-rnd-float-range (function float float float)) -(define-extern nav-enemy-common-post function) -(define-extern nav-enemy-execute-custom-jump function) -(define-extern nav-enemy-initialize-custom-jump function) -(define-extern nav-enemy-simple-post function) -(define-extern nav-enemy-fall-and-play-death-anim function) -(define-extern nav-enemy-neck-control-inactive function) -(define-extern nav-enemy-frustrated? function) -(define-extern nav-enemy-player-at-frustration-point? function) -(define-extern nav-enemy-reset-frustration function) +(define-extern nav-enemy-initialize-jump (function vector none :behavior nav-enemy)) +(define-extern nav-enemy-neck-control-look-at (function none :behavior nav-enemy)) +(define-extern nav-enemy-facing-point? (function vector float symbol :behavior nav-enemy)) +(define-extern nav-enemy-turn-to-face-point (function vector float none :behavior nav-enemy)) +(define-extern nav-enemy-execute-jump (function none :behavior nav-enemy)) +(define-extern nav-enemy-jump-land-anim (function none :behavior nav-enemy)) ;; TODO +(define-extern nav-enemy-rnd-float-range (function float float float :behavior nav-enemy)) +(define-extern nav-enemy-common-post (function none)) ;; TODO not confirmed +(define-extern nav-enemy-execute-custom-jump (function int float float none :behavior nav-enemy)) +(define-extern nav-enemy-initialize-custom-jump (function vector symbol float float float none :behavior nav-enemy)) +(define-extern nav-enemy-simple-post (function none)) ;; TODO not confirmed +(define-extern nav-enemy-fall-and-play-death-anim (function art-joint-anim int float none)) ;; second arg is whatever is passed to align-control::11 +(define-extern nav-enemy-neck-control-inactive (function none :behavior nav-enemy)) +(define-extern nav-enemy-frustrated? (function symbol :behavior nav-enemy)) +(define-extern nav-enemy-player-at-frustration-point? (function symbol :behavior nav-enemy)) +(define-extern nav-enemy-reset-frustration (function none :behavior nav-enemy)) (define-extern nav-enemy-rnd-go-idle? (function float symbol)) -(define-extern nav-enemy-notice-player? function) -(define-extern nav-enemy-turn-to-face-dir function) -(define-extern nav-enemy-facing-direction? function) -(define-extern nav-enemy-test-point-near-nav-mesh? function) -(define-extern nav-enemy-travel-post function) -(define-extern nav-enemy-get-new-patrol-point function) -(define-extern nav-enemy-set-hit-from-direction function) -(define-extern nav-enemy-send-attack function) +(define-extern nav-enemy-notice-player? (function symbol :behavior nav-enemy)) +(define-extern nav-enemy-turn-to-face-dir (function vector float none :behavior nav-enemy)) +(define-extern nav-enemy-facing-direction? (function vector float symbol)) +(define-extern nav-enemy-test-point-near-nav-mesh? (function vector symbol :behavior nav-enemy)) +(define-extern nav-enemy-travel-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-get-new-patrol-point (function int :behavior nav-enemy)) +(define-extern nav-enemy-set-hit-from-direction (function process none :behavior nav-enemy)) +(define-extern nav-enemy-send-attack (function process touching-shapes-entry symbol symbol :behavior nav-enemy)) (define-extern nav-enemy-rnd-int-count (function int int)) (define-extern nav-enemy-rnd-float (function float)) (define-extern nav-enemy-rnd-percent? (function float symbol)) -(define-extern nav-enemy-default-event-handler function) -(define-extern nav-enemy-jump-event-handler function) -(define-extern process-drawable-death-event-handler function) -(define-extern nav-enemy-patrol-post function) -(define-extern nav-enemy-chase-post function) -(define-extern nav-enemy-flee-post function) -(define-extern nav-enemy-face-player-post function) -(define-extern nav-enemy-falling-post function) -(define-extern nav-enemy-death-post function) -(define-extern nav-enemy-player-vulnerable? function) -(define-extern nav-enemy-facing-player? function) -(define-extern nav-enemy-test-nav-mesh-intersection-xz? function) -(define-extern nav-enemy-test-point-in-nav-mesh? function) -(define-extern nav-enemy-set-base-collide-sphere-collide-with function) -(define-extern ja-group-index? function) -(define-extern nav-enemy-jump-post function) -(define-extern nav-enemy-jump-land-post function) -(define-extern nav-enemy-init-by-other function) +(define-extern nav-enemy-default-event-handler (function process int symbol vector none :behavior nav-enemy)) ;; TODO - last arg is definitely a vector...but also not? +(define-extern nav-enemy-jump-event-handler (function process int symbol vector none :behavior nav-enemy)) +(define-extern process-drawable-death-event-handler (function process int symbol none :behavior process-drawable)) ;; First two args are unused +(define-extern nav-enemy-patrol-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-chase-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-flee-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-face-player-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-falling-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-death-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-player-vulnerable? (function symbol)) +(define-extern nav-enemy-facing-player? (function float symbol)) +(define-extern nav-enemy-test-nav-mesh-intersection-xz? (function vector symbol :behavior nav-enemy)) ;; TODO - vector is a guess, check nav-control::16 +(define-extern nav-enemy-test-point-in-nav-mesh? (function vector symbol :behavior nav-enemy)) ;; TODO - vector is a guess, check nav-control::16 +(define-extern nav-enemy-set-base-collide-sphere-collide-with (function uint none)) ;; unused +(define-extern ja-group-index? (function int symbol :behavior nav-enemy)) +(define-extern nav-enemy-jump-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-jump-land-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-init-by-other (function nav-enemy vector vector nav-enemy :behavior nav-enemy)) ;; - Unknowns -;;(define-extern *nav-enemy-dummy-shadow-control* object) ;; unknown type +(define-extern *nav-enemy-dummy-shadow-control* shadow-control) ;; unknown type ;; ---------------------- @@ -23807,49 +23758,36 @@ ; :flag-assert #x900000050 ; ) -; (deftype pelican (process-drawable) -; ((query gui-query :inline :offset-assert 176) -; (fuel-cell uint64 :offset-assert 208) -; (cam-tracker uint64 :offset-assert 216) -; (path-data UNKNOWN 8 :offset-assert 224) -; (path-circle basic :offset-assert 224) -; (path-dive0 basic :offset-assert 228) -; (path-to-nest0 basic :offset-assert 232) -; (path-from-nest0 basic :offset-assert 236) -; (path-spit0 basic :offset-assert 240) -; (path-dive1 basic :offset-assert 244) -; (path-to-nest1 basic :offset-assert 248) -; (path-to-nest2 basic :offset-assert 252) -; (path-cache basic :offset-assert 256) -; (time-cache uint64 :offset-assert 264) -; (path-pos float :offset-assert 272) -; (path-speed float :offset-assert 276) -; (path-max float :offset-assert 280) -; (path-vector vector :inline :offset-assert 288) -; (state-vector vector :inline :offset-assert 304) -; (state-vector1 vector :inline :offset-assert 320) -; (state-float UNKNOWN 2 :offset-assert 336) -; (state-object basic :offset-assert 344) -; (neck basic :offset-assert 348) -; ) -; :method-count-assert 20 -; :size-assert #x160 -; :flag-assert #x1400f00160 -; ;; inherited inspect of process-drawablefield ~Tstate-object is a basic loaded with a signed load -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; ) -; ) +(deftype pelican (process-drawable) + ((query gui-query :inline :offset-assert 176) + (fuel-cell uint64 :offset-assert 208) + (cam-tracker uint64 :offset-assert 216) + (path-data curve-control 8 :offset-assert 224) + (path-circle curve-control :offset 224) + (path-dive0 curve-control :offset 228) + (path-to-nest0 curve-control :offset 232) + (path-from-nest0 curve-control :offset 236) + (path-spit0 curve-control :offset 240) + (path-dive1 curve-control :offset 244) + (path-to-nest1 curve-control :offset 248) + (path-to-nest2 curve-control :offset 252) + (path-cache basic :offset-assert 256) + (time-cache uint64 :offset-assert 264) + (path-pos float :offset-assert 272) + (path-speed float :offset-assert 276) + (path-max float :offset-assert 280) + (path-vector vector :inline :offset-assert 288) + (state-vector vector :inline :offset-assert 304) + (state-vector1 vector :inline :offset-assert 320) + (state-float float 2 :offset-assert 336) + (state-object basic :offset-assert 344) + (neck joint-mod :offset-assert 348) + ) + :method-count-assert 20 + :heap-base #xf0 + :size-assert #x160 + :flag-assert #x1400f00160 + ) ;; - Functions diff --git a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc index 1d9207344e..095f7b819b 100644 --- a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc @@ -573,5 +573,51 @@ [2, "(function process symbol)"] ], + "nav-enemy": [ + [8, "(function none)"], // TODO - NECK! + [9, "(function none)"], // stubbed + [10, "(function uint :behavior nav-enemy)"], + [11, "(function object :behavior nav-enemy)"], + [12, "(function none :behavior nav-enemy)"], + [13, "(function object :behavior nav-enemy)"], + [14, "(function uint :behavior nav-enemy)"], + [15, "(function object :behavior nav-enemy)"], + [16, "(function object :behavior nav-enemy)"], + [17, "(function vector :behavior nav-enemy)"], + [19, "(function object :behavior nav-enemy)"], + [20, "(function uint :behavior nav-enemy)"], + [21, "(function none :behavior nav-enemy)"], + [29, "(function symbol :behavior nav-enemy)"], + [30, "(function object :behavior nav-enemy)"], + [31, "(function object :behavior nav-enemy)"], // TODO - art-element confusion + [32, "(function vector :behavior nav-enemy)"], + [33, "(function object :behavior nav-enemy)"], + [34, "(function object :behavior nav-enemy)"], + [35, "(function object :behavior nav-enemy)"], + [36, "(function uint :behavior nav-enemy)"], + [37, "(function object :behavior nav-enemy)"], + [38, "(function object :behavior nav-enemy)"], + [39, "(function uint :behavior nav-enemy)"], + [40, "(function vector :behavior nav-enemy)"], + [41, "(function none :behavior nav-enemy)"], + [42, "(function object :behavior nav-enemy)"], + [43, "(function uint :behavior nav-enemy)"], + [44, "(function none :behavior nav-enemy)"], + [45, "(function object :behavior nav-enemy)"], + [46, "(function object :behavior nav-enemy)"], // TODO - neck! + [50, "(function object :behavior nav-enemy)"], // TODO - art element + [51, "(function object :behavior nav-enemy)"], + [52, "(function uint :behavior nav-enemy)"], + [54, "(function uint :behavior nav-enemy)"], // TODO - art element + [55, "(function uint :behavior nav-enemy)"], // TODO - art element + [56, "(function uint :behavior nav-enemy)"], // TODO - art element + [57, "(function object :behavior nav-enemy)"], + [58, "(function uint :behavior nav-enemy)"], + [59, "(function uint :behavior nav-enemy)"], + [60, "(function none :behavior nav-enemy)"], + [61, "(function object :behavior nav-enemy)"], + [62, "(function int :behavior nav-enemy)"] + ], + "placeholder-do-not-add-below": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index b9f31659f1..edcf3c5afe 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -1174,6 +1174,38 @@ ["L79", "rgba", true] ], + "nav-enemy": [ + ["L353", "float", true], + ["L354", "float", true], + ["L356", "float", true], + ["L357", "float", true], + ["L358", "float", true], + ["L360", "float", true], + ["L361", "float", true], + ["L362", "float", true], + ["L365", "float", true], + ["L367", "float", true], + ["L369", "float", true], + ["L370", "float", true], + ["L371", "float", true], + ["L372", "float", true], + ["L373", "float", true], + ["L374", "float", true], + ["L375", "float", true], + ["L376", "float", true], + ["L377", "float", true], + ["L379", "float", true], + ["L380", "float", true], + ["L381", "float", true], + ["L382", "float", true], + ["L383", "float", true], + ["L385", "float", true], + ["L386", "float", true], + ["L387", "float", true], + ["L391", "float", true], + ["L389", "float", true] + ], + // please do not add things after this entry! git is dumb. "object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc index 82a5c0ad26..ccc492f120 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -540,5 +540,86 @@ [64, "vector"] ], + "(method 50 nav-enemy)": [ + [16, "vector"] + ], + + "nav-enemy-init-by-other": [ + [16, "vector"] + ], + + "nav-enemy-turn-to-face-point": [ + [16, "vector"] + ], + + "nav-enemy-facing-point?": [ + [16, "vector"] + ], + + "nav-enemy-jump-post": [ + [16, "vector"] + ], + + "(method 41 nav-enemy)": [ + [16, "vector"], + [32, "vector"] + ], + + "nav-enemy-falling-post": [ + [16, "vector"] // TODO - check collide-shape-moving::62(type, vector, float) + ], + + "nav-enemy-death-post": [ + [16, "vector"] // TODO - check collide-shape-moving::62(type, vector, float) + ], + + "nav-enemy-jump-land-post": [ + [16, "vector"], + [32, "vector"] + ], + + "nav-enemy-facing-direction?": [ + [16, "vector"], + [32, "vector"] + ], + + "nav-enemy-initialize-custom-jump": [ + [16, "vector"], + [32, "vector"] + ], + + "nav-enemy-flee-post": [ + [16, "vector"], + [32, "vector"] + ], + + "(anon-function 17 nav-enemy)": [ + [16, "vector"] + ], + "(anon-function 29 nav-enemy)": [ + [16, "event-message-block"] + ], + "(anon-function 30 nav-enemy)": [ + [16, "event-message-block"] + ], + "(anon-function 51 nav-enemy)": [ + [16, "event-message-block"] + ], + "(anon-function 57 nav-enemy)": [ + [16, "event-message-block"] + ], + + "(method 73 nav-enemy)": [ + [16, "event-message-block"] + ], + + "(method 43 nav-enemy)": [ + [16, "event-message-block"] + ], + + "nav-enemy-send-attack": [ + [16, "event-message-block"] + ], + "placeholder-do-not-add-below!": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 2b618dabbe..a7b8aafedf 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -1158,5 +1158,329 @@ [[5, 9], "t9", "(function object object)"] ], + "nav-enemy-test-point-near-nav-mesh?": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-get-new-patrol-point": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-set-base-collide-sphere-collide-with": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-turn-to-face-dir": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-facing-direction?": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-facing-point?": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-test-nav-mesh-intersection-xz?": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-test-point-in-nav-mesh?": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-turn-to-face-point": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "ja-group-index?": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-reset-frustration": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-player-at-frustration-point?": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-frustrated?": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-jump-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-initialize-custom-jump": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-initialize-jump": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-execute-custom-jump": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-execute-jump": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-jump-land-anim": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-jump-land-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-travel-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-patrol-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-falling-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-death-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-chase-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-flee-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-face-player-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-notice-player?": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "(anon-function 8 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[42, 46], "t9", "(function object)"] + ], + "(anon-function 10 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 12 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 14 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 17 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 20 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 30 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 31 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 32 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 36 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 39 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 40 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 41 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 51 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[39, 43], "t9", "(function object)"] + ], + "(anon-function 54 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 55 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[9, 13], "t9", "(function object)"] + ], + "(anon-function 56 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 58 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 59 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 60 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 61 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[35, 39], "t9", "(function object)"] + ], + "(anon-function 57 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[47, 51], "t9", "(function object)"], + [[89, 93], "t9", "(function object)"], + [[98, 102], "t9", "(function object)"] + ], + "(anon-function 42 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[10, 14], "t9", "(function object)"], + [[31, 35], "t9", "(function object)"], + [[67, 71], "t9", "(function object)"] + ], + "(anon-function 43 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[33, 37], "t9", "(function object)"] + ], + "(anon-function 44 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 46 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 50 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 45 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[5, 9], "t9", "(function object)"], + [[14, 18], "t9", "(function object)"], + [[75, 79], "t9", "(function object)"], + [[91, 95], "t9", "(function object)"] + ], + "(anon-function 37 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[1, 5], "t9", "(function object)"] + ], + "(anon-function 38 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[10, 14], "t9", "(function object)"], + [[38, 42], "t9", "(function object)"], + [[94, 98], "t9", "(function object)"], + [[124, 128], "t9", "(function object)"] + ], + "(anon-function 33 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[1, 5], "t9", "(function object)"] + ], + "(anon-function 34 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[1, 5], "t9", "(function object)"] + ], + "(anon-function 35 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[15, 20], "t9", "(function object)"] + ], + "(anon-function 29 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[36, 40], "t9", "(function object)"] + ], + "(anon-function 62 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"] + ], + "(anon-function 21 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[15, 19], "t9", "(function object)"] + ], + "(anon-function 19 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[19, 23], "t9", "(function object)"] + ], + "(anon-function 16 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[15, 19], "t9", "(function object object)"] + ], + "(anon-function 15 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[3, 6], "t9", "(function object)"] + ], + "(anon-function 13 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[6, 9], "t9", "(function object object)"] + ], + "(anon-function 11 nav-enemy)": [ + [[0, 999], "s6", "nav-enemy"], + [[80, 84], "t9", "(function object object object object)"] + ], + + "nav-enemy-init-by-other": [ + [[0, 999], "s6", "nav-enemy"], + [[54, 58], "t9", "(function object object object object)"] + ], + + "nav-enemy-set-hit-from-direction": [ + [[0, 999], "s6", "nav-enemy"], + [19, "v1", "process-drawable"] + ], + + "(method 59 nav-enemy)": [ + [[1, 5], "t9", "(function object object)"] + ], + + "(method 73 nav-enemy)": [ + [[19, 23], "t9", "(function object object)"] + ], + + "(method 43 nav-enemy)": [ + [[22, 26], "t9", "(function object object)"] + ], + + "nav-enemy-send-attack": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-default-event-handler": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-jump-event-handler": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-common-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-simple-post": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-neck-control-look-at": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-neck-control-inactive": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "nav-enemy-fall-and-play-death-anim": [ + [[0, 999], "s6", "nav-enemy"] + ], + + "process-drawable-death-event-handler": [ + [[0, 999], "s6", "process-drawable"] + ], + "placeholder-do-not-add-below": [] } From fe618235d149ce48e73dd9b19b6e0cd6181b6167 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Tue, 13 Jul 2021 22:45:58 -0400 Subject: [PATCH 04/12] most of `nav-enemy` completed --- decompiler/config/all-types.gc | 16 ++++----- .../anonymous_function_types.jsonc | 10 +++--- .../jak1_ntsc_black_label/label_types.jsonc | 1 + .../jak1_ntsc_black_label/type_casts.jsonc | 33 +++++++++++++++---- 4 files changed, 40 insertions(+), 20 deletions(-) diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index f39c674719..cf80166879 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -1158,7 +1158,7 @@ (trans (function object) :offset-assert 20) (post function :offset-assert 24) (enter (function object object object object object object object) :offset-assert 28) - (event (function basic int basic event-message-block object) :offset-assert 32) + (event (function process int symbol event-message-block object) :offset-assert 32) ) (:methods (new (symbol type basic function @@ -21901,8 +21901,8 @@ (dummy-40 (_type_) none 40) (dummy-41 (_type_) none 41) (TODO-RENAME-42 (_type_) int 42) - (dummy-43 (_type_ process) none 43) - (dummy-44 (_type_ process) none 44) + (dummy-43 (_type_ process event-message-block) object 43) + (dummy-44 (_type_ process event-message-block) object 44) (TODO-RENAME-45 (_type_ nav-enemy-info) none 45) (TODO-RENAME-46 (_type_ float) basic 46) (TODO-RENAME-47 (_type_) none 47) ;; - Stubbed @@ -21930,7 +21930,7 @@ (dummy-69 (_type_) none 69) (dummy-70 (_type_) none 70) (dummy-71 (_type_) none 71) - (dummy-72 (_type_ process) none 72) ;; TODO - args unknown, 3rd arg contains a touching-shapes-entry offset 16/20 + (dummy-72 (_type_ process event-message-block) object 72) ;; TODO - args unknown, 3rd arg contains a touching-shapes-entry offset 16/20 (TODO-RENAME-73 (_type_ process) symbol 73) (dummy-74 (_type_) none 74) (dummy-75 (_type_) none 75) @@ -21971,13 +21971,13 @@ (define-extern nav-enemy-travel-post (function none :behavior nav-enemy)) (define-extern nav-enemy-get-new-patrol-point (function int :behavior nav-enemy)) (define-extern nav-enemy-set-hit-from-direction (function process none :behavior nav-enemy)) -(define-extern nav-enemy-send-attack (function process touching-shapes-entry symbol symbol :behavior nav-enemy)) +(define-extern nav-enemy-send-attack (function process touching-shapes-entry symbol object :behavior nav-enemy)) (define-extern nav-enemy-rnd-int-count (function int int)) (define-extern nav-enemy-rnd-float (function float)) (define-extern nav-enemy-rnd-percent? (function float symbol)) -(define-extern nav-enemy-default-event-handler (function process int symbol vector none :behavior nav-enemy)) ;; TODO - last arg is definitely a vector...but also not? -(define-extern nav-enemy-jump-event-handler (function process int symbol vector none :behavior nav-enemy)) -(define-extern process-drawable-death-event-handler (function process int symbol none :behavior process-drawable)) ;; First two args are unused +(define-extern nav-enemy-default-event-handler (function process int symbol event-message-block object :behavior nav-enemy)) ;; TODO - last arg is definitely a vector...but also not? +(define-extern nav-enemy-jump-event-handler (function process int symbol event-message-block object :behavior nav-enemy)) +(define-extern process-drawable-death-event-handler (function process int symbol event-message-block object :behavior process-drawable)) ;; First two args are unused (define-extern nav-enemy-patrol-post (function none :behavior nav-enemy)) (define-extern nav-enemy-chase-post (function none :behavior nav-enemy)) (define-extern nav-enemy-flee-post (function none :behavior nav-enemy)) diff --git a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc index 095f7b819b..69197caf99 100644 --- a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc @@ -604,13 +604,13 @@ [43, "(function uint :behavior nav-enemy)"], [44, "(function none :behavior nav-enemy)"], [45, "(function object :behavior nav-enemy)"], - [46, "(function object :behavior nav-enemy)"], // TODO - neck! - [50, "(function object :behavior nav-enemy)"], // TODO - art element + [46, "(function none :behavior nav-enemy)"], + [50, "(function none :behavior nav-enemy)"], [51, "(function object :behavior nav-enemy)"], [52, "(function uint :behavior nav-enemy)"], - [54, "(function uint :behavior nav-enemy)"], // TODO - art element - [55, "(function uint :behavior nav-enemy)"], // TODO - art element - [56, "(function uint :behavior nav-enemy)"], // TODO - art element + [54, "(function object :behavior nav-enemy)"], + [55, "(function uint :behavior nav-enemy)"], + [56, "(function none :behavior nav-enemy)"], [57, "(function object :behavior nav-enemy)"], [58, "(function uint :behavior nav-enemy)"], [59, "(function uint :behavior nav-enemy)"], diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index edcf3c5afe..4ea9366a5c 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -1177,6 +1177,7 @@ "nav-enemy": [ ["L353", "float", true], ["L354", "float", true], + ["L355", "float", true], ["L356", "float", true], ["L357", "float", true], ["L358", "float", true], diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index a7b8aafedf..47ed1a3135 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -1167,7 +1167,8 @@ ], "nav-enemy-set-base-collide-sphere-collide-with": [ - [[0, 999], "s6", "nav-enemy"] + [[0, 999], "s6", "nav-enemy"], + [50, "s4", "collide-shape-prim-group"] ], "nav-enemy-turn-to-face-dir": [ @@ -1231,7 +1232,8 @@ ], "nav-enemy-jump-land-anim": [ - [[0, 999], "s6", "nav-enemy"] + [[0, 999], "s6", "nav-enemy"], + [39, "v1", "art-joint-anim"] ], "nav-enemy-jump-land-post": [ @@ -1293,7 +1295,9 @@ [[0, 999], "s6", "nav-enemy"] ], "(anon-function 31 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] + [[0, 999], "s6", "nav-enemy"], + [27, "v1", "art-joint-anim"], + [[70, 74], "t9", "(function object)"] ], "(anon-function 32 nav-enemy)": [ [[0, 999], "s6", "nav-enemy"] @@ -1315,14 +1319,20 @@ [[39, 43], "t9", "(function object)"] ], "(anon-function 54 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] + [[0, 999], "s6", "nav-enemy"], + [27, "v1", "art-joint-anim"], + [[80, 84], "t9", "(function object)"] ], "(anon-function 55 nav-enemy)": [ [[0, 999], "s6", "nav-enemy"], [[9, 13], "t9", "(function object)"] ], "(anon-function 56 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] + [[0, 999], "s6", "nav-enemy"], + [23, "v1", "art-joint-anim"], + [105, "v1", "art-joint-anim"], + [167, "v1", "art-joint-anim"], + [249, "v1", "art-joint-anim"] ], "(anon-function 58 nav-enemy)": [ [[0, 999], "s6", "nav-enemy"] @@ -1360,7 +1370,9 @@ [[0, 999], "s6", "nav-enemy"] ], "(anon-function 50 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] + [[0, 999], "s6", "nav-enemy"], + [27, "v1", "art-joint-anim"], + [91, "v1", "art-joint-anim"] ], "(anon-function 45 nav-enemy)": [ [[0, 999], "s6", "nav-enemy"], @@ -1451,7 +1463,14 @@ ], "nav-enemy-default-event-handler": [ - [[0, 999], "s6", "nav-enemy"] + [[0, 999], "s6", "nav-enemy"], + [62, "a0", "vector"], + [82, "a0", "vector"], + [[49, 53], "t9", "(function object object)"], + [[70, 74], "t9", "(function object object)"], + [[92, 96], "t9", "(function object object)"], + [[100, 104], "t9", "(function object object)"], + [[108, 112], "t9", "(function object object)"] ], "nav-enemy-jump-event-handler": [ From 7878167cd94132da2a14a3b6677faa71cebc506a Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Mon, 9 Aug 2021 00:26:38 -0400 Subject: [PATCH 05/12] decomp: 1 function left - new decomp issue now ConditionalMoveFalseElement::push_to_stack --- .../config/jak1_ntsc_black_label/label_types.jsonc | 1 + .../config/jak1_ntsc_black_label/type_casts.jsonc | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index 3f0c8661d1..8f784e77d4 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -1414,6 +1414,7 @@ ], "nav-enemy": [ + ["L349", "attack-info", true], ["L353", "float", true], ["L354", "float", true], ["L355", "float", true], diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 43c203f05f..da9cb3dfc0 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -1801,6 +1801,12 @@ "nav-enemy-set-base-collide-sphere-collide-with": [ [[0, 999], "s6", "nav-enemy"], + [32, "v1", "collide-shape-prim-sphere"], + [33, "s5", "collide-shape-prim-group"], + [37, "v1", "collide-shape-prim-sphere"], + [38, "s5", "collide-shape-prim-group"], + [42, "v1", "collide-shape-prim-sphere"], + [43, "s5", "collide-shape-prim-group"], [50, "s4", "collide-shape-prim-group"] ], @@ -2134,5 +2140,11 @@ [[0, 999], "s6", "process-drawable"] ], + "(method 7 nav-enemy)": [ + [5, "v1", "int"], + [10, "v1", "int"], + [19, "t9", "(function process-drawable int none)"] + ], + "placeholder-do-not-add-below": [] } From 67fe41232946a1f3592feabc81eb86163df5b34b Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Aug 2021 22:12:23 +0000 Subject: [PATCH 06/12] Updated github pages site --- docs/gh-pages-proj/src/config/progress.json | 4 ++-- docs/index.html | 2 +- docs/js/{about.31420eeb.js => about.a4656f69.js} | 4 ++-- docs/js/{about.31420eeb.js.map => about.a4656f69.js.map} | 2 +- docs/js/{app.3bcfc435.js => app.99fa3a4f.js} | 4 ++-- docs/js/{app.3bcfc435.js.map => app.99fa3a4f.js.map} | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) rename docs/js/{about.31420eeb.js => about.a4656f69.js} (99%) rename docs/js/{about.31420eeb.js.map => about.a4656f69.js.map} (99%) rename docs/js/{app.3bcfc435.js => app.99fa3a4f.js} (97%) rename docs/js/{app.3bcfc435.js.map => app.99fa3a4f.js.map} (98%) diff --git a/docs/gh-pages-proj/src/config/progress.json b/docs/gh-pages-proj/src/config/progress.json index d003703b9c..b65a4aaa13 100644 --- a/docs/gh-pages-proj/src/config/progress.json +++ b/docs/gh-pages-proj/src/config/progress.json @@ -2,8 +2,8 @@ "jak1": { "fileProgress": { "src_files_total": 514, - "src_files_finished": 71, - "src_files_started": 174, + "src_files_finished": 73, + "src_files_started": 176, "data_files_total": 584, "data_files_started": 4 } diff --git a/docs/index.html b/docs/index.html index d719c155f3..f5b640eb59 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -OpenGOAL Tooling
\ No newline at end of file +OpenGOAL Tooling
\ No newline at end of file diff --git a/docs/js/about.31420eeb.js b/docs/js/about.a4656f69.js similarity index 99% rename from docs/js/about.31420eeb.js rename to docs/js/about.a4656f69.js index 22eb9e1100..b093113b0f 100644 --- a/docs/js/about.31420eeb.js +++ b/docs/js/about.a4656f69.js @@ -1,2 +1,2 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{"0481":function(t,e,i){"use strict";var n=i("23e7"),r=i("a2bf"),a=i("7b0b"),s=i("50c4"),o=i("a691"),c=i("65f0");n({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=a(this),i=s(e.length),n=c(e,0);return n.length=r(n,e,e,i,0,void 0===t?1:o(t)),n}})},"0bc6":function(t,e,i){},"20f6":function(t,e,i){},"25a8":function(t,e,i){},"36a7":function(t,e,i){},4804:function(t,e,i){},"4b85":function(t,e,i){},"4ec9":function(t,e,i){"use strict";var n=i("6d61"),r=i("6566");t.exports=n("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),r)},"615b":function(t,e,i){},6566:function(t,e,i){"use strict";var n=i("9bf2").f,r=i("7c73"),a=i("e2cc"),s=i("0366"),o=i("19aa"),c=i("2266"),l=i("7dd0"),u=i("2626"),h=i("83ab"),d=i("f183").fastKey,f=i("69f3"),p=f.set,v=f.getterFor;t.exports={getConstructor:function(t,e,i,l){var u=t((function(t,n){o(t,u,e),p(t,{type:e,index:r(null),first:void 0,last:void 0,size:0}),h||(t.size=0),void 0!=n&&c(n,t[l],{that:t,AS_ENTRIES:i})})),f=v(e),g=function(t,e,i){var n,r,a=f(t),s=m(t,e);return s?s.value=i:(a.last=s={index:r=d(e,!0),key:e,value:i,previous:n=a.last,next:void 0,removed:!1},a.first||(a.first=s),n&&(n.next=s),h?a.size++:t.size++,"F"!==r&&(a.index[r]=s)),t},m=function(t,e){var i,n=f(t),r=d(e);if("F"!==r)return n.index[r];for(i=n.first;i;i=i.next)if(i.key==e)return i};return a(u.prototype,{clear:function(){var t=this,e=f(t),i=e.index,n=e.first;while(n)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete i[n.index],n=n.next;e.first=e.last=void 0,h?e.size=0:t.size=0},delete:function(t){var e=this,i=f(e),n=m(e,t);if(n){var r=n.next,a=n.previous;delete i.index[n.index],n.removed=!0,a&&(a.next=r),r&&(r.previous=a),i.first==n&&(i.first=r),i.last==n&&(i.last=a),h?i.size--:e.size--}return!!n},forEach:function(t){var e,i=f(this),n=s(t,arguments.length>1?arguments[1]:void 0,3);while(e=e?e.next:i.first){n(e.value,e.key,this);while(e&&e.removed)e=e.previous}},has:function(t){return!!m(this,t)}}),a(u.prototype,i?{get:function(t){var e=m(this,t);return e&&e.value},set:function(t,e){return g(this,0===t?0:t,e)}}:{add:function(t){return g(this,t=0===t?0:t,t)}}),h&&n(u.prototype,"size",{get:function(){return f(this).size}}),u},setStrong:function(t,e,i){var n=e+" Iterator",r=v(e),a=v(n);l(t,e,(function(t,e){p(this,{type:n,target:t,state:r(t),kind:e,last:void 0})}),(function(){var t=a(this),e=t.kind,i=t.last;while(i&&i.removed)i=i.previous;return t.target&&(t.last=i=i?i.next:t.state.first)?"keys"==e?{value:i.key,done:!1}:"values"==e?{value:i.value,done:!1}:{value:[i.key,i.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),i?"entries":"values",!i,!0),u(e)}}},"6d61":function(t,e,i){"use strict";var n=i("23e7"),r=i("da84"),a=i("94ca"),s=i("6eeb"),o=i("f183"),c=i("2266"),l=i("19aa"),u=i("861d"),h=i("d039"),d=i("1c7e"),f=i("d44e"),p=i("7156");t.exports=function(t,e,i){var v=-1!==t.indexOf("Map"),g=-1!==t.indexOf("Weak"),m=v?"set":"add",b=r[t],y=b&&b.prototype,_=b,S={},x=function(t){var e=y[t];s(y,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(g&&!u(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!u(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(g&&!u(t))&&e.call(this,0===t?0:t)}:function(t,i){return e.call(this,0===t?0:t,i),this})},w=a(t,"function"!=typeof b||!(g||y.forEach&&!h((function(){(new b).entries().next()}))));if(w)_=i.getConstructor(e,t,v,m),o.enable();else if(a(t,!0)){var j=new _,O=j[m](g?{}:-0,1)!=j,k=h((function(){j.has(1)})),C=d((function(t){new b(t)})),L=!g&&h((function(){var t=new b,e=5;while(e--)t[m](e,e);return!t.has(-0)}));C||(_=e((function(e,i){l(e,_,t);var n=p(new b,e,_);return void 0!=i&&c(i,n[m],{that:n,AS_ENTRIES:v}),n})),_.prototype=y,y.constructor=_),(k||L)&&(x("delete"),x("has"),v&&x("get")),(L||O)&&x(m),g&&y.clear&&delete y.clear}return S[t]=_,n({global:!0,forced:_!=b},S),f(_,t),g||i.setStrong(_,t,v),_}},"6ece":function(t,e,i){},7435:function(t,e,i){},"7a34":function(t,e,i){},"86cc":function(t,e,i){},"87cf":function(t,e,i){t.exports=i.p+"img/logo-text-colored.5cda006b.png"},"8a79":function(t,e,i){"use strict";var n=i("23e7"),r=i("06cf").f,a=i("50c4"),s=i("577e"),o=i("5a34"),c=i("1d80"),l=i("ab13"),u=i("c430"),h="".endsWith,d=Math.min,f=l("endsWith"),p=!u&&!f&&!!function(){var t=r(String.prototype,"endsWith");return t&&!t.writable}();n({target:"String",proto:!0,forced:!p&&!f},{endsWith:function(t){var e=s(c(this));o(t);var i=arguments.length>1?arguments[1]:void 0,n=a(e.length),r=void 0===i?n:d(a(i),n),l=s(t);return h?h.call(e,l,r):e.slice(r-l.length,r)===l}})},"8d4f":function(t,e,i){},"8e4b":function(t,e,i){"use strict";i("7a34")},"8efc":function(t,e,i){},"96cf":function(t,e,i){var n=function(t){"use strict";var e,i=Object.prototype,n=i.hasOwnProperty,r="function"===typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",s=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function c(t,e,i){return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch($){c=function(t,e,i){return t[e]=i}}function l(t,e,i,n){var r=e&&e.prototype instanceof g?e:g,a=Object.create(r.prototype),s=new B(n||[]);return a._invoke=O(t,i,s),a}function u(t,e,i){try{return{type:"normal",arg:t.call(e,i)}}catch($){return{type:"throw",arg:$}}}t.wrap=l;var h="suspendedStart",d="suspendedYield",f="executing",p="completed",v={};function g(){}function m(){}function b(){}var y={};c(y,a,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(E([])));S&&S!==i&&n.call(S,a)&&(y=S);var x=b.prototype=g.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function j(t,e){function i(r,a,s,o){var c=u(t[r],t,a);if("throw"!==c.type){var l=c.arg,h=l.value;return h&&"object"===typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,s,o)}),(function(t){i("throw",t,s,o)})):e.resolve(h).then((function(t){l.value=t,s(l)}),(function(t){return i("throw",t,s,o)}))}o(c.arg)}var r;function a(t,n){function a(){return new e((function(e,r){i(t,n,e,r)}))}return r=r?r.then(a,a):a()}this._invoke=a}function O(t,e,i){var n=h;return function(r,a){if(n===f)throw new Error("Generator is already running");if(n===p){if("throw"===r)throw a;return z()}i.method=r,i.arg=a;while(1){var s=i.delegate;if(s){var o=k(s,i);if(o){if(o===v)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(n===h)throw n=p,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);n=f;var c=u(t,e,i);if("normal"===c.type){if(n=i.done?p:d,c.arg===v)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(n=p,i.method="throw",i.arg=c.arg)}}}function k(t,i){var n=t.iterator[i.method];if(n===e){if(i.delegate=null,"throw"===i.method){if(t.iterator["return"]&&(i.method="return",i.arg=e,k(t,i),"throw"===i.method))return v;i.method="throw",i.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var r=u(n,t.iterator,i.arg);if("throw"===r.type)return i.method="throw",i.arg=r.arg,i.delegate=null,v;var a=r.arg;return a?a.done?(i[t.resultName]=a.value,i.next=t.nextLoc,"return"!==i.method&&(i.method="next",i.arg=e),i.delegate=null,v):a:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,v)}function C(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function B(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function E(t){if(t){var i=t[a];if(i)return i.call(t);if("function"===typeof t.next)return t;if(!isNaN(t.length)){var r=-1,s=function i(){while(++r=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var c=n.call(s,"catchLoc"),l=n.call(s,"finallyLoc");if(c&&l){if(this.prev=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--e){var i=this.tryEntries[e];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),L(i),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var i=this.tryEntries[e];if(i.tryLoc===t){var n=i.completion;if("throw"===n.type){var r=n.arg;L(i)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,i,n){return this.delegate={iterator:E(t),resultName:i,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=n}catch(r){"object"===typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},9911:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("link")},{link:function(t){return r(this,"a","href",t)}})},a2bf:function(t,e,i){"use strict";var n=i("e8b5"),r=i("50c4"),a=i("0366"),s=function(t,e,i,o,c,l,u,h){var d,f=c,p=0,v=!!u&&a(u,h,3);while(p0&&n(d))f=s(t,e,d,r(d.length),f,l-1)-1;else{if(f>=9007199254740991)throw TypeError("Exceed the acceptable array length");t[f]=d}f++}p++}return f};t.exports=s},bb51:function(t,e,i){"use strict";i.r(e);var n=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-container",{attrs:{fluid:""}},[n("v-row",{staticClass:"bg-img",attrs:{justify:"center",align:"center"}},[n("v-col",{attrs:{cols:"12",align:"center"}},[n("v-img",{attrs:{"max-height":"150","max-width":"250",src:i("87cf")}}),n("br"),n("h4",[t._v(" Reviving the Language that Brought us the Jak & Daxter Series ")]),n("br"),n("v-row",{attrs:{justify:"center"}},[n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"#project-status",rounded:"",color:"primary"}},[n("v-icon",[t._v("mdi-calendar-check")]),t._v(" Project Status ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{rounded:"",color:"secondary",href:"#recent-updates"}},[n("v-icon",[t._v("mdi-update")]),t._v(" Recent Updates ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"/jak-project/api-docs.html",target:"_blank",rounded:"",color:"deep-purple"}},[n("v-icon",[t._v("mdi-file-document")]),t._v(" Documentation ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"https://github.com/water111/jak-project",target:"_blank",rounded:"",color:"accent"}},[n("v-icon",[t._v("mdi-git")]),t._v(" Contribute ")],1)],1)],1)],1)],1),n("v-row",[n("v-container",[n("v-row",{staticStyle:{"margin-top":"3em"},attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h1",{staticClass:"orange--text text--darken-1",attrs:{id:"project-status"}},[t._v(" Project Status ")])])],1),n("v-row",{attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h2",{staticClass:"orange--text text--lighten-3"},[t._v("Jak 1 - Black Label")])])],1),n("v-row",{attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{cols:"10"}},[n("v-subheader",[t._v("Decompilation")]),n("v-progress-linear",{attrs:{color:"green","buffer-value":"0",value:t.jak1BlackLabelStatus.srcFilesFinishedValue,stream:"",height:"25"}},[t._v(" Source Files Finished - "+t._s(t.jak1BlackLabelStatus.srcFilesFinished)+" / "+t._s(t.jak1BlackLabelStatus.srcFilesTotal)+" ")]),n("br"),n("v-progress-linear",{attrs:{color:"yellow","buffer-value":"0",value:t.jak1BlackLabelStatus.srcFilesStartedValue,stream:"",height:"25"}},[t._v(" Source Files Started - "+t._s(t.jak1BlackLabelStatus.srcFilesStarted)+" / "+t._s(t.jak1BlackLabelStatus.srcFilesTotal)+" ")]),n("br"),n("v-progress-linear",{attrs:{color:"teal","buffer-value":"0",value:t.jak1BlackLabelStatus.dataFilesStartedValue,stream:"",height:"25"}},[t._v(" Data Files Started - "+t._s(t.jak1BlackLabelStatus.dataFilesStarted)+" / "+t._s(t.jak1BlackLabelStatus.dataFilesTotal)+" ")])],1)],1),n("v-row",{staticStyle:{"margin-top":"5em"},attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h1",{staticClass:"orange--text text--darken-1",attrs:{id:"recent-updates"}},[t._v(" Recent Updates ")])])],1),n("v-row",{staticStyle:{"margin-bottom":"10em"},attrs:{justify:"center"}},t._l(t.recentPRs,(function(e,i){return n("v-col",{key:"pr"-i,attrs:{cols:"4"}},[n("v-card",[n("v-card-text",{staticStyle:{"overflow-y":"auto",height:"300px"}},[n("p",{staticClass:"text-h5 orange--text text--lighten-3"},[t._v(" "+t._s(e.title)+" ")]),n("p",[t._v(" "+t._s(e.user.login)+" ")]),n("div",{staticClass:"text--primary"},[n("pre",{staticClass:"wrapped-pre"},[t._v(t._s(e.body))])])]),n("v-card-actions",[n("v-btn",{attrs:{text:"",color:"accent",href:e.html_url,target:"_blank"}},[t._v(" View Change ")])],1)],1)],1)})),1)],1)],1)],1)},r=[];i("d3b7");function a(t,e,i,n,r,a,s){try{var o=t[a](s),c=o.value}catch(l){return void i(l)}o.done?e(c):Promise.resolve(c).then(n,r)}function s(t){return function(){var e=this,i=arguments;return new Promise((function(n,r){var s=t.apply(e,i);function o(t){a(s,n,r,o,c,"next",t)}function c(t){a(s,n,r,o,c,"throw",t)}o(void 0)}))}}i("fb6a"),i("96cf");var o=i("f5f2"),c=o,l={name:"Home",components:{},data:function(){return{recentPRs:[],jak1BlackLabelStatus:{srcFilesTotal:c.jak1.fileProgress.src_files_total,srcFilesFinished:c.jak1.fileProgress.src_files_finished,srcFilesFinishedValue:c.jak1.fileProgress.src_files_finished/c.jak1.fileProgress.src_files_total*100,srcFilesStarted:c.jak1.fileProgress.src_files_started,srcFilesStartedValue:c.jak1.fileProgress.src_files_started/c.jak1.fileProgress.src_files_total*100,dataFilesTotal:c.jak1.fileProgress.data_files_total,dataFilesStarted:c.jak1.fileProgress.data_files_started,dataFilesStartedValue:c.jak1.fileProgress.data_files_started/c.jak1.fileProgress.data_files_total*100}}},mounted:function(){var t=s(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,this.loadRecentPRs();case 2:case"end":return t.stop()}}),t,this)})));function e(){return t.apply(this,arguments)}return e}(),methods:{truncateString:function(t,e){return t.length<=e?t:t.slice(0,e)+"..."},loadRecentPRs:function(){var t=s(regeneratorRuntime.mark((function t(){var e,i,n,r,a;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,fetch("https://api.github.com/search/issues?q=repo:water111/jak-project+is:pr+is:merged&sort=updated");case 2:return e=t.sent,t.next=5,e.json();case 5:for(i=t.sent,n=9,r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return"string"===typeof e.style?(Object(S["b"])("style must be an object",this),e):"string"===typeof e.class?(Object(S["b"])("class must be an object",this),e):(Object(x["d"])(t)?e.style=Object(g["a"])(Object(g["a"])({},e.style),{},{"background-color":"".concat(t),"border-color":"".concat(t)}):t&&(e.class=Object(g["a"])(Object(g["a"])({},e.class),{},Object(_["a"])({},t,!0))),e)},setTextColor:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("string"===typeof e.style)return Object(S["b"])("style must be an object",this),e;if("string"===typeof e.class)return Object(S["b"])("class must be an object",this),e;if(Object(x["d"])(t))e.style=Object(g["a"])(Object(g["a"])({},e.style),{},{color:"".concat(t),"caret-color":"".concat(t)});else if(t){var i=t.toString().trim().split(" ",2),n=Object(v["a"])(i,2),r=n[0],a=n[1];e.class=Object(g["a"])(Object(g["a"])({},e.class),{},Object(_["a"])({},r+"--text",!0)),a&&(e.class["text--"+a]=!0)}return e}}}),j=m["a"].extend({name:"elevatable",props:{elevation:[Number,String]},computed:{computedElevation:function(){return this.elevation},elevationClasses:function(){var t=this.computedElevation;return null==t||isNaN(parseInt(t))?{}:Object(_["a"])({},"elevation-".concat(this.elevation),!0)}}}),O=i("80d2"),k=m["a"].extend({name:"measurable",props:{height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},computed:{measurableStyles:function(){var t={},e=Object(O["d"])(this.height),i=Object(O["d"])(this.minHeight),n=Object(O["d"])(this.minWidth),r=Object(O["d"])(this.maxHeight),a=Object(O["d"])(this.maxWidth),s=Object(O["d"])(this.width);return e&&(t.height=e),i&&(t.minHeight=i),n&&(t.minWidth=n),r&&(t.maxHeight=r),a&&(t.maxWidth=a),s&&(t.width=s),t}}}),C=(i("a4d3"),i("e01a"),i("d28b"),i("3ca3"),i("ddb0"),i("06c5"));function L(t,e){var i="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=Object(C["a"])(t))||e&&t&&"number"===typeof t.length){i&&(t=i);var n=0,r=function(){};return{s:r,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==i["return"]||i["return"]()}finally{if(o)throw a}}}}i("a15b");var B=m["a"].extend({name:"roundable",props:{rounded:[Boolean,String],tile:Boolean},computed:{roundedClasses:function(){var t=[],e="string"===typeof this.rounded?String(this.rounded):!0===this.rounded;if(this.tile)t.push("rounded-0");else if("string"===typeof e){var i,n=e.split(" "),r=L(n);try{for(r.s();!(i=r.n()).done;){var a=i.value;t.push("rounded-".concat(a))}}catch(s){r.e(s)}finally{r.f()}}else e&&t.push("rounded");return t.length>0?Object(_["a"])({},t.join(" "),!0):{}}}}),E=i("7560"),z=i("58df"),$=Object(z["a"])(y,w,j,k,B,E["a"]).extend({name:"v-sheet",props:{outlined:Boolean,shaped:Boolean,tag:{type:String,default:"div"}},computed:{classes:function(){return Object(g["a"])(Object(g["a"])(Object(g["a"])({"v-sheet":!0,"v-sheet--outlined":this.outlined,"v-sheet--shaped":this.shaped},this.themeClasses),this.elevationClasses),this.roundedClasses)},styles:function(){return this.measurableStyles}},render:function(t){var e={class:this.classes,style:this.styles,on:this.listeners$};return t(this.tag,this.setBackgroundColor(this.color,e),this.$slots.default)}}),T=$;i("99af"),i("8d4f");function P(t,e){if("undefined"!==typeof window&&"IntersectionObserver"in window){var i=e.modifiers||{},n=e.value,r="object"===Object(p["a"])(n)?n:{handler:n,options:{}},a=r.handler,s=r.options,o=new IntersectionObserver((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0;if(t._observe){var r=e.some((function(t){return t.isIntersecting}));!a||i.quiet&&!t._observe.init||i.once&&!r&&t._observe.init||a(e,n,r),r&&i.once?N(t):t._observe.init=!0}}),s);t._observe={init:!1,observer:o},o.observe(t)}}function N(t){t._observe&&(t._observe.observer.unobserve(t),delete t._observe)}var R={inserted:P,unbind:N},F=R,V=w.extend({name:"v-progress-circular",directives:{intersect:F},props:{button:Boolean,indeterminate:Boolean,rotate:{type:[Number,String],default:0},size:{type:[Number,String],default:32},width:{type:[Number,String],default:4},value:{type:[Number,String],default:0}},data:function(){return{radius:20,isVisible:!0}},computed:{calculatedSize:function(){return Number(this.size)+(this.button?8:0)},circumference:function(){return 2*Math.PI*this.radius},classes:function(){return{"v-progress-circular--visible":this.isVisible,"v-progress-circular--indeterminate":this.indeterminate,"v-progress-circular--button":this.button}},normalizedValue:function(){return this.value<0?0:this.value>100?100:parseFloat(this.value)},strokeDashArray:function(){return Math.round(1e3*this.circumference)/1e3},strokeDashOffset:function(){return(100-this.normalizedValue)/100*this.circumference+"px"},strokeWidth:function(){return Number(this.width)/+this.size*this.viewBoxSize*2},styles:function(){return{height:Object(O["d"])(this.calculatedSize),width:Object(O["d"])(this.calculatedSize)}},svgStyles:function(){return{transform:"rotate(".concat(Number(this.rotate),"deg)")}},viewBoxSize:function(){return this.radius/(1-Number(this.width)/+this.size)}},methods:{genCircle:function(t,e){return this.$createElement("circle",{class:"v-progress-circular__".concat(t),attrs:{fill:"transparent",cx:2*this.viewBoxSize,cy:2*this.viewBoxSize,r:this.radius,"stroke-width":this.strokeWidth,"stroke-dasharray":this.strokeDashArray,"stroke-dashoffset":e}})},genSvg:function(){var t=[this.indeterminate||this.genCircle("underlay",0),this.genCircle("overlay",this.strokeDashOffset)];return this.$createElement("svg",{style:this.svgStyles,attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"".concat(this.viewBoxSize," ").concat(this.viewBoxSize," ").concat(2*this.viewBoxSize," ").concat(2*this.viewBoxSize)}},t)},genInfo:function(){return this.$createElement("div",{staticClass:"v-progress-circular__info"},this.$slots.default)},onObserve:function(t,e,i){this.isVisible=i}},render:function(t){return t("div",this.setTextColor(this.color,{staticClass:"v-progress-circular",attrs:{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":this.indeterminate?void 0:this.normalizedValue},class:this.classes,directives:[{name:"intersect",value:this.onObserve}],style:this.styles,on:this.$listeners}),[this.genSvg(),this.genInfo()])}}),I=V;function A(t,e){return function(){return Object(S["c"])("The ".concat(t," component must be used inside a ").concat(e))}}function W(t,e,i){var n=e&&i?{register:A(e,i),unregister:A(e,i)}:null;return m["a"].extend({name:"registrable-inject",inject:Object(_["a"])({},t,{default:n})})}function D(t,e,i){return W(t,e,i).extend({name:"groupable",props:{activeClass:{type:String,default:function(){if(this[t])return this[t].activeClass}},disabled:Boolean},data:function(){return{isActive:!1}},computed:{groupClasses:function(){return this.activeClass?Object(_["a"])({},this.activeClass,this.isActive):{}}},created:function(){this[t]&&this[t].register(this)},beforeDestroy:function(){this[t]&&this[t].unregister(this)},methods:{toggle:function(){this.$emit("change")}}})}D("itemGroup");function H(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"value",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"input";return m["a"].extend({name:"toggleable",model:{prop:e,event:i},props:Object(_["a"])({},e,{required:!1}),data:function(){return{isActive:!!this[e]}},watch:(t={},Object(_["a"])(t,e,(function(t){this.isActive=!!t})),Object(_["a"])(t,"isActive",(function(t){!!t!==this[e]&&this.$emit(i,t)})),t)})}H();var M={absolute:Boolean,bottom:Boolean,fixed:Boolean,left:Boolean,right:Boolean,top:Boolean};function q(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return m["a"].extend({name:"positionable",props:t.length?Object(O["f"])(M,t):M})}var G=q(),J=(i("9911"),i("5319"),i("b0c0"),i("7435"),Symbol("rippleStop")),Y=80;function X(t,e){t.style.transform=e,t.style.webkitTransform=e}function K(t,e){t.style.opacity=e.toString()}function U(t){return"TouchEvent"===t.constructor.name}function Q(t){return"KeyboardEvent"===t.constructor.name}var Z=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=0,r=0;if(!Q(t)){var a=e.getBoundingClientRect(),s=U(t)?t.touches[t.touches.length-1]:t;n=s.clientX-a.left,r=s.clientY-a.top}var o=0,c=.3;e._ripple&&e._ripple.circle?(c=.15,o=e.clientWidth/2,o=i.center?o:o+Math.sqrt(Math.pow(n-o,2)+Math.pow(r-o,2))/4):o=Math.sqrt(Math.pow(e.clientWidth,2)+Math.pow(e.clientHeight,2))/2;var l="".concat((e.clientWidth-2*o)/2,"px"),u="".concat((e.clientHeight-2*o)/2,"px"),h=i.center?l:"".concat(n-o,"px"),d=i.center?u:"".concat(r-o,"px");return{radius:o,scale:c,x:h,y:d,centerX:l,centerY:u}},tt={show:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e._ripple&&e._ripple.enabled){var n=document.createElement("span"),r=document.createElement("span");n.appendChild(r),n.className="v-ripple__container",i.class&&(n.className+=" ".concat(i.class));var a=Z(t,e,i),s=a.radius,o=a.scale,c=a.x,l=a.y,u=a.centerX,h=a.centerY,d="".concat(2*s,"px");r.className="v-ripple__animation",r.style.width=d,r.style.height=d,e.appendChild(n);var f=window.getComputedStyle(e);f&&"static"===f.position&&(e.style.position="relative",e.dataset.previousPosition="static"),r.classList.add("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--visible"),X(r,"translate(".concat(c,", ").concat(l,") scale3d(").concat(o,",").concat(o,",").concat(o,")")),K(r,0),r.dataset.activated=String(performance.now()),setTimeout((function(){r.classList.remove("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--in"),X(r,"translate(".concat(u,", ").concat(h,") scale3d(1,1,1)")),K(r,.25)}),0)}},hide:function(t){if(t&&t._ripple&&t._ripple.enabled){var e=t.getElementsByClassName("v-ripple__animation");if(0!==e.length){var i=e[e.length-1];if(!i.dataset.isHiding){i.dataset.isHiding="true";var n=performance.now()-Number(i.dataset.activated),r=Math.max(250-n,0);setTimeout((function(){i.classList.remove("v-ripple__animation--in"),i.classList.add("v-ripple__animation--out"),K(i,0),setTimeout((function(){var e=t.getElementsByClassName("v-ripple__animation");1===e.length&&t.dataset.previousPosition&&(t.style.position=t.dataset.previousPosition,delete t.dataset.previousPosition),i.parentNode&&t.removeChild(i.parentNode)}),300)}),r)}}}}};function et(t){return"undefined"===typeof t||!!t}function it(t){var e={},i=t.currentTarget;if(i&&i._ripple&&!i._ripple.touched&&!t[J]){if(t[J]=!0,U(t))i._ripple.touched=!0,i._ripple.isTouch=!0;else if(i._ripple.isTouch)return;if(e.center=i._ripple.centered||Q(t),i._ripple.class&&(e.class=i._ripple.class),U(t)){if(i._ripple.showTimerCommit)return;i._ripple.showTimerCommit=function(){tt.show(t,i,e)},i._ripple.showTimer=window.setTimeout((function(){i&&i._ripple&&i._ripple.showTimerCommit&&(i._ripple.showTimerCommit(),i._ripple.showTimerCommit=null)}),Y)}else tt.show(t,i,e)}}function nt(t){var e=t.currentTarget;if(e&&e._ripple){if(window.clearTimeout(e._ripple.showTimer),"touchend"===t.type&&e._ripple.showTimerCommit)return e._ripple.showTimerCommit(),e._ripple.showTimerCommit=null,void(e._ripple.showTimer=setTimeout((function(){nt(t)})));window.setTimeout((function(){e._ripple&&(e._ripple.touched=!1)})),tt.hide(e)}}function rt(t){var e=t.currentTarget;e&&e._ripple&&(e._ripple.showTimerCommit&&(e._ripple.showTimerCommit=null),window.clearTimeout(e._ripple.showTimer))}var at=!1;function st(t){at||t.keyCode!==O["j"].enter&&t.keyCode!==O["j"].space||(at=!0,it(t))}function ot(t){at=!1,nt(t)}function ct(t){!0===at&&(at=!1,nt(t))}function lt(t,e,i){var n=et(e.value);n||tt.hide(t),t._ripple=t._ripple||{},t._ripple.enabled=n;var r=e.value||{};r.center&&(t._ripple.centered=!0),r.class&&(t._ripple.class=e.value.class),r.circle&&(t._ripple.circle=r.circle),n&&!i?(t.addEventListener("touchstart",it,{passive:!0}),t.addEventListener("touchend",nt,{passive:!0}),t.addEventListener("touchmove",rt,{passive:!0}),t.addEventListener("touchcancel",nt),t.addEventListener("mousedown",it),t.addEventListener("mouseup",nt),t.addEventListener("mouseleave",nt),t.addEventListener("keydown",st),t.addEventListener("keyup",ot),t.addEventListener("blur",ct),t.addEventListener("dragstart",nt,{passive:!0})):!n&&i&&ut(t)}function ut(t){t.removeEventListener("mousedown",it),t.removeEventListener("touchstart",it),t.removeEventListener("touchend",nt),t.removeEventListener("touchmove",rt),t.removeEventListener("touchcancel",nt),t.removeEventListener("mouseup",nt),t.removeEventListener("mouseleave",nt),t.removeEventListener("keydown",st),t.removeEventListener("keyup",ot),t.removeEventListener("dragstart",nt),t.removeEventListener("blur",ct)}function ht(t,e,i){lt(t,e,!1)}function dt(t){delete t._ripple,ut(t)}function ft(t,e){if(e.value!==e.oldValue){var i=et(e.oldValue);lt(t,e,i)}}var pt={bind:ht,unbind:dt,update:ft},vt=pt,gt=m["a"].extend({name:"routable",directives:{Ripple:vt},props:{activeClass:String,append:Boolean,disabled:Boolean,exact:{type:Boolean,default:void 0},exactPath:Boolean,exactActiveClass:String,link:Boolean,href:[String,Object],to:[String,Object],nuxt:Boolean,replace:Boolean,ripple:{type:[Boolean,Object],default:null},tag:String,target:String},data:function(){return{isActive:!1,proxyClass:""}},computed:{classes:function(){var t={};return this.to||(this.activeClass&&(t[this.activeClass]=this.isActive),this.proxyClass&&(t[this.proxyClass]=this.isActive)),t},computedRipple:function(){var t;return null!=(t=this.ripple)?t:!this.disabled&&this.isClickable},isClickable:function(){return!this.disabled&&Boolean(this.isLink||this.$listeners.click||this.$listeners["!click"]||this.$attrs.tabindex)},isLink:function(){return this.to||this.href||this.link},styles:function(){return{}}},watch:{$route:"onRouteChange"},methods:{click:function(t){this.$emit("click",t)},generateRouteLink:function(){var t,e,i=this.exact,n=(t={attrs:{tabindex:"tabindex"in this.$attrs?this.$attrs.tabindex:void 0},class:this.classes,style:this.styles,props:{},directives:[{name:"ripple",value:this.computedRipple}]},Object(_["a"])(t,this.to?"nativeOn":"on",Object(g["a"])(Object(g["a"])({},this.$listeners),{},{click:this.click})),Object(_["a"])(t,"ref","link"),t);if("undefined"===typeof this.exact&&(i="/"===this.to||this.to===Object(this.to)&&"/"===this.to.path),this.to){var r=this.activeClass,a=this.exactActiveClass||r;this.proxyClass&&(r="".concat(r," ").concat(this.proxyClass).trim(),a="".concat(a," ").concat(this.proxyClass).trim()),e=this.nuxt?"nuxt-link":"router-link",Object.assign(n.props,{to:this.to,exact:i,exactPath:this.exactPath,activeClass:r,exactActiveClass:a,append:this.append,replace:this.replace})}else e=(this.href?"a":this.tag)||"div","a"===e&&this.href&&(n.attrs.href=this.href);return this.target&&(n.attrs.target=this.target),{tag:e,data:n}},onRouteChange:function(){var t=this;if(this.to&&this.$refs.link&&this.$route){var e="".concat(this.activeClass," ").concat(this.proxyClass||"").trim(),i="_vnode.data.class.".concat(e);this.$nextTick((function(){Object(O["h"])(t.$refs.link,i)&&t.toggle()}))}},toggle:function(){}}}),mt=(i("c96a"),m["a"].extend({name:"sizeable",props:{large:Boolean,small:Boolean,xLarge:Boolean,xSmall:Boolean},computed:{medium:function(){return Boolean(!this.xSmall&&!this.small&&!this.large&&!this.xLarge)},sizeableClasses:function(){return{"v-size--x-small":this.xSmall,"v-size--small":this.small,"v-size--default":this.medium,"v-size--large":this.large,"v-size--x-large":this.xLarge}}}})),bt=Object(z["a"])(T,gt,G,mt,D("btnToggle"),H("inputValue")),yt=bt.extend().extend({name:"v-btn",props:{activeClass:{type:String,default:function(){return this.btnToggle?this.btnToggle.activeClass:""}},block:Boolean,depressed:Boolean,fab:Boolean,icon:Boolean,loading:Boolean,outlined:Boolean,plain:Boolean,retainFocusOnClick:Boolean,rounded:Boolean,tag:{type:String,default:"button"},text:Boolean,tile:Boolean,type:{type:String,default:"button"},value:null},data:function(){return{proxyClass:"v-btn--active"}},computed:{classes:function(){return Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])({"v-btn":!0},gt.options.computed.classes.call(this)),{},{"v-btn--absolute":this.absolute,"v-btn--block":this.block,"v-btn--bottom":this.bottom,"v-btn--disabled":this.disabled,"v-btn--is-elevated":this.isElevated,"v-btn--fab":this.fab,"v-btn--fixed":this.fixed,"v-btn--has-bg":this.hasBg,"v-btn--icon":this.icon,"v-btn--left":this.left,"v-btn--loading":this.loading,"v-btn--outlined":this.outlined,"v-btn--plain":this.plain,"v-btn--right":this.right,"v-btn--round":this.isRound,"v-btn--rounded":this.rounded,"v-btn--router":this.to,"v-btn--text":this.text,"v-btn--tile":this.tile,"v-btn--top":this.top},this.themeClasses),this.groupClasses),this.elevationClasses),this.sizeableClasses)},computedElevation:function(){if(!this.disabled)return j.options.computed.computedElevation.call(this)},computedRipple:function(){var t,e=!this.icon&&!this.fab||{circle:!0};return!this.disabled&&(null!=(t=this.ripple)?t:e)},hasBg:function(){return!this.text&&!this.plain&&!this.outlined&&!this.icon},isElevated:function(){return Boolean(!this.icon&&!this.text&&!this.outlined&&!this.depressed&&!this.disabled&&!this.plain&&(null==this.elevation||Number(this.elevation)>0))},isRound:function(){return Boolean(this.icon||this.fab)},styles:function(){return Object(g["a"])({},this.measurableStyles)}},created:function(){var t=this,e=[["flat","text"],["outline","outlined"],["round","rounded"]];e.forEach((function(e){var i=Object(v["a"])(e,2),n=i[0],r=i[1];t.$attrs.hasOwnProperty(n)&&Object(S["a"])(n,r,t)}))},methods:{click:function(t){!this.retainFocusOnClick&&!this.fab&&t.detail&&this.$el.blur(),this.$emit("click",t),this.btnToggle&&this.toggle()},genContent:function(){return this.$createElement("span",{staticClass:"v-btn__content"},this.$slots.default)},genLoader:function(){return this.$createElement("span",{class:"v-btn__loader"},this.$slots.loader||[this.$createElement(I,{props:{indeterminate:!0,size:23,width:2}})])}},render:function(t){var e=[this.genContent(),this.loading&&this.genLoader()],i=this.generateRouteLink(),n=i.tag,r=i.data,a=this.hasBg?this.setBackgroundColor:this.setTextColor;return"button"===n&&(r.attrs.type=this.type,r.attrs.disabled=this.disabled),r.attrs.value=["string","number"].includes(Object(p["a"])(this.value))?this.value:JSON.stringify(this.value),t(n,this.disabled?r:a(this.color,r),e)}}),_t=(i("0481"),i("615b"),i("6ece"),i("b64b"),{styleList:/;(?![^(]*\))/g,styleProp:/:(.*)/});function St(t){var e,i={},n=L(t.split(_t.styleList));try{for(n.s();!(e=n.n()).done;){var r=e.value,a=r.split(_t.styleProp),s=Object(v["a"])(a,2),o=s[0],c=s[1];o=o.trim(),o&&("string"===typeof c&&(c=c.trim()),i[Object(O["a"])(o)]=c)}}catch(l){n.e(l)}finally{n.f()}return i}function xt(){var t,e={},i=arguments.length;while(i--)for(var n=0,r=Object.keys(arguments[i]);n0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length,n=new Array(i>1?i-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:"top center 0",i=arguments.length>2?arguments[2]:void 0;return{name:t,functional:!0,props:{group:{type:Boolean,default:!1},hideOnLeave:{type:Boolean,default:!1},leaveAbsolute:{type:Boolean,default:!1},mode:{type:String,default:i},origin:{type:String,default:e}},render:function(e,i){var n="transition".concat(i.props.group?"-group":""),r={props:{name:t,mode:i.props.mode},on:{beforeEnter:function(t){t.style.transformOrigin=i.props.origin,t.style.webkitTransformOrigin=i.props.origin}}};return i.props.leaveAbsolute&&(r.on.leave=kt(r.on.leave,(function(t){var e=t.offsetTop,i=t.offsetLeft,n=t.offsetWidth,r=t.offsetHeight;t._transitionInitialStyles={position:t.style.position,top:t.style.top,left:t.style.left,width:t.style.width,height:t.style.height},t.style.position="absolute",t.style.top=e+"px",t.style.left=i+"px",t.style.width=n+"px",t.style.height=r+"px"})),r.on.afterLeave=kt(r.on.afterLeave,(function(t){if(t&&t._transitionInitialStyles){var e=t._transitionInitialStyles,i=e.position,n=e.top,r=e.left,a=e.width,s=e.height;delete t._transitionInitialStyles,t.style.position=i||"",t.style.top=n||"",t.style.left=r||"",t.style.width=a||"",t.style.height=s||""}}))),i.props.hideOnLeave&&(r.on.leave=kt(r.on.leave,(function(t){t._initialDisplay=t.style.display,t.style.display="none"})),r.on.afterLeave=kt(r.on.afterLeave,(function(t){t&&(t.style.display=t._initialDisplay||"")}))),e(n,xt(i.data,r),i.children)}}}function Lt(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"in-out";return{name:t,functional:!0,props:{mode:{type:String,default:i}},render:function(i,n){return i("transition",xt(n.data,{props:{name:t},on:e}),n.children)}}}var Bt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=e?"width":"height",n="offset".concat(Object(O["o"])(i));return{beforeEnter:function(t){t._parent=t.parentNode,t._initialStyle=Object(_["a"])({transition:t.style.transition,overflow:t.style.overflow},i,t.style[i])},enter:function(e){var r=e._initialStyle;e.style.setProperty("transition","none","important"),e.style.overflow="hidden";var a="".concat(e[n],"px");e.style[i]="0",e.offsetHeight,e.style.transition=r.transition,t&&e._parent&&e._parent.classList.add(t),requestAnimationFrame((function(){e.style[i]=a}))},afterEnter:a,enterCancelled:a,leave:function(t){t._initialStyle=Object(_["a"])({transition:"",overflow:t.style.overflow},i,t.style[i]),t.style.overflow="hidden",t.style[i]="".concat(t[n],"px"),t.offsetHeight,requestAnimationFrame((function(){return t.style[i]="0"}))},afterLeave:r,leaveCancelled:r};function r(e){t&&e._parent&&e._parent.classList.remove(t),a(e)}function a(t){var e=t._initialStyle[i];t.style.overflow=t._initialStyle.overflow,null!=e&&(t.style[i]=e),delete t._initialStyle}},Et=(Ct("carousel-transition"),Ct("carousel-reverse-transition"),Ct("tab-transition"),Ct("tab-reverse-transition"),Ct("menu-transition"),Ct("fab-transition","center center","out-in"),Ct("dialog-transition"),Ct("dialog-bottom-transition"),Ct("dialog-top-transition"),Ct("fade-transition")),zt=(Ct("scale-transition"),Ct("scroll-x-transition"),Ct("scroll-x-reverse-transition"),Ct("scroll-y-transition"),Ct("scroll-y-reverse-transition"),Ct("slide-x-transition"));Ct("slide-x-reverse-transition"),Ct("slide-y-transition"),Ct("slide-y-reverse-transition"),Lt("expand-transition",Bt()),Lt("expand-x-transition",Bt("",!0));function $t(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"value",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"change";return m["a"].extend({name:"proxyable",model:{prop:t,event:e},props:Object(_["a"])({},t,{required:!1}),data:function(){return{internalLazyValue:this[t]}},computed:{internalValue:{get:function(){return this.internalLazyValue},set:function(t){t!==this.internalLazyValue&&(this.internalLazyValue=t,this.$emit(e,t))}}},watch:Object(_["a"])({},t,(function(t){this.internalLazyValue=t}))})}var Tt=$t(),Pt=Tt,Nt=Object(z["a"])(w,q(["absolute","fixed","top","bottom"]),Pt,E["a"]),Rt=Nt.extend({name:"v-progress-linear",directives:{intersect:F},props:{active:{type:Boolean,default:!0},backgroundColor:{type:String,default:null},backgroundOpacity:{type:[Number,String],default:null},bufferValue:{type:[Number,String],default:100},color:{type:String,default:"primary"},height:{type:[Number,String],default:4},indeterminate:Boolean,query:Boolean,reverse:Boolean,rounded:Boolean,stream:Boolean,striped:Boolean,value:{type:[Number,String],default:0}},data:function(){return{internalLazyValue:this.value||0,isVisible:!0}},computed:{__cachedBackground:function(){return this.$createElement("div",this.setBackgroundColor(this.backgroundColor||this.color,{staticClass:"v-progress-linear__background",style:this.backgroundStyle}))},__cachedBar:function(){return this.$createElement(this.computedTransition,[this.__cachedBarType])},__cachedBarType:function(){return this.indeterminate?this.__cachedIndeterminate:this.__cachedDeterminate},__cachedBuffer:function(){return this.$createElement("div",{staticClass:"v-progress-linear__buffer",style:this.styles})},__cachedDeterminate:function(){return this.$createElement("div",this.setBackgroundColor(this.color,{staticClass:"v-progress-linear__determinate",style:{width:Object(O["d"])(this.normalizedValue,"%")}}))},__cachedIndeterminate:function(){return this.$createElement("div",{staticClass:"v-progress-linear__indeterminate",class:{"v-progress-linear__indeterminate--active":this.active}},[this.genProgressBar("long"),this.genProgressBar("short")])},__cachedStream:function(){return this.stream?this.$createElement("div",this.setTextColor(this.color,{staticClass:"v-progress-linear__stream",style:{width:Object(O["d"])(100-this.normalizedBuffer,"%")}})):null},backgroundStyle:function(){var t,e=null==this.backgroundOpacity?this.backgroundColor?1:.3:parseFloat(this.backgroundOpacity);return t={opacity:e},Object(_["a"])(t,this.isReversed?"right":"left",Object(O["d"])(this.normalizedValue,"%")),Object(_["a"])(t,"width",Object(O["d"])(Math.max(0,this.normalizedBuffer-this.normalizedValue),"%")),t},classes:function(){return Object(g["a"])({"v-progress-linear--absolute":this.absolute,"v-progress-linear--fixed":this.fixed,"v-progress-linear--query":this.query,"v-progress-linear--reactive":this.reactive,"v-progress-linear--reverse":this.isReversed,"v-progress-linear--rounded":this.rounded,"v-progress-linear--striped":this.striped,"v-progress-linear--visible":this.isVisible},this.themeClasses)},computedTransition:function(){return this.indeterminate?Et:zt},isReversed:function(){return this.$vuetify.rtl!==this.reverse},normalizedBuffer:function(){return this.normalize(this.bufferValue)},normalizedValue:function(){return this.normalize(this.internalLazyValue)},reactive:function(){return Boolean(this.$listeners.change)},styles:function(){var t={};return this.active||(t.height=0),this.indeterminate||100===parseFloat(this.normalizedBuffer)||(t.width=Object(O["d"])(this.normalizedBuffer,"%")),t}},methods:{genContent:function(){var t=Object(O["i"])(this,"default",{value:this.internalLazyValue});return t?this.$createElement("div",{staticClass:"v-progress-linear__content"},t):null},genListeners:function(){var t=this.$listeners;return this.reactive&&(t.click=this.onClick),t},genProgressBar:function(t){return this.$createElement("div",this.setBackgroundColor(this.color,{staticClass:"v-progress-linear__indeterminate",class:Object(_["a"])({},t,!0)}))},onClick:function(t){if(this.reactive){var e=this.$el.getBoundingClientRect(),i=e.width;this.internalValue=t.offsetX/i*100}},onObserve:function(t,e,i){this.isVisible=i},normalize:function(t){return t<0?0:t>100?100:parseFloat(t)}},render:function(t){var e={staticClass:"v-progress-linear",attrs:{role:"progressbar","aria-valuemin":0,"aria-valuemax":this.normalizedBuffer,"aria-valuenow":this.indeterminate?void 0:this.normalizedValue},class:this.classes,directives:[{name:"intersect",value:this.onObserve}],style:{bottom:this.bottom?0:void 0,height:this.active?Object(O["d"])(this.height):0,top:this.top?0:void 0},on:this.genListeners()};return t("div",e,[this.__cachedStream,this.__cachedBackground,this.__cachedBuffer,this.__cachedBar,this.genContent()])}}),Ft=Rt,Vt=m["a"].extend().extend({name:"loadable",props:{loading:{type:[Boolean,String],default:!1},loaderHeight:{type:[Number,String],default:2}},methods:{genProgress:function(){return!1===this.loading?null:this.$slots.progress||this.$createElement(Ft,{props:{absolute:!0,color:!0===this.loading||""===this.loading?this.color||"primary":this.loading,height:this.loaderHeight,indeterminate:!0}})}}}),It=Object(z["a"])(Vt,gt,T).extend({name:"v-card",props:{flat:Boolean,hover:Boolean,img:String,link:Boolean,loaderHeight:{type:[Number,String],default:4},raised:Boolean},computed:{classes:function(){return Object(g["a"])(Object(g["a"])({"v-card":!0},gt.options.computed.classes.call(this)),{},{"v-card--flat":this.flat,"v-card--hover":this.hover,"v-card--link":this.isClickable,"v-card--loading":this.loading,"v-card--disabled":this.disabled,"v-card--raised":this.raised},T.options.computed.classes.call(this))},styles:function(){var t=Object(g["a"])({},T.options.computed.styles.call(this));return this.img&&(t.background='url("'.concat(this.img,'") center center / cover no-repeat')),t}},methods:{genProgress:function(){var t=Vt.options.methods.genProgress.call(this);return t?this.$createElement("div",{staticClass:"v-card__progress",key:"progress"},[t]):null}},render:function(t){var e=this.generateRouteLink(),i=e.tag,n=e.data;return n.style=this.styles,this.isClickable&&(n.attrs=n.attrs||{},n.attrs.tabindex=0),t(i,this.setBackgroundColor(this.color,n),[this.genProgress(),this.$slots.default])}}),At=Object(O["e"])("v-card__actions"),Wt=(Object(O["e"])("v-card__subtitle"),Object(O["e"])("v-card__text")),Dt=(Object(O["e"])("v-card__title"),i("4ec9"),i("159b"),i("2ca0"),i("4b85"),["sm","md","lg","xl"]),Ht=function(){return Dt.reduce((function(t,e){return t[e]={type:[Boolean,String,Number],default:!1},t}),{})}(),Mt=function(){return Dt.reduce((function(t,e){return t["offset"+Object(O["o"])(e)]={type:[String,Number],default:null},t}),{})}(),qt=function(){return Dt.reduce((function(t,e){return t["order"+Object(O["o"])(e)]={type:[String,Number],default:null},t}),{})}(),Gt={col:Object.keys(Ht),offset:Object.keys(Mt),order:Object.keys(qt)};function Jt(t,e,i){var n=t;if(null!=i&&!1!==i){if(e){var r=e.replace(t,"");n+="-".concat(r)}return"col"!==t||""!==i&&!0!==i?(n+="-".concat(i),n.toLowerCase()):n.toLowerCase()}}var Yt=new Map,Xt=m["a"].extend({name:"v-col",functional:!0,props:Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])({cols:{type:[Boolean,String,Number],default:!1}},Ht),{},{offset:{type:[String,Number],default:null}},Mt),{},{order:{type:[String,Number],default:null}},qt),{},{alignSelf:{type:String,default:null,validator:function(t){return["auto","start","end","center","baseline","stretch"].includes(t)}},tag:{type:String,default:"div"}}),render:function(t,e){var i=e.props,n=e.data,r=e.children,a=(e.parent,"");for(var s in i)a+=String(i[s]);var o=Yt.get(a);return o||function(){var t,e;for(e in o=[],Gt)Gt[e].forEach((function(t){var n=i[t],r=Jt(e,t,n);r&&o.push(r)}));var n=o.some((function(t){return t.startsWith("col-")}));o.push((t={col:!n||!i.cols},Object(_["a"])(t,"col-".concat(i.cols),i.cols),Object(_["a"])(t,"offset-".concat(i.offset),i.offset),Object(_["a"])(t,"order-".concat(i.order),i.order),Object(_["a"])(t,"align-self-".concat(i.alignSelf),i.alignSelf),t)),Yt.set(a,o)}(),t(i.tag,xt(n,{class:o}),r)}});i("4de4"),i("20f6");function Kt(t){return m["a"].extend({name:"v-".concat(t),functional:!0,props:{id:String,tag:{type:String,default:"div"}},render:function(e,i){var n=i.props,r=i.data,a=i.children;r.staticClass="".concat(t," ").concat(r.staticClass||"").trim();var s=r.attrs;if(s){r.attrs={};var o=Object.keys(s).filter((function(t){if("slot"===t)return!1;var e=s[t];return t.startsWith("data-")?(r.attrs[t]=e,!1):e||"string"===typeof e}));o.length&&(r.staticClass+=" ".concat(o.join(" ")))}return n.id&&(r.domProps=r.domProps||{},r.domProps.id=n.id),e(n.tag,r,a)}})}var Ut,Qt=Kt("container").extend({name:"v-container",functional:!0,props:{id:String,tag:{type:String,default:"div"},fluid:{type:Boolean,default:!1}},render:function(t,e){var i,n=e.props,r=e.data,a=e.children,s=r.attrs;return s&&(r.attrs={},i=Object.keys(s).filter((function(t){if("slot"===t)return!1;var e=s[t];return t.startsWith("data-")?(r.attrs[t]=e,!1):e||"string"===typeof e}))),n.id&&(r.domProps=r.domProps||{},r.domProps.id=n.id),t(n.tag,xt(r,{staticClass:"container",class:Array({"container--fluid":n.fluid}).concat(i||[])}),a)}});i("2532"),i("7db0"),i("4804");function Zt(t){return["fas","far","fal","fab","fad","fak"].some((function(e){return t.includes(e)}))}function te(t){return/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4}(function(t){t["xSmall"]="12px",t["small"]="16px",t["default"]="24px",t["medium"]="28px",t["large"]="36px",t["xLarge"]="40px"})(Ut||(Ut={}));var ee=Object(z["a"])(y,w,mt,E["a"]).extend({name:"v-icon",props:{dense:Boolean,disabled:Boolean,left:Boolean,right:Boolean,size:[Number,String],tag:{type:String,required:!1,default:"i"}},computed:{medium:function(){return!1},hasClickListener:function(){return Boolean(this.listeners$.click||this.listeners$["!click"])}},methods:{getIcon:function(){var t="";return this.$slots.default&&(t=this.$slots.default[0].text.trim()),Object(O["n"])(this,t)},getSize:function(){var t={xSmall:this.xSmall,small:this.small,medium:this.medium,large:this.large,xLarge:this.xLarge},e=Object(O["k"])(t).find((function(e){return t[e]}));return e&&Ut[e]||Object(O["d"])(this.size)},getDefaultData:function(){return{staticClass:"v-icon notranslate",class:{"v-icon--disabled":this.disabled,"v-icon--left":this.left,"v-icon--link":this.hasClickListener,"v-icon--right":this.right,"v-icon--dense":this.dense},attrs:Object(g["a"])({"aria-hidden":!this.hasClickListener,disabled:this.hasClickListener&&this.disabled,type:this.hasClickListener?"button":void 0},this.attrs$),on:this.listeners$}},getSvgWrapperData:function(){var t=this.getSize(),e=Object(g["a"])(Object(g["a"])({},this.getDefaultData()),{},{style:t?{fontSize:t,height:t,width:t}:void 0});return this.applyColors(e),e},applyColors:function(t){t.class=Object(g["a"])(Object(g["a"])({},t.class),this.themeClasses),this.setTextColor(this.color,t)},renderFontIcon:function(t,e){var i=[],n=this.getDefaultData(),r="material-icons",a=t.indexOf("-"),s=a<=-1;s?i.push(t):(r=t.slice(0,a),Zt(r)&&(r="")),n.class[r]=!0,n.class[t]=!s;var o=this.getSize();return o&&(n.style={fontSize:o}),this.applyColors(n),e(this.hasClickListener?"button":this.tag,n,i)},renderSvgIcon:function(t,e){var i={class:"v-icon__svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":!0}},n=this.getSize();return n&&(i.style={fontSize:n,height:n,width:n}),e(this.hasClickListener?"button":"span",this.getSvgWrapperData(),[e("svg",i,[e("path",{attrs:{d:t}})])])},renderSvgIconComponent:function(t,e){var i={class:{"v-icon__component":!0}},n=this.getSize();n&&(i.style={fontSize:n,height:n,width:n}),this.applyColors(i);var r=t.component;return i.props=t.props,i.nativeOn=i.on,e(this.hasClickListener?"button":"span",this.getSvgWrapperData(),[e(r,i)])}},render:function(t){var e=this.getIcon();return"string"===typeof e?te(e)?this.renderSvgIcon(e,t):this.renderFontIcon(e,t):this.renderSvgIconComponent(e,t)}}),ie=m["a"].extend({name:"v-icon",$_wrapperFor:ee,functional:!0,render:function(t,e){var i=e.data,n=e.children,r="";return i.domProps&&(r=i.domProps.textContent||i.domProps.innerHTML||r,delete i.domProps.textContent,delete i.domProps.innerHTML),t(ee,i,r?[r]:n)}}),ne=(i("8a79"),i("8efc"),i("36a7"),Object(z["a"])(k).extend({name:"v-responsive",props:{aspectRatio:[String,Number],contentClass:String},computed:{computedAspectRatio:function(){return Number(this.aspectRatio)},aspectStyle:function(){return this.computedAspectRatio?{paddingBottom:1/this.computedAspectRatio*100+"%"}:void 0},__cachedSizer:function(){return this.aspectStyle?this.$createElement("div",{style:this.aspectStyle,staticClass:"v-responsive__sizer"}):[]}},methods:{genContent:function(){return this.$createElement("div",{staticClass:"v-responsive__content",class:this.contentClass},this.$slots.default)}},render:function(t){return t("div",{staticClass:"v-responsive",style:this.measurableStyles,on:this.$listeners},[this.__cachedSizer,this.genContent()])}})),re=ne,ae="undefined"!==typeof window&&"IntersectionObserver"in window,se=Object(z["a"])(re,E["a"]).extend({name:"v-img",directives:{intersect:F},props:{alt:String,contain:Boolean,eager:Boolean,gradient:String,lazySrc:String,options:{type:Object,default:function(){return{root:void 0,rootMargin:void 0,threshold:void 0}}},position:{type:String,default:"center center"},sizes:String,src:{type:[String,Object],default:""},srcset:String,transition:{type:[Boolean,String],default:"fade-transition"}},data:function(){return{currentSrc:"",image:null,isLoading:!0,calculatedAspectRatio:void 0,naturalWidth:void 0,hasError:!1}},computed:{computedAspectRatio:function(){return Number(this.normalisedSrc.aspect||this.calculatedAspectRatio)},normalisedSrc:function(){return this.src&&"object"===Object(p["a"])(this.src)?{src:this.src.src,srcset:this.srcset||this.src.srcset,lazySrc:this.lazySrc||this.src.lazySrc,aspect:Number(this.aspectRatio||this.src.aspect)}:{src:this.src,srcset:this.srcset,lazySrc:this.lazySrc,aspect:Number(this.aspectRatio||0)}},__cachedImage:function(){if(!(this.normalisedSrc.src||this.normalisedSrc.lazySrc||this.gradient))return[];var t=[],e=this.isLoading?this.normalisedSrc.lazySrc:this.currentSrc;this.gradient&&t.push("linear-gradient(".concat(this.gradient,")")),e&&t.push('url("'.concat(e,'")'));var i=this.$createElement("div",{staticClass:"v-image__image",class:{"v-image__image--preload":this.isLoading,"v-image__image--contain":this.contain,"v-image__image--cover":!this.contain},style:{backgroundImage:t.join(", "),backgroundPosition:this.position},key:+this.isLoading});return this.transition?this.$createElement("transition",{attrs:{name:this.transition,mode:"in-out"}},[i]):i}},watch:{src:function(){this.isLoading?this.loadImage():this.init(void 0,void 0,!0)},"$vuetify.breakpoint.width":"getSrc"},mounted:function(){this.init()},methods:{init:function(t,e,i){if(!ae||i||this.eager){if(this.normalisedSrc.lazySrc){var n=new Image;n.src=this.normalisedSrc.lazySrc,this.pollForSize(n,null)}this.normalisedSrc.src&&this.loadImage()}},onLoad:function(){this.getSrc(),this.isLoading=!1,this.$emit("load",this.src),this.image&&(this.normalisedSrc.src.endsWith(".svg")||this.normalisedSrc.src.startsWith("data:image/svg+xml"))&&(this.image.naturalHeight&&this.image.naturalWidth?(this.naturalWidth=this.image.naturalWidth,this.calculatedAspectRatio=this.image.naturalWidth/this.image.naturalHeight):this.calculatedAspectRatio=1)},onError:function(){this.hasError=!0,this.$emit("error",this.src)},getSrc:function(){this.image&&(this.currentSrc=this.image.currentSrc||this.image.src)},loadImage:function(){var t=this,e=new Image;this.image=e,e.onload=function(){e.decode?e.decode().catch((function(e){Object(S["c"])("Failed to decode image, trying to render anyway\n\n"+"src: ".concat(t.normalisedSrc.src)+(e.message?"\nOriginal error: ".concat(e.message):""),t)})).then(t.onLoad):t.onLoad()},e.onerror=this.onError,this.hasError=!1,this.sizes&&(e.sizes=this.sizes),this.normalisedSrc.srcset&&(e.srcset=this.normalisedSrc.srcset),e.src=this.normalisedSrc.src,this.$emit("loadstart",this.normalisedSrc.src),this.aspectRatio||this.pollForSize(e),this.getSrc()},pollForSize:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=function n(){var r=t.naturalHeight,a=t.naturalWidth;r||a?(e.naturalWidth=a,e.calculatedAspectRatio=a/r):t.complete||!e.isLoading||e.hasError||null==i||setTimeout(n,i)};n()},genContent:function(){var t=re.options.methods.genContent.call(this);return this.naturalWidth&&this._b(t.data,"div",{style:{width:"".concat(this.naturalWidth,"px")}}),t},__genPlaceholder:function(){if(this.$slots.placeholder){var t=this.isLoading?[this.$createElement("div",{staticClass:"v-image__placeholder"},this.$slots.placeholder)]:[];return this.transition?this.$createElement("transition",{props:{appear:!0,name:this.transition}},t):t[0]}}},render:function(t){var e=re.options.render.call(this,t),i=xt(e.data,{staticClass:"v-image",attrs:{"aria-label":this.alt,role:this.alt?"img":void 0},class:this.themeClasses,directives:ae?[{name:"intersect",modifiers:{once:!0},value:{handler:this.init,options:this.options}}]:void 0});return e.children=[this.__cachedSizer,this.__cachedImage,this.__genPlaceholder(),this.genContent()],t(e.tag,i,e.children)}}),oe=["sm","md","lg","xl"],ce=["start","end","center"];function le(t,e){return oe.reduce((function(i,n){return i[t+Object(O["o"])(n)]=e(),i}),{})}var ue=function(t){return[].concat(ce,["baseline","stretch"]).includes(t)},he=le("align",(function(){return{type:String,default:null,validator:ue}})),de=function(t){return[].concat(ce,["space-between","space-around"]).includes(t)},fe=le("justify",(function(){return{type:String,default:null,validator:de}})),pe=function(t){return[].concat(ce,["space-between","space-around","stretch"]).includes(t)},ve=le("alignContent",(function(){return{type:String,default:null,validator:pe}})),ge={align:Object.keys(he),justify:Object.keys(fe),alignContent:Object.keys(ve)},me={align:"align",justify:"justify",alignContent:"align-content"};function be(t,e,i){var n=me[t];if(null!=i){if(e){var r=e.replace(t,"");n+="-".concat(r)}return n+="-".concat(i),n.toLowerCase()}}var ye=new Map,_e=m["a"].extend({name:"v-row",functional:!0,props:Object(g["a"])(Object(g["a"])(Object(g["a"])({tag:{type:String,default:"div"},dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:ue}},he),{},{justify:{type:String,default:null,validator:de}},fe),{},{alignContent:{type:String,default:null,validator:pe}},ve),render:function(t,e){var i=e.props,n=e.data,r=e.children,a="";for(var s in i)a+=String(i[s]);var o=ye.get(a);return o||function(){var t,e;for(e in o=[],ge)ge[e].forEach((function(t){var n=i[t],r=be(e,t,n);r&&o.push(r)}));o.push((t={"no-gutters":i.noGutters,"row--dense":i.dense},Object(_["a"])(t,"align-".concat(i.align),i.align),Object(_["a"])(t,"justify-".concat(i.justify),i.justify),Object(_["a"])(t,"align-content-".concat(i.alignContent),i.alignContent),t)),ye.set(a,o)}(),t(i.tag,xt(n,{staticClass:"row",class:o}),r)}}),Se=(i("0bc6"),Object(z["a"])(E["a"]).extend({name:"v-subheader",props:{inset:Boolean},render:function(t){return t("div",{staticClass:"v-subheader",class:Object(g["a"])({"v-subheader--inset":this.inset},this.themeClasses),attrs:this.$attrs,on:this.$listeners},this.$slots.default)}})),xe=Object(h["a"])(u,n,r,!1,null,"6003c7cf",null);e["default"]=xe.exports;f()(xe,{VBtn:yt,VCard:It,VCardActions:At,VCardText:Wt,VCol:Xt,VContainer:Qt,VIcon:ie,VImg:se,VProgressLinear:Rt,VRow:_e,VSubheader:Se})},c7cd:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("fixed")},{fixed:function(){return r(this,"tt","","")}})},c96a:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("small")},{small:function(){return r(this,"small","","")}})},f5f2:function(t){t.exports=JSON.parse('{"jak1":{"fileProgress":{"src_files_total":514,"src_files_finished":71,"src_files_started":174,"data_files_total":584,"data_files_started":4}}}')}}]); -//# sourceMappingURL=about.31420eeb.js.map \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{"0481":function(t,e,i){"use strict";var n=i("23e7"),r=i("a2bf"),a=i("7b0b"),s=i("50c4"),o=i("a691"),c=i("65f0");n({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=a(this),i=s(e.length),n=c(e,0);return n.length=r(n,e,e,i,0,void 0===t?1:o(t)),n}})},"0bc6":function(t,e,i){},"20f6":function(t,e,i){},"25a8":function(t,e,i){},"36a7":function(t,e,i){},4804:function(t,e,i){},"4b85":function(t,e,i){},"4ec9":function(t,e,i){"use strict";var n=i("6d61"),r=i("6566");t.exports=n("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),r)},"615b":function(t,e,i){},6566:function(t,e,i){"use strict";var n=i("9bf2").f,r=i("7c73"),a=i("e2cc"),s=i("0366"),o=i("19aa"),c=i("2266"),l=i("7dd0"),u=i("2626"),h=i("83ab"),d=i("f183").fastKey,f=i("69f3"),p=f.set,v=f.getterFor;t.exports={getConstructor:function(t,e,i,l){var u=t((function(t,n){o(t,u,e),p(t,{type:e,index:r(null),first:void 0,last:void 0,size:0}),h||(t.size=0),void 0!=n&&c(n,t[l],{that:t,AS_ENTRIES:i})})),f=v(e),g=function(t,e,i){var n,r,a=f(t),s=m(t,e);return s?s.value=i:(a.last=s={index:r=d(e,!0),key:e,value:i,previous:n=a.last,next:void 0,removed:!1},a.first||(a.first=s),n&&(n.next=s),h?a.size++:t.size++,"F"!==r&&(a.index[r]=s)),t},m=function(t,e){var i,n=f(t),r=d(e);if("F"!==r)return n.index[r];for(i=n.first;i;i=i.next)if(i.key==e)return i};return a(u.prototype,{clear:function(){var t=this,e=f(t),i=e.index,n=e.first;while(n)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete i[n.index],n=n.next;e.first=e.last=void 0,h?e.size=0:t.size=0},delete:function(t){var e=this,i=f(e),n=m(e,t);if(n){var r=n.next,a=n.previous;delete i.index[n.index],n.removed=!0,a&&(a.next=r),r&&(r.previous=a),i.first==n&&(i.first=r),i.last==n&&(i.last=a),h?i.size--:e.size--}return!!n},forEach:function(t){var e,i=f(this),n=s(t,arguments.length>1?arguments[1]:void 0,3);while(e=e?e.next:i.first){n(e.value,e.key,this);while(e&&e.removed)e=e.previous}},has:function(t){return!!m(this,t)}}),a(u.prototype,i?{get:function(t){var e=m(this,t);return e&&e.value},set:function(t,e){return g(this,0===t?0:t,e)}}:{add:function(t){return g(this,t=0===t?0:t,t)}}),h&&n(u.prototype,"size",{get:function(){return f(this).size}}),u},setStrong:function(t,e,i){var n=e+" Iterator",r=v(e),a=v(n);l(t,e,(function(t,e){p(this,{type:n,target:t,state:r(t),kind:e,last:void 0})}),(function(){var t=a(this),e=t.kind,i=t.last;while(i&&i.removed)i=i.previous;return t.target&&(t.last=i=i?i.next:t.state.first)?"keys"==e?{value:i.key,done:!1}:"values"==e?{value:i.value,done:!1}:{value:[i.key,i.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),i?"entries":"values",!i,!0),u(e)}}},"6d61":function(t,e,i){"use strict";var n=i("23e7"),r=i("da84"),a=i("94ca"),s=i("6eeb"),o=i("f183"),c=i("2266"),l=i("19aa"),u=i("861d"),h=i("d039"),d=i("1c7e"),f=i("d44e"),p=i("7156");t.exports=function(t,e,i){var v=-1!==t.indexOf("Map"),g=-1!==t.indexOf("Weak"),m=v?"set":"add",b=r[t],y=b&&b.prototype,_=b,S={},x=function(t){var e=y[t];s(y,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(g&&!u(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!u(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(g&&!u(t))&&e.call(this,0===t?0:t)}:function(t,i){return e.call(this,0===t?0:t,i),this})},w=a(t,"function"!=typeof b||!(g||y.forEach&&!h((function(){(new b).entries().next()}))));if(w)_=i.getConstructor(e,t,v,m),o.enable();else if(a(t,!0)){var j=new _,O=j[m](g?{}:-0,1)!=j,k=h((function(){j.has(1)})),C=d((function(t){new b(t)})),L=!g&&h((function(){var t=new b,e=5;while(e--)t[m](e,e);return!t.has(-0)}));C||(_=e((function(e,i){l(e,_,t);var n=p(new b,e,_);return void 0!=i&&c(i,n[m],{that:n,AS_ENTRIES:v}),n})),_.prototype=y,y.constructor=_),(k||L)&&(x("delete"),x("has"),v&&x("get")),(L||O)&&x(m),g&&y.clear&&delete y.clear}return S[t]=_,n({global:!0,forced:_!=b},S),f(_,t),g||i.setStrong(_,t,v),_}},"6ece":function(t,e,i){},7435:function(t,e,i){},"7a34":function(t,e,i){},"86cc":function(t,e,i){},"87cf":function(t,e,i){t.exports=i.p+"img/logo-text-colored.5cda006b.png"},"8a79":function(t,e,i){"use strict";var n=i("23e7"),r=i("06cf").f,a=i("50c4"),s=i("577e"),o=i("5a34"),c=i("1d80"),l=i("ab13"),u=i("c430"),h="".endsWith,d=Math.min,f=l("endsWith"),p=!u&&!f&&!!function(){var t=r(String.prototype,"endsWith");return t&&!t.writable}();n({target:"String",proto:!0,forced:!p&&!f},{endsWith:function(t){var e=s(c(this));o(t);var i=arguments.length>1?arguments[1]:void 0,n=a(e.length),r=void 0===i?n:d(a(i),n),l=s(t);return h?h.call(e,l,r):e.slice(r-l.length,r)===l}})},"8d4f":function(t,e,i){},"8e4b":function(t,e,i){"use strict";i("7a34")},"8efc":function(t,e,i){},"96cf":function(t,e,i){var n=function(t){"use strict";var e,i=Object.prototype,n=i.hasOwnProperty,r="function"===typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",s=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function c(t,e,i){return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch($){c=function(t,e,i){return t[e]=i}}function l(t,e,i,n){var r=e&&e.prototype instanceof g?e:g,a=Object.create(r.prototype),s=new B(n||[]);return a._invoke=O(t,i,s),a}function u(t,e,i){try{return{type:"normal",arg:t.call(e,i)}}catch($){return{type:"throw",arg:$}}}t.wrap=l;var h="suspendedStart",d="suspendedYield",f="executing",p="completed",v={};function g(){}function m(){}function b(){}var y={};c(y,a,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(E([])));S&&S!==i&&n.call(S,a)&&(y=S);var x=b.prototype=g.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function j(t,e){function i(r,a,s,o){var c=u(t[r],t,a);if("throw"!==c.type){var l=c.arg,h=l.value;return h&&"object"===typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,s,o)}),(function(t){i("throw",t,s,o)})):e.resolve(h).then((function(t){l.value=t,s(l)}),(function(t){return i("throw",t,s,o)}))}o(c.arg)}var r;function a(t,n){function a(){return new e((function(e,r){i(t,n,e,r)}))}return r=r?r.then(a,a):a()}this._invoke=a}function O(t,e,i){var n=h;return function(r,a){if(n===f)throw new Error("Generator is already running");if(n===p){if("throw"===r)throw a;return z()}i.method=r,i.arg=a;while(1){var s=i.delegate;if(s){var o=k(s,i);if(o){if(o===v)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(n===h)throw n=p,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);n=f;var c=u(t,e,i);if("normal"===c.type){if(n=i.done?p:d,c.arg===v)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(n=p,i.method="throw",i.arg=c.arg)}}}function k(t,i){var n=t.iterator[i.method];if(n===e){if(i.delegate=null,"throw"===i.method){if(t.iterator["return"]&&(i.method="return",i.arg=e,k(t,i),"throw"===i.method))return v;i.method="throw",i.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var r=u(n,t.iterator,i.arg);if("throw"===r.type)return i.method="throw",i.arg=r.arg,i.delegate=null,v;var a=r.arg;return a?a.done?(i[t.resultName]=a.value,i.next=t.nextLoc,"return"!==i.method&&(i.method="next",i.arg=e),i.delegate=null,v):a:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,v)}function C(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function B(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function E(t){if(t){var i=t[a];if(i)return i.call(t);if("function"===typeof t.next)return t;if(!isNaN(t.length)){var r=-1,s=function i(){while(++r=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var c=n.call(s,"catchLoc"),l=n.call(s,"finallyLoc");if(c&&l){if(this.prev=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--e){var i=this.tryEntries[e];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),L(i),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var i=this.tryEntries[e];if(i.tryLoc===t){var n=i.completion;if("throw"===n.type){var r=n.arg;L(i)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,i,n){return this.delegate={iterator:E(t),resultName:i,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=n}catch(r){"object"===typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},9911:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("link")},{link:function(t){return r(this,"a","href",t)}})},a2bf:function(t,e,i){"use strict";var n=i("e8b5"),r=i("50c4"),a=i("0366"),s=function(t,e,i,o,c,l,u,h){var d,f=c,p=0,v=!!u&&a(u,h,3);while(p0&&n(d))f=s(t,e,d,r(d.length),f,l-1)-1;else{if(f>=9007199254740991)throw TypeError("Exceed the acceptable array length");t[f]=d}f++}p++}return f};t.exports=s},bb51:function(t,e,i){"use strict";i.r(e);var n=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-container",{attrs:{fluid:""}},[n("v-row",{staticClass:"bg-img",attrs:{justify:"center",align:"center"}},[n("v-col",{attrs:{cols:"12",align:"center"}},[n("v-img",{attrs:{"max-height":"150","max-width":"250",src:i("87cf")}}),n("br"),n("h4",[t._v(" Reviving the Language that Brought us the Jak & Daxter Series ")]),n("br"),n("v-row",{attrs:{justify:"center"}},[n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"#project-status",rounded:"",color:"primary"}},[n("v-icon",[t._v("mdi-calendar-check")]),t._v(" Project Status ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{rounded:"",color:"secondary",href:"#recent-updates"}},[n("v-icon",[t._v("mdi-update")]),t._v(" Recent Updates ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"/jak-project/api-docs.html",target:"_blank",rounded:"",color:"deep-purple"}},[n("v-icon",[t._v("mdi-file-document")]),t._v(" Documentation ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"https://github.com/water111/jak-project",target:"_blank",rounded:"",color:"accent"}},[n("v-icon",[t._v("mdi-git")]),t._v(" Contribute ")],1)],1)],1)],1)],1),n("v-row",[n("v-container",[n("v-row",{staticStyle:{"margin-top":"3em"},attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h1",{staticClass:"orange--text text--darken-1",attrs:{id:"project-status"}},[t._v(" Project Status ")])])],1),n("v-row",{attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h2",{staticClass:"orange--text text--lighten-3"},[t._v("Jak 1 - Black Label")])])],1),n("v-row",{attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{cols:"10"}},[n("v-subheader",[t._v("Decompilation")]),n("v-progress-linear",{attrs:{color:"green","buffer-value":"0",value:t.jak1BlackLabelStatus.srcFilesFinishedValue,stream:"",height:"25"}},[t._v(" Source Files Finished - "+t._s(t.jak1BlackLabelStatus.srcFilesFinished)+" / "+t._s(t.jak1BlackLabelStatus.srcFilesTotal)+" ")]),n("br"),n("v-progress-linear",{attrs:{color:"yellow","buffer-value":"0",value:t.jak1BlackLabelStatus.srcFilesStartedValue,stream:"",height:"25"}},[t._v(" Source Files Started - "+t._s(t.jak1BlackLabelStatus.srcFilesStarted)+" / "+t._s(t.jak1BlackLabelStatus.srcFilesTotal)+" ")]),n("br"),n("v-progress-linear",{attrs:{color:"teal","buffer-value":"0",value:t.jak1BlackLabelStatus.dataFilesStartedValue,stream:"",height:"25"}},[t._v(" Data Files Started - "+t._s(t.jak1BlackLabelStatus.dataFilesStarted)+" / "+t._s(t.jak1BlackLabelStatus.dataFilesTotal)+" ")])],1)],1),n("v-row",{staticStyle:{"margin-top":"5em"},attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h1",{staticClass:"orange--text text--darken-1",attrs:{id:"recent-updates"}},[t._v(" Recent Updates ")])])],1),n("v-row",{staticStyle:{"margin-bottom":"10em"},attrs:{justify:"center"}},t._l(t.recentPRs,(function(e,i){return n("v-col",{key:"pr"-i,attrs:{cols:"4"}},[n("v-card",[n("v-card-text",{staticStyle:{"overflow-y":"auto",height:"300px"}},[n("p",{staticClass:"text-h5 orange--text text--lighten-3"},[t._v(" "+t._s(e.title)+" ")]),n("p",[t._v(" "+t._s(e.user.login)+" ")]),n("div",{staticClass:"text--primary"},[n("pre",{staticClass:"wrapped-pre"},[t._v(t._s(e.body))])])]),n("v-card-actions",[n("v-btn",{attrs:{text:"",color:"accent",href:e.html_url,target:"_blank"}},[t._v(" View Change ")])],1)],1)],1)})),1)],1)],1)],1)},r=[];i("d3b7");function a(t,e,i,n,r,a,s){try{var o=t[a](s),c=o.value}catch(l){return void i(l)}o.done?e(c):Promise.resolve(c).then(n,r)}function s(t){return function(){var e=this,i=arguments;return new Promise((function(n,r){var s=t.apply(e,i);function o(t){a(s,n,r,o,c,"next",t)}function c(t){a(s,n,r,o,c,"throw",t)}o(void 0)}))}}i("fb6a"),i("96cf");var o=i("f5f2"),c=o,l={name:"Home",components:{},data:function(){return{recentPRs:[],jak1BlackLabelStatus:{srcFilesTotal:c.jak1.fileProgress.src_files_total,srcFilesFinished:c.jak1.fileProgress.src_files_finished,srcFilesFinishedValue:c.jak1.fileProgress.src_files_finished/c.jak1.fileProgress.src_files_total*100,srcFilesStarted:c.jak1.fileProgress.src_files_started,srcFilesStartedValue:c.jak1.fileProgress.src_files_started/c.jak1.fileProgress.src_files_total*100,dataFilesTotal:c.jak1.fileProgress.data_files_total,dataFilesStarted:c.jak1.fileProgress.data_files_started,dataFilesStartedValue:c.jak1.fileProgress.data_files_started/c.jak1.fileProgress.data_files_total*100}}},mounted:function(){var t=s(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,this.loadRecentPRs();case 2:case"end":return t.stop()}}),t,this)})));function e(){return t.apply(this,arguments)}return e}(),methods:{truncateString:function(t,e){return t.length<=e?t:t.slice(0,e)+"..."},loadRecentPRs:function(){var t=s(regeneratorRuntime.mark((function t(){var e,i,n,r,a;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,fetch("https://api.github.com/search/issues?q=repo:water111/jak-project+is:pr+is:merged&sort=updated");case 2:return e=t.sent,t.next=5,e.json();case 5:for(i=t.sent,n=9,r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return"string"===typeof e.style?(Object(S["b"])("style must be an object",this),e):"string"===typeof e.class?(Object(S["b"])("class must be an object",this),e):(Object(x["d"])(t)?e.style=Object(g["a"])(Object(g["a"])({},e.style),{},{"background-color":"".concat(t),"border-color":"".concat(t)}):t&&(e.class=Object(g["a"])(Object(g["a"])({},e.class),{},Object(_["a"])({},t,!0))),e)},setTextColor:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("string"===typeof e.style)return Object(S["b"])("style must be an object",this),e;if("string"===typeof e.class)return Object(S["b"])("class must be an object",this),e;if(Object(x["d"])(t))e.style=Object(g["a"])(Object(g["a"])({},e.style),{},{color:"".concat(t),"caret-color":"".concat(t)});else if(t){var i=t.toString().trim().split(" ",2),n=Object(v["a"])(i,2),r=n[0],a=n[1];e.class=Object(g["a"])(Object(g["a"])({},e.class),{},Object(_["a"])({},r+"--text",!0)),a&&(e.class["text--"+a]=!0)}return e}}}),j=m["a"].extend({name:"elevatable",props:{elevation:[Number,String]},computed:{computedElevation:function(){return this.elevation},elevationClasses:function(){var t=this.computedElevation;return null==t||isNaN(parseInt(t))?{}:Object(_["a"])({},"elevation-".concat(this.elevation),!0)}}}),O=i("80d2"),k=m["a"].extend({name:"measurable",props:{height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},computed:{measurableStyles:function(){var t={},e=Object(O["d"])(this.height),i=Object(O["d"])(this.minHeight),n=Object(O["d"])(this.minWidth),r=Object(O["d"])(this.maxHeight),a=Object(O["d"])(this.maxWidth),s=Object(O["d"])(this.width);return e&&(t.height=e),i&&(t.minHeight=i),n&&(t.minWidth=n),r&&(t.maxHeight=r),a&&(t.maxWidth=a),s&&(t.width=s),t}}}),C=(i("a4d3"),i("e01a"),i("d28b"),i("3ca3"),i("ddb0"),i("06c5"));function L(t,e){var i="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=Object(C["a"])(t))||e&&t&&"number"===typeof t.length){i&&(t=i);var n=0,r=function(){};return{s:r,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==i["return"]||i["return"]()}finally{if(o)throw a}}}}i("a15b");var B=m["a"].extend({name:"roundable",props:{rounded:[Boolean,String],tile:Boolean},computed:{roundedClasses:function(){var t=[],e="string"===typeof this.rounded?String(this.rounded):!0===this.rounded;if(this.tile)t.push("rounded-0");else if("string"===typeof e){var i,n=e.split(" "),r=L(n);try{for(r.s();!(i=r.n()).done;){var a=i.value;t.push("rounded-".concat(a))}}catch(s){r.e(s)}finally{r.f()}}else e&&t.push("rounded");return t.length>0?Object(_["a"])({},t.join(" "),!0):{}}}}),E=i("7560"),z=i("58df"),$=Object(z["a"])(y,w,j,k,B,E["a"]).extend({name:"v-sheet",props:{outlined:Boolean,shaped:Boolean,tag:{type:String,default:"div"}},computed:{classes:function(){return Object(g["a"])(Object(g["a"])(Object(g["a"])({"v-sheet":!0,"v-sheet--outlined":this.outlined,"v-sheet--shaped":this.shaped},this.themeClasses),this.elevationClasses),this.roundedClasses)},styles:function(){return this.measurableStyles}},render:function(t){var e={class:this.classes,style:this.styles,on:this.listeners$};return t(this.tag,this.setBackgroundColor(this.color,e),this.$slots.default)}}),T=$;i("99af"),i("8d4f");function P(t,e){if("undefined"!==typeof window&&"IntersectionObserver"in window){var i=e.modifiers||{},n=e.value,r="object"===Object(p["a"])(n)?n:{handler:n,options:{}},a=r.handler,s=r.options,o=new IntersectionObserver((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0;if(t._observe){var r=e.some((function(t){return t.isIntersecting}));!a||i.quiet&&!t._observe.init||i.once&&!r&&t._observe.init||a(e,n,r),r&&i.once?N(t):t._observe.init=!0}}),s);t._observe={init:!1,observer:o},o.observe(t)}}function N(t){t._observe&&(t._observe.observer.unobserve(t),delete t._observe)}var R={inserted:P,unbind:N},F=R,V=w.extend({name:"v-progress-circular",directives:{intersect:F},props:{button:Boolean,indeterminate:Boolean,rotate:{type:[Number,String],default:0},size:{type:[Number,String],default:32},width:{type:[Number,String],default:4},value:{type:[Number,String],default:0}},data:function(){return{radius:20,isVisible:!0}},computed:{calculatedSize:function(){return Number(this.size)+(this.button?8:0)},circumference:function(){return 2*Math.PI*this.radius},classes:function(){return{"v-progress-circular--visible":this.isVisible,"v-progress-circular--indeterminate":this.indeterminate,"v-progress-circular--button":this.button}},normalizedValue:function(){return this.value<0?0:this.value>100?100:parseFloat(this.value)},strokeDashArray:function(){return Math.round(1e3*this.circumference)/1e3},strokeDashOffset:function(){return(100-this.normalizedValue)/100*this.circumference+"px"},strokeWidth:function(){return Number(this.width)/+this.size*this.viewBoxSize*2},styles:function(){return{height:Object(O["d"])(this.calculatedSize),width:Object(O["d"])(this.calculatedSize)}},svgStyles:function(){return{transform:"rotate(".concat(Number(this.rotate),"deg)")}},viewBoxSize:function(){return this.radius/(1-Number(this.width)/+this.size)}},methods:{genCircle:function(t,e){return this.$createElement("circle",{class:"v-progress-circular__".concat(t),attrs:{fill:"transparent",cx:2*this.viewBoxSize,cy:2*this.viewBoxSize,r:this.radius,"stroke-width":this.strokeWidth,"stroke-dasharray":this.strokeDashArray,"stroke-dashoffset":e}})},genSvg:function(){var t=[this.indeterminate||this.genCircle("underlay",0),this.genCircle("overlay",this.strokeDashOffset)];return this.$createElement("svg",{style:this.svgStyles,attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"".concat(this.viewBoxSize," ").concat(this.viewBoxSize," ").concat(2*this.viewBoxSize," ").concat(2*this.viewBoxSize)}},t)},genInfo:function(){return this.$createElement("div",{staticClass:"v-progress-circular__info"},this.$slots.default)},onObserve:function(t,e,i){this.isVisible=i}},render:function(t){return t("div",this.setTextColor(this.color,{staticClass:"v-progress-circular",attrs:{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":this.indeterminate?void 0:this.normalizedValue},class:this.classes,directives:[{name:"intersect",value:this.onObserve}],style:this.styles,on:this.$listeners}),[this.genSvg(),this.genInfo()])}}),I=V;function A(t,e){return function(){return Object(S["c"])("The ".concat(t," component must be used inside a ").concat(e))}}function W(t,e,i){var n=e&&i?{register:A(e,i),unregister:A(e,i)}:null;return m["a"].extend({name:"registrable-inject",inject:Object(_["a"])({},t,{default:n})})}function D(t,e,i){return W(t,e,i).extend({name:"groupable",props:{activeClass:{type:String,default:function(){if(this[t])return this[t].activeClass}},disabled:Boolean},data:function(){return{isActive:!1}},computed:{groupClasses:function(){return this.activeClass?Object(_["a"])({},this.activeClass,this.isActive):{}}},created:function(){this[t]&&this[t].register(this)},beforeDestroy:function(){this[t]&&this[t].unregister(this)},methods:{toggle:function(){this.$emit("change")}}})}D("itemGroup");function H(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"value",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"input";return m["a"].extend({name:"toggleable",model:{prop:e,event:i},props:Object(_["a"])({},e,{required:!1}),data:function(){return{isActive:!!this[e]}},watch:(t={},Object(_["a"])(t,e,(function(t){this.isActive=!!t})),Object(_["a"])(t,"isActive",(function(t){!!t!==this[e]&&this.$emit(i,t)})),t)})}H();var M={absolute:Boolean,bottom:Boolean,fixed:Boolean,left:Boolean,right:Boolean,top:Boolean};function q(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return m["a"].extend({name:"positionable",props:t.length?Object(O["f"])(M,t):M})}var G=q(),J=(i("9911"),i("5319"),i("b0c0"),i("7435"),Symbol("rippleStop")),Y=80;function X(t,e){t.style.transform=e,t.style.webkitTransform=e}function K(t,e){t.style.opacity=e.toString()}function U(t){return"TouchEvent"===t.constructor.name}function Q(t){return"KeyboardEvent"===t.constructor.name}var Z=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=0,r=0;if(!Q(t)){var a=e.getBoundingClientRect(),s=U(t)?t.touches[t.touches.length-1]:t;n=s.clientX-a.left,r=s.clientY-a.top}var o=0,c=.3;e._ripple&&e._ripple.circle?(c=.15,o=e.clientWidth/2,o=i.center?o:o+Math.sqrt(Math.pow(n-o,2)+Math.pow(r-o,2))/4):o=Math.sqrt(Math.pow(e.clientWidth,2)+Math.pow(e.clientHeight,2))/2;var l="".concat((e.clientWidth-2*o)/2,"px"),u="".concat((e.clientHeight-2*o)/2,"px"),h=i.center?l:"".concat(n-o,"px"),d=i.center?u:"".concat(r-o,"px");return{radius:o,scale:c,x:h,y:d,centerX:l,centerY:u}},tt={show:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e._ripple&&e._ripple.enabled){var n=document.createElement("span"),r=document.createElement("span");n.appendChild(r),n.className="v-ripple__container",i.class&&(n.className+=" ".concat(i.class));var a=Z(t,e,i),s=a.radius,o=a.scale,c=a.x,l=a.y,u=a.centerX,h=a.centerY,d="".concat(2*s,"px");r.className="v-ripple__animation",r.style.width=d,r.style.height=d,e.appendChild(n);var f=window.getComputedStyle(e);f&&"static"===f.position&&(e.style.position="relative",e.dataset.previousPosition="static"),r.classList.add("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--visible"),X(r,"translate(".concat(c,", ").concat(l,") scale3d(").concat(o,",").concat(o,",").concat(o,")")),K(r,0),r.dataset.activated=String(performance.now()),setTimeout((function(){r.classList.remove("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--in"),X(r,"translate(".concat(u,", ").concat(h,") scale3d(1,1,1)")),K(r,.25)}),0)}},hide:function(t){if(t&&t._ripple&&t._ripple.enabled){var e=t.getElementsByClassName("v-ripple__animation");if(0!==e.length){var i=e[e.length-1];if(!i.dataset.isHiding){i.dataset.isHiding="true";var n=performance.now()-Number(i.dataset.activated),r=Math.max(250-n,0);setTimeout((function(){i.classList.remove("v-ripple__animation--in"),i.classList.add("v-ripple__animation--out"),K(i,0),setTimeout((function(){var e=t.getElementsByClassName("v-ripple__animation");1===e.length&&t.dataset.previousPosition&&(t.style.position=t.dataset.previousPosition,delete t.dataset.previousPosition),i.parentNode&&t.removeChild(i.parentNode)}),300)}),r)}}}}};function et(t){return"undefined"===typeof t||!!t}function it(t){var e={},i=t.currentTarget;if(i&&i._ripple&&!i._ripple.touched&&!t[J]){if(t[J]=!0,U(t))i._ripple.touched=!0,i._ripple.isTouch=!0;else if(i._ripple.isTouch)return;if(e.center=i._ripple.centered||Q(t),i._ripple.class&&(e.class=i._ripple.class),U(t)){if(i._ripple.showTimerCommit)return;i._ripple.showTimerCommit=function(){tt.show(t,i,e)},i._ripple.showTimer=window.setTimeout((function(){i&&i._ripple&&i._ripple.showTimerCommit&&(i._ripple.showTimerCommit(),i._ripple.showTimerCommit=null)}),Y)}else tt.show(t,i,e)}}function nt(t){var e=t.currentTarget;if(e&&e._ripple){if(window.clearTimeout(e._ripple.showTimer),"touchend"===t.type&&e._ripple.showTimerCommit)return e._ripple.showTimerCommit(),e._ripple.showTimerCommit=null,void(e._ripple.showTimer=setTimeout((function(){nt(t)})));window.setTimeout((function(){e._ripple&&(e._ripple.touched=!1)})),tt.hide(e)}}function rt(t){var e=t.currentTarget;e&&e._ripple&&(e._ripple.showTimerCommit&&(e._ripple.showTimerCommit=null),window.clearTimeout(e._ripple.showTimer))}var at=!1;function st(t){at||t.keyCode!==O["j"].enter&&t.keyCode!==O["j"].space||(at=!0,it(t))}function ot(t){at=!1,nt(t)}function ct(t){!0===at&&(at=!1,nt(t))}function lt(t,e,i){var n=et(e.value);n||tt.hide(t),t._ripple=t._ripple||{},t._ripple.enabled=n;var r=e.value||{};r.center&&(t._ripple.centered=!0),r.class&&(t._ripple.class=e.value.class),r.circle&&(t._ripple.circle=r.circle),n&&!i?(t.addEventListener("touchstart",it,{passive:!0}),t.addEventListener("touchend",nt,{passive:!0}),t.addEventListener("touchmove",rt,{passive:!0}),t.addEventListener("touchcancel",nt),t.addEventListener("mousedown",it),t.addEventListener("mouseup",nt),t.addEventListener("mouseleave",nt),t.addEventListener("keydown",st),t.addEventListener("keyup",ot),t.addEventListener("blur",ct),t.addEventListener("dragstart",nt,{passive:!0})):!n&&i&&ut(t)}function ut(t){t.removeEventListener("mousedown",it),t.removeEventListener("touchstart",it),t.removeEventListener("touchend",nt),t.removeEventListener("touchmove",rt),t.removeEventListener("touchcancel",nt),t.removeEventListener("mouseup",nt),t.removeEventListener("mouseleave",nt),t.removeEventListener("keydown",st),t.removeEventListener("keyup",ot),t.removeEventListener("dragstart",nt),t.removeEventListener("blur",ct)}function ht(t,e,i){lt(t,e,!1)}function dt(t){delete t._ripple,ut(t)}function ft(t,e){if(e.value!==e.oldValue){var i=et(e.oldValue);lt(t,e,i)}}var pt={bind:ht,unbind:dt,update:ft},vt=pt,gt=m["a"].extend({name:"routable",directives:{Ripple:vt},props:{activeClass:String,append:Boolean,disabled:Boolean,exact:{type:Boolean,default:void 0},exactPath:Boolean,exactActiveClass:String,link:Boolean,href:[String,Object],to:[String,Object],nuxt:Boolean,replace:Boolean,ripple:{type:[Boolean,Object],default:null},tag:String,target:String},data:function(){return{isActive:!1,proxyClass:""}},computed:{classes:function(){var t={};return this.to||(this.activeClass&&(t[this.activeClass]=this.isActive),this.proxyClass&&(t[this.proxyClass]=this.isActive)),t},computedRipple:function(){var t;return null!=(t=this.ripple)?t:!this.disabled&&this.isClickable},isClickable:function(){return!this.disabled&&Boolean(this.isLink||this.$listeners.click||this.$listeners["!click"]||this.$attrs.tabindex)},isLink:function(){return this.to||this.href||this.link},styles:function(){return{}}},watch:{$route:"onRouteChange"},methods:{click:function(t){this.$emit("click",t)},generateRouteLink:function(){var t,e,i=this.exact,n=(t={attrs:{tabindex:"tabindex"in this.$attrs?this.$attrs.tabindex:void 0},class:this.classes,style:this.styles,props:{},directives:[{name:"ripple",value:this.computedRipple}]},Object(_["a"])(t,this.to?"nativeOn":"on",Object(g["a"])(Object(g["a"])({},this.$listeners),{},{click:this.click})),Object(_["a"])(t,"ref","link"),t);if("undefined"===typeof this.exact&&(i="/"===this.to||this.to===Object(this.to)&&"/"===this.to.path),this.to){var r=this.activeClass,a=this.exactActiveClass||r;this.proxyClass&&(r="".concat(r," ").concat(this.proxyClass).trim(),a="".concat(a," ").concat(this.proxyClass).trim()),e=this.nuxt?"nuxt-link":"router-link",Object.assign(n.props,{to:this.to,exact:i,exactPath:this.exactPath,activeClass:r,exactActiveClass:a,append:this.append,replace:this.replace})}else e=(this.href?"a":this.tag)||"div","a"===e&&this.href&&(n.attrs.href=this.href);return this.target&&(n.attrs.target=this.target),{tag:e,data:n}},onRouteChange:function(){var t=this;if(this.to&&this.$refs.link&&this.$route){var e="".concat(this.activeClass," ").concat(this.proxyClass||"").trim(),i="_vnode.data.class.".concat(e);this.$nextTick((function(){Object(O["h"])(t.$refs.link,i)&&t.toggle()}))}},toggle:function(){}}}),mt=(i("c96a"),m["a"].extend({name:"sizeable",props:{large:Boolean,small:Boolean,xLarge:Boolean,xSmall:Boolean},computed:{medium:function(){return Boolean(!this.xSmall&&!this.small&&!this.large&&!this.xLarge)},sizeableClasses:function(){return{"v-size--x-small":this.xSmall,"v-size--small":this.small,"v-size--default":this.medium,"v-size--large":this.large,"v-size--x-large":this.xLarge}}}})),bt=Object(z["a"])(T,gt,G,mt,D("btnToggle"),H("inputValue")),yt=bt.extend().extend({name:"v-btn",props:{activeClass:{type:String,default:function(){return this.btnToggle?this.btnToggle.activeClass:""}},block:Boolean,depressed:Boolean,fab:Boolean,icon:Boolean,loading:Boolean,outlined:Boolean,plain:Boolean,retainFocusOnClick:Boolean,rounded:Boolean,tag:{type:String,default:"button"},text:Boolean,tile:Boolean,type:{type:String,default:"button"},value:null},data:function(){return{proxyClass:"v-btn--active"}},computed:{classes:function(){return Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])({"v-btn":!0},gt.options.computed.classes.call(this)),{},{"v-btn--absolute":this.absolute,"v-btn--block":this.block,"v-btn--bottom":this.bottom,"v-btn--disabled":this.disabled,"v-btn--is-elevated":this.isElevated,"v-btn--fab":this.fab,"v-btn--fixed":this.fixed,"v-btn--has-bg":this.hasBg,"v-btn--icon":this.icon,"v-btn--left":this.left,"v-btn--loading":this.loading,"v-btn--outlined":this.outlined,"v-btn--plain":this.plain,"v-btn--right":this.right,"v-btn--round":this.isRound,"v-btn--rounded":this.rounded,"v-btn--router":this.to,"v-btn--text":this.text,"v-btn--tile":this.tile,"v-btn--top":this.top},this.themeClasses),this.groupClasses),this.elevationClasses),this.sizeableClasses)},computedElevation:function(){if(!this.disabled)return j.options.computed.computedElevation.call(this)},computedRipple:function(){var t,e=!this.icon&&!this.fab||{circle:!0};return!this.disabled&&(null!=(t=this.ripple)?t:e)},hasBg:function(){return!this.text&&!this.plain&&!this.outlined&&!this.icon},isElevated:function(){return Boolean(!this.icon&&!this.text&&!this.outlined&&!this.depressed&&!this.disabled&&!this.plain&&(null==this.elevation||Number(this.elevation)>0))},isRound:function(){return Boolean(this.icon||this.fab)},styles:function(){return Object(g["a"])({},this.measurableStyles)}},created:function(){var t=this,e=[["flat","text"],["outline","outlined"],["round","rounded"]];e.forEach((function(e){var i=Object(v["a"])(e,2),n=i[0],r=i[1];t.$attrs.hasOwnProperty(n)&&Object(S["a"])(n,r,t)}))},methods:{click:function(t){!this.retainFocusOnClick&&!this.fab&&t.detail&&this.$el.blur(),this.$emit("click",t),this.btnToggle&&this.toggle()},genContent:function(){return this.$createElement("span",{staticClass:"v-btn__content"},this.$slots.default)},genLoader:function(){return this.$createElement("span",{class:"v-btn__loader"},this.$slots.loader||[this.$createElement(I,{props:{indeterminate:!0,size:23,width:2}})])}},render:function(t){var e=[this.genContent(),this.loading&&this.genLoader()],i=this.generateRouteLink(),n=i.tag,r=i.data,a=this.hasBg?this.setBackgroundColor:this.setTextColor;return"button"===n&&(r.attrs.type=this.type,r.attrs.disabled=this.disabled),r.attrs.value=["string","number"].includes(Object(p["a"])(this.value))?this.value:JSON.stringify(this.value),t(n,this.disabled?r:a(this.color,r),e)}}),_t=(i("0481"),i("615b"),i("6ece"),i("b64b"),{styleList:/;(?![^(]*\))/g,styleProp:/:(.*)/});function St(t){var e,i={},n=L(t.split(_t.styleList));try{for(n.s();!(e=n.n()).done;){var r=e.value,a=r.split(_t.styleProp),s=Object(v["a"])(a,2),o=s[0],c=s[1];o=o.trim(),o&&("string"===typeof c&&(c=c.trim()),i[Object(O["a"])(o)]=c)}}catch(l){n.e(l)}finally{n.f()}return i}function xt(){var t,e={},i=arguments.length;while(i--)for(var n=0,r=Object.keys(arguments[i]);n0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length,n=new Array(i>1?i-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:"top center 0",i=arguments.length>2?arguments[2]:void 0;return{name:t,functional:!0,props:{group:{type:Boolean,default:!1},hideOnLeave:{type:Boolean,default:!1},leaveAbsolute:{type:Boolean,default:!1},mode:{type:String,default:i},origin:{type:String,default:e}},render:function(e,i){var n="transition".concat(i.props.group?"-group":""),r={props:{name:t,mode:i.props.mode},on:{beforeEnter:function(t){t.style.transformOrigin=i.props.origin,t.style.webkitTransformOrigin=i.props.origin}}};return i.props.leaveAbsolute&&(r.on.leave=kt(r.on.leave,(function(t){var e=t.offsetTop,i=t.offsetLeft,n=t.offsetWidth,r=t.offsetHeight;t._transitionInitialStyles={position:t.style.position,top:t.style.top,left:t.style.left,width:t.style.width,height:t.style.height},t.style.position="absolute",t.style.top=e+"px",t.style.left=i+"px",t.style.width=n+"px",t.style.height=r+"px"})),r.on.afterLeave=kt(r.on.afterLeave,(function(t){if(t&&t._transitionInitialStyles){var e=t._transitionInitialStyles,i=e.position,n=e.top,r=e.left,a=e.width,s=e.height;delete t._transitionInitialStyles,t.style.position=i||"",t.style.top=n||"",t.style.left=r||"",t.style.width=a||"",t.style.height=s||""}}))),i.props.hideOnLeave&&(r.on.leave=kt(r.on.leave,(function(t){t._initialDisplay=t.style.display,t.style.display="none"})),r.on.afterLeave=kt(r.on.afterLeave,(function(t){t&&(t.style.display=t._initialDisplay||"")}))),e(n,xt(i.data,r),i.children)}}}function Lt(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"in-out";return{name:t,functional:!0,props:{mode:{type:String,default:i}},render:function(i,n){return i("transition",xt(n.data,{props:{name:t},on:e}),n.children)}}}var Bt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=e?"width":"height",n="offset".concat(Object(O["o"])(i));return{beforeEnter:function(t){t._parent=t.parentNode,t._initialStyle=Object(_["a"])({transition:t.style.transition,overflow:t.style.overflow},i,t.style[i])},enter:function(e){var r=e._initialStyle;e.style.setProperty("transition","none","important"),e.style.overflow="hidden";var a="".concat(e[n],"px");e.style[i]="0",e.offsetHeight,e.style.transition=r.transition,t&&e._parent&&e._parent.classList.add(t),requestAnimationFrame((function(){e.style[i]=a}))},afterEnter:a,enterCancelled:a,leave:function(t){t._initialStyle=Object(_["a"])({transition:"",overflow:t.style.overflow},i,t.style[i]),t.style.overflow="hidden",t.style[i]="".concat(t[n],"px"),t.offsetHeight,requestAnimationFrame((function(){return t.style[i]="0"}))},afterLeave:r,leaveCancelled:r};function r(e){t&&e._parent&&e._parent.classList.remove(t),a(e)}function a(t){var e=t._initialStyle[i];t.style.overflow=t._initialStyle.overflow,null!=e&&(t.style[i]=e),delete t._initialStyle}},Et=(Ct("carousel-transition"),Ct("carousel-reverse-transition"),Ct("tab-transition"),Ct("tab-reverse-transition"),Ct("menu-transition"),Ct("fab-transition","center center","out-in"),Ct("dialog-transition"),Ct("dialog-bottom-transition"),Ct("dialog-top-transition"),Ct("fade-transition")),zt=(Ct("scale-transition"),Ct("scroll-x-transition"),Ct("scroll-x-reverse-transition"),Ct("scroll-y-transition"),Ct("scroll-y-reverse-transition"),Ct("slide-x-transition"));Ct("slide-x-reverse-transition"),Ct("slide-y-transition"),Ct("slide-y-reverse-transition"),Lt("expand-transition",Bt()),Lt("expand-x-transition",Bt("",!0));function $t(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"value",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"change";return m["a"].extend({name:"proxyable",model:{prop:t,event:e},props:Object(_["a"])({},t,{required:!1}),data:function(){return{internalLazyValue:this[t]}},computed:{internalValue:{get:function(){return this.internalLazyValue},set:function(t){t!==this.internalLazyValue&&(this.internalLazyValue=t,this.$emit(e,t))}}},watch:Object(_["a"])({},t,(function(t){this.internalLazyValue=t}))})}var Tt=$t(),Pt=Tt,Nt=Object(z["a"])(w,q(["absolute","fixed","top","bottom"]),Pt,E["a"]),Rt=Nt.extend({name:"v-progress-linear",directives:{intersect:F},props:{active:{type:Boolean,default:!0},backgroundColor:{type:String,default:null},backgroundOpacity:{type:[Number,String],default:null},bufferValue:{type:[Number,String],default:100},color:{type:String,default:"primary"},height:{type:[Number,String],default:4},indeterminate:Boolean,query:Boolean,reverse:Boolean,rounded:Boolean,stream:Boolean,striped:Boolean,value:{type:[Number,String],default:0}},data:function(){return{internalLazyValue:this.value||0,isVisible:!0}},computed:{__cachedBackground:function(){return this.$createElement("div",this.setBackgroundColor(this.backgroundColor||this.color,{staticClass:"v-progress-linear__background",style:this.backgroundStyle}))},__cachedBar:function(){return this.$createElement(this.computedTransition,[this.__cachedBarType])},__cachedBarType:function(){return this.indeterminate?this.__cachedIndeterminate:this.__cachedDeterminate},__cachedBuffer:function(){return this.$createElement("div",{staticClass:"v-progress-linear__buffer",style:this.styles})},__cachedDeterminate:function(){return this.$createElement("div",this.setBackgroundColor(this.color,{staticClass:"v-progress-linear__determinate",style:{width:Object(O["d"])(this.normalizedValue,"%")}}))},__cachedIndeterminate:function(){return this.$createElement("div",{staticClass:"v-progress-linear__indeterminate",class:{"v-progress-linear__indeterminate--active":this.active}},[this.genProgressBar("long"),this.genProgressBar("short")])},__cachedStream:function(){return this.stream?this.$createElement("div",this.setTextColor(this.color,{staticClass:"v-progress-linear__stream",style:{width:Object(O["d"])(100-this.normalizedBuffer,"%")}})):null},backgroundStyle:function(){var t,e=null==this.backgroundOpacity?this.backgroundColor?1:.3:parseFloat(this.backgroundOpacity);return t={opacity:e},Object(_["a"])(t,this.isReversed?"right":"left",Object(O["d"])(this.normalizedValue,"%")),Object(_["a"])(t,"width",Object(O["d"])(Math.max(0,this.normalizedBuffer-this.normalizedValue),"%")),t},classes:function(){return Object(g["a"])({"v-progress-linear--absolute":this.absolute,"v-progress-linear--fixed":this.fixed,"v-progress-linear--query":this.query,"v-progress-linear--reactive":this.reactive,"v-progress-linear--reverse":this.isReversed,"v-progress-linear--rounded":this.rounded,"v-progress-linear--striped":this.striped,"v-progress-linear--visible":this.isVisible},this.themeClasses)},computedTransition:function(){return this.indeterminate?Et:zt},isReversed:function(){return this.$vuetify.rtl!==this.reverse},normalizedBuffer:function(){return this.normalize(this.bufferValue)},normalizedValue:function(){return this.normalize(this.internalLazyValue)},reactive:function(){return Boolean(this.$listeners.change)},styles:function(){var t={};return this.active||(t.height=0),this.indeterminate||100===parseFloat(this.normalizedBuffer)||(t.width=Object(O["d"])(this.normalizedBuffer,"%")),t}},methods:{genContent:function(){var t=Object(O["i"])(this,"default",{value:this.internalLazyValue});return t?this.$createElement("div",{staticClass:"v-progress-linear__content"},t):null},genListeners:function(){var t=this.$listeners;return this.reactive&&(t.click=this.onClick),t},genProgressBar:function(t){return this.$createElement("div",this.setBackgroundColor(this.color,{staticClass:"v-progress-linear__indeterminate",class:Object(_["a"])({},t,!0)}))},onClick:function(t){if(this.reactive){var e=this.$el.getBoundingClientRect(),i=e.width;this.internalValue=t.offsetX/i*100}},onObserve:function(t,e,i){this.isVisible=i},normalize:function(t){return t<0?0:t>100?100:parseFloat(t)}},render:function(t){var e={staticClass:"v-progress-linear",attrs:{role:"progressbar","aria-valuemin":0,"aria-valuemax":this.normalizedBuffer,"aria-valuenow":this.indeterminate?void 0:this.normalizedValue},class:this.classes,directives:[{name:"intersect",value:this.onObserve}],style:{bottom:this.bottom?0:void 0,height:this.active?Object(O["d"])(this.height):0,top:this.top?0:void 0},on:this.genListeners()};return t("div",e,[this.__cachedStream,this.__cachedBackground,this.__cachedBuffer,this.__cachedBar,this.genContent()])}}),Ft=Rt,Vt=m["a"].extend().extend({name:"loadable",props:{loading:{type:[Boolean,String],default:!1},loaderHeight:{type:[Number,String],default:2}},methods:{genProgress:function(){return!1===this.loading?null:this.$slots.progress||this.$createElement(Ft,{props:{absolute:!0,color:!0===this.loading||""===this.loading?this.color||"primary":this.loading,height:this.loaderHeight,indeterminate:!0}})}}}),It=Object(z["a"])(Vt,gt,T).extend({name:"v-card",props:{flat:Boolean,hover:Boolean,img:String,link:Boolean,loaderHeight:{type:[Number,String],default:4},raised:Boolean},computed:{classes:function(){return Object(g["a"])(Object(g["a"])({"v-card":!0},gt.options.computed.classes.call(this)),{},{"v-card--flat":this.flat,"v-card--hover":this.hover,"v-card--link":this.isClickable,"v-card--loading":this.loading,"v-card--disabled":this.disabled,"v-card--raised":this.raised},T.options.computed.classes.call(this))},styles:function(){var t=Object(g["a"])({},T.options.computed.styles.call(this));return this.img&&(t.background='url("'.concat(this.img,'") center center / cover no-repeat')),t}},methods:{genProgress:function(){var t=Vt.options.methods.genProgress.call(this);return t?this.$createElement("div",{staticClass:"v-card__progress",key:"progress"},[t]):null}},render:function(t){var e=this.generateRouteLink(),i=e.tag,n=e.data;return n.style=this.styles,this.isClickable&&(n.attrs=n.attrs||{},n.attrs.tabindex=0),t(i,this.setBackgroundColor(this.color,n),[this.genProgress(),this.$slots.default])}}),At=Object(O["e"])("v-card__actions"),Wt=(Object(O["e"])("v-card__subtitle"),Object(O["e"])("v-card__text")),Dt=(Object(O["e"])("v-card__title"),i("4ec9"),i("159b"),i("2ca0"),i("4b85"),["sm","md","lg","xl"]),Ht=function(){return Dt.reduce((function(t,e){return t[e]={type:[Boolean,String,Number],default:!1},t}),{})}(),Mt=function(){return Dt.reduce((function(t,e){return t["offset"+Object(O["o"])(e)]={type:[String,Number],default:null},t}),{})}(),qt=function(){return Dt.reduce((function(t,e){return t["order"+Object(O["o"])(e)]={type:[String,Number],default:null},t}),{})}(),Gt={col:Object.keys(Ht),offset:Object.keys(Mt),order:Object.keys(qt)};function Jt(t,e,i){var n=t;if(null!=i&&!1!==i){if(e){var r=e.replace(t,"");n+="-".concat(r)}return"col"!==t||""!==i&&!0!==i?(n+="-".concat(i),n.toLowerCase()):n.toLowerCase()}}var Yt=new Map,Xt=m["a"].extend({name:"v-col",functional:!0,props:Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])({cols:{type:[Boolean,String,Number],default:!1}},Ht),{},{offset:{type:[String,Number],default:null}},Mt),{},{order:{type:[String,Number],default:null}},qt),{},{alignSelf:{type:String,default:null,validator:function(t){return["auto","start","end","center","baseline","stretch"].includes(t)}},tag:{type:String,default:"div"}}),render:function(t,e){var i=e.props,n=e.data,r=e.children,a=(e.parent,"");for(var s in i)a+=String(i[s]);var o=Yt.get(a);return o||function(){var t,e;for(e in o=[],Gt)Gt[e].forEach((function(t){var n=i[t],r=Jt(e,t,n);r&&o.push(r)}));var n=o.some((function(t){return t.startsWith("col-")}));o.push((t={col:!n||!i.cols},Object(_["a"])(t,"col-".concat(i.cols),i.cols),Object(_["a"])(t,"offset-".concat(i.offset),i.offset),Object(_["a"])(t,"order-".concat(i.order),i.order),Object(_["a"])(t,"align-self-".concat(i.alignSelf),i.alignSelf),t)),Yt.set(a,o)}(),t(i.tag,xt(n,{class:o}),r)}});i("4de4"),i("20f6");function Kt(t){return m["a"].extend({name:"v-".concat(t),functional:!0,props:{id:String,tag:{type:String,default:"div"}},render:function(e,i){var n=i.props,r=i.data,a=i.children;r.staticClass="".concat(t," ").concat(r.staticClass||"").trim();var s=r.attrs;if(s){r.attrs={};var o=Object.keys(s).filter((function(t){if("slot"===t)return!1;var e=s[t];return t.startsWith("data-")?(r.attrs[t]=e,!1):e||"string"===typeof e}));o.length&&(r.staticClass+=" ".concat(o.join(" ")))}return n.id&&(r.domProps=r.domProps||{},r.domProps.id=n.id),e(n.tag,r,a)}})}var Ut,Qt=Kt("container").extend({name:"v-container",functional:!0,props:{id:String,tag:{type:String,default:"div"},fluid:{type:Boolean,default:!1}},render:function(t,e){var i,n=e.props,r=e.data,a=e.children,s=r.attrs;return s&&(r.attrs={},i=Object.keys(s).filter((function(t){if("slot"===t)return!1;var e=s[t];return t.startsWith("data-")?(r.attrs[t]=e,!1):e||"string"===typeof e}))),n.id&&(r.domProps=r.domProps||{},r.domProps.id=n.id),t(n.tag,xt(r,{staticClass:"container",class:Array({"container--fluid":n.fluid}).concat(i||[])}),a)}});i("2532"),i("7db0"),i("4804");function Zt(t){return["fas","far","fal","fab","fad","fak"].some((function(e){return t.includes(e)}))}function te(t){return/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4}(function(t){t["xSmall"]="12px",t["small"]="16px",t["default"]="24px",t["medium"]="28px",t["large"]="36px",t["xLarge"]="40px"})(Ut||(Ut={}));var ee=Object(z["a"])(y,w,mt,E["a"]).extend({name:"v-icon",props:{dense:Boolean,disabled:Boolean,left:Boolean,right:Boolean,size:[Number,String],tag:{type:String,required:!1,default:"i"}},computed:{medium:function(){return!1},hasClickListener:function(){return Boolean(this.listeners$.click||this.listeners$["!click"])}},methods:{getIcon:function(){var t="";return this.$slots.default&&(t=this.$slots.default[0].text.trim()),Object(O["n"])(this,t)},getSize:function(){var t={xSmall:this.xSmall,small:this.small,medium:this.medium,large:this.large,xLarge:this.xLarge},e=Object(O["k"])(t).find((function(e){return t[e]}));return e&&Ut[e]||Object(O["d"])(this.size)},getDefaultData:function(){return{staticClass:"v-icon notranslate",class:{"v-icon--disabled":this.disabled,"v-icon--left":this.left,"v-icon--link":this.hasClickListener,"v-icon--right":this.right,"v-icon--dense":this.dense},attrs:Object(g["a"])({"aria-hidden":!this.hasClickListener,disabled:this.hasClickListener&&this.disabled,type:this.hasClickListener?"button":void 0},this.attrs$),on:this.listeners$}},getSvgWrapperData:function(){var t=this.getSize(),e=Object(g["a"])(Object(g["a"])({},this.getDefaultData()),{},{style:t?{fontSize:t,height:t,width:t}:void 0});return this.applyColors(e),e},applyColors:function(t){t.class=Object(g["a"])(Object(g["a"])({},t.class),this.themeClasses),this.setTextColor(this.color,t)},renderFontIcon:function(t,e){var i=[],n=this.getDefaultData(),r="material-icons",a=t.indexOf("-"),s=a<=-1;s?i.push(t):(r=t.slice(0,a),Zt(r)&&(r="")),n.class[r]=!0,n.class[t]=!s;var o=this.getSize();return o&&(n.style={fontSize:o}),this.applyColors(n),e(this.hasClickListener?"button":this.tag,n,i)},renderSvgIcon:function(t,e){var i={class:"v-icon__svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":!0}},n=this.getSize();return n&&(i.style={fontSize:n,height:n,width:n}),e(this.hasClickListener?"button":"span",this.getSvgWrapperData(),[e("svg",i,[e("path",{attrs:{d:t}})])])},renderSvgIconComponent:function(t,e){var i={class:{"v-icon__component":!0}},n=this.getSize();n&&(i.style={fontSize:n,height:n,width:n}),this.applyColors(i);var r=t.component;return i.props=t.props,i.nativeOn=i.on,e(this.hasClickListener?"button":"span",this.getSvgWrapperData(),[e(r,i)])}},render:function(t){var e=this.getIcon();return"string"===typeof e?te(e)?this.renderSvgIcon(e,t):this.renderFontIcon(e,t):this.renderSvgIconComponent(e,t)}}),ie=m["a"].extend({name:"v-icon",$_wrapperFor:ee,functional:!0,render:function(t,e){var i=e.data,n=e.children,r="";return i.domProps&&(r=i.domProps.textContent||i.domProps.innerHTML||r,delete i.domProps.textContent,delete i.domProps.innerHTML),t(ee,i,r?[r]:n)}}),ne=(i("8a79"),i("8efc"),i("36a7"),Object(z["a"])(k).extend({name:"v-responsive",props:{aspectRatio:[String,Number],contentClass:String},computed:{computedAspectRatio:function(){return Number(this.aspectRatio)},aspectStyle:function(){return this.computedAspectRatio?{paddingBottom:1/this.computedAspectRatio*100+"%"}:void 0},__cachedSizer:function(){return this.aspectStyle?this.$createElement("div",{style:this.aspectStyle,staticClass:"v-responsive__sizer"}):[]}},methods:{genContent:function(){return this.$createElement("div",{staticClass:"v-responsive__content",class:this.contentClass},this.$slots.default)}},render:function(t){return t("div",{staticClass:"v-responsive",style:this.measurableStyles,on:this.$listeners},[this.__cachedSizer,this.genContent()])}})),re=ne,ae="undefined"!==typeof window&&"IntersectionObserver"in window,se=Object(z["a"])(re,E["a"]).extend({name:"v-img",directives:{intersect:F},props:{alt:String,contain:Boolean,eager:Boolean,gradient:String,lazySrc:String,options:{type:Object,default:function(){return{root:void 0,rootMargin:void 0,threshold:void 0}}},position:{type:String,default:"center center"},sizes:String,src:{type:[String,Object],default:""},srcset:String,transition:{type:[Boolean,String],default:"fade-transition"}},data:function(){return{currentSrc:"",image:null,isLoading:!0,calculatedAspectRatio:void 0,naturalWidth:void 0,hasError:!1}},computed:{computedAspectRatio:function(){return Number(this.normalisedSrc.aspect||this.calculatedAspectRatio)},normalisedSrc:function(){return this.src&&"object"===Object(p["a"])(this.src)?{src:this.src.src,srcset:this.srcset||this.src.srcset,lazySrc:this.lazySrc||this.src.lazySrc,aspect:Number(this.aspectRatio||this.src.aspect)}:{src:this.src,srcset:this.srcset,lazySrc:this.lazySrc,aspect:Number(this.aspectRatio||0)}},__cachedImage:function(){if(!(this.normalisedSrc.src||this.normalisedSrc.lazySrc||this.gradient))return[];var t=[],e=this.isLoading?this.normalisedSrc.lazySrc:this.currentSrc;this.gradient&&t.push("linear-gradient(".concat(this.gradient,")")),e&&t.push('url("'.concat(e,'")'));var i=this.$createElement("div",{staticClass:"v-image__image",class:{"v-image__image--preload":this.isLoading,"v-image__image--contain":this.contain,"v-image__image--cover":!this.contain},style:{backgroundImage:t.join(", "),backgroundPosition:this.position},key:+this.isLoading});return this.transition?this.$createElement("transition",{attrs:{name:this.transition,mode:"in-out"}},[i]):i}},watch:{src:function(){this.isLoading?this.loadImage():this.init(void 0,void 0,!0)},"$vuetify.breakpoint.width":"getSrc"},mounted:function(){this.init()},methods:{init:function(t,e,i){if(!ae||i||this.eager){if(this.normalisedSrc.lazySrc){var n=new Image;n.src=this.normalisedSrc.lazySrc,this.pollForSize(n,null)}this.normalisedSrc.src&&this.loadImage()}},onLoad:function(){this.getSrc(),this.isLoading=!1,this.$emit("load",this.src),this.image&&(this.normalisedSrc.src.endsWith(".svg")||this.normalisedSrc.src.startsWith("data:image/svg+xml"))&&(this.image.naturalHeight&&this.image.naturalWidth?(this.naturalWidth=this.image.naturalWidth,this.calculatedAspectRatio=this.image.naturalWidth/this.image.naturalHeight):this.calculatedAspectRatio=1)},onError:function(){this.hasError=!0,this.$emit("error",this.src)},getSrc:function(){this.image&&(this.currentSrc=this.image.currentSrc||this.image.src)},loadImage:function(){var t=this,e=new Image;this.image=e,e.onload=function(){e.decode?e.decode().catch((function(e){Object(S["c"])("Failed to decode image, trying to render anyway\n\n"+"src: ".concat(t.normalisedSrc.src)+(e.message?"\nOriginal error: ".concat(e.message):""),t)})).then(t.onLoad):t.onLoad()},e.onerror=this.onError,this.hasError=!1,this.sizes&&(e.sizes=this.sizes),this.normalisedSrc.srcset&&(e.srcset=this.normalisedSrc.srcset),e.src=this.normalisedSrc.src,this.$emit("loadstart",this.normalisedSrc.src),this.aspectRatio||this.pollForSize(e),this.getSrc()},pollForSize:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=function n(){var r=t.naturalHeight,a=t.naturalWidth;r||a?(e.naturalWidth=a,e.calculatedAspectRatio=a/r):t.complete||!e.isLoading||e.hasError||null==i||setTimeout(n,i)};n()},genContent:function(){var t=re.options.methods.genContent.call(this);return this.naturalWidth&&this._b(t.data,"div",{style:{width:"".concat(this.naturalWidth,"px")}}),t},__genPlaceholder:function(){if(this.$slots.placeholder){var t=this.isLoading?[this.$createElement("div",{staticClass:"v-image__placeholder"},this.$slots.placeholder)]:[];return this.transition?this.$createElement("transition",{props:{appear:!0,name:this.transition}},t):t[0]}}},render:function(t){var e=re.options.render.call(this,t),i=xt(e.data,{staticClass:"v-image",attrs:{"aria-label":this.alt,role:this.alt?"img":void 0},class:this.themeClasses,directives:ae?[{name:"intersect",modifiers:{once:!0},value:{handler:this.init,options:this.options}}]:void 0});return e.children=[this.__cachedSizer,this.__cachedImage,this.__genPlaceholder(),this.genContent()],t(e.tag,i,e.children)}}),oe=["sm","md","lg","xl"],ce=["start","end","center"];function le(t,e){return oe.reduce((function(i,n){return i[t+Object(O["o"])(n)]=e(),i}),{})}var ue=function(t){return[].concat(ce,["baseline","stretch"]).includes(t)},he=le("align",(function(){return{type:String,default:null,validator:ue}})),de=function(t){return[].concat(ce,["space-between","space-around"]).includes(t)},fe=le("justify",(function(){return{type:String,default:null,validator:de}})),pe=function(t){return[].concat(ce,["space-between","space-around","stretch"]).includes(t)},ve=le("alignContent",(function(){return{type:String,default:null,validator:pe}})),ge={align:Object.keys(he),justify:Object.keys(fe),alignContent:Object.keys(ve)},me={align:"align",justify:"justify",alignContent:"align-content"};function be(t,e,i){var n=me[t];if(null!=i){if(e){var r=e.replace(t,"");n+="-".concat(r)}return n+="-".concat(i),n.toLowerCase()}}var ye=new Map,_e=m["a"].extend({name:"v-row",functional:!0,props:Object(g["a"])(Object(g["a"])(Object(g["a"])({tag:{type:String,default:"div"},dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:ue}},he),{},{justify:{type:String,default:null,validator:de}},fe),{},{alignContent:{type:String,default:null,validator:pe}},ve),render:function(t,e){var i=e.props,n=e.data,r=e.children,a="";for(var s in i)a+=String(i[s]);var o=ye.get(a);return o||function(){var t,e;for(e in o=[],ge)ge[e].forEach((function(t){var n=i[t],r=be(e,t,n);r&&o.push(r)}));o.push((t={"no-gutters":i.noGutters,"row--dense":i.dense},Object(_["a"])(t,"align-".concat(i.align),i.align),Object(_["a"])(t,"justify-".concat(i.justify),i.justify),Object(_["a"])(t,"align-content-".concat(i.alignContent),i.alignContent),t)),ye.set(a,o)}(),t(i.tag,xt(n,{staticClass:"row",class:o}),r)}}),Se=(i("0bc6"),Object(z["a"])(E["a"]).extend({name:"v-subheader",props:{inset:Boolean},render:function(t){return t("div",{staticClass:"v-subheader",class:Object(g["a"])({"v-subheader--inset":this.inset},this.themeClasses),attrs:this.$attrs,on:this.$listeners},this.$slots.default)}})),xe=Object(h["a"])(u,n,r,!1,null,"6003c7cf",null);e["default"]=xe.exports;f()(xe,{VBtn:yt,VCard:It,VCardActions:At,VCardText:Wt,VCol:Xt,VContainer:Qt,VIcon:ie,VImg:se,VProgressLinear:Rt,VRow:_e,VSubheader:Se})},c7cd:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("fixed")},{fixed:function(){return r(this,"tt","","")}})},c96a:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("small")},{small:function(){return r(this,"small","","")}})},f5f2:function(t){t.exports=JSON.parse('{"jak1":{"fileProgress":{"src_files_total":514,"src_files_finished":73,"src_files_started":176,"data_files_total":584,"data_files_started":4}}}')}}]); +//# sourceMappingURL=about.a4656f69.js.map \ No newline at end of file diff --git a/docs/js/about.31420eeb.js.map b/docs/js/about.a4656f69.js.map similarity index 99% rename from docs/js/about.31420eeb.js.map rename to docs/js/about.a4656f69.js.map index 0f4519903c..1ea874bd4b 100644 --- a/docs/js/about.31420eeb.js.map +++ b/docs/js/about.a4656f69.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.array.flat.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./src/assets/img/logo-text-colored.png","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///./src/views/Home.vue?6e6e","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/modules/es.string.link.js","webpack:///./node_modules/core-js/internals/flatten-into-array.js","webpack:///./src/views/Home.vue?7e75","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./src/progress.js","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?493c","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///../../../src/mixins/colorable/index.ts","webpack:///../../../src/mixins/elevatable/index.ts","webpack:///../../../src/mixins/measurable/index.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///../../../src/mixins/roundable/index.ts","webpack:///../../../src/components/VSheet/VSheet.ts","webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///../../../src/mixins/registrable/index.ts","webpack:///../../../src/mixins/groupable/index.ts","webpack:///../../../src/mixins/toggleable/index.ts","webpack:///../../../src/mixins/positionable/index.ts","webpack:///../../../src/directives/ripple/index.ts","webpack:///../../../src/mixins/routable/index.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../../src/components/VBtn/VBtn.ts","webpack:///../../src/util/mergeData.ts","webpack:///../../../src/components/transitions/createTransition.ts","webpack:///../../../src/components/transitions/expand-transition.ts","webpack:///../../../src/components/transitions/index.ts","webpack:///../../../src/mixins/proxyable/index.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///../../../src/mixins/loadable/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///./src/views/Home.vue?1dce","webpack:///./node_modules/core-js/modules/es.string.fixed.js","webpack:///./node_modules/core-js/modules/es.string.small.js"],"names":["$","flattenIntoArray","toObject","toLength","toInteger","arraySpeciesCreate","target","proto","flat","depthArg","arguments","length","undefined","O","this","sourceLen","A","collection","collectionStrong","module","exports","init","defineProperty","f","create","redefineAll","bind","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","set","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","C","that","iterable","type","index","first","last","size","AS_ENTRIES","getInternalState","define","key","value","previous","state","entry","getEntry","next","removed","prototype","clear","data","prev","forEach","callbackfn","boundFunction","has","get","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","done","global","isForced","redefine","InternalMetadataModule","isObject","fails","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","indexOf","IS_WEAK","NativeConstructor","NativePrototype","Constructor","exported","fixMethod","KEY","nativeMethod","call","REPLACE","entries","enable","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","constructor","forced","getOwnPropertyDescriptor","toString","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","$endsWith","endsWith","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","String","writable","searchString","endPosition","len","end","search","slice","runtime","Op","Object","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","obj","enumerable","configurable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","__await","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iteratorMethod","isNaN","i","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","object","reverse","pop","skipTempReset","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","createHTML","forcedStringHTMLMethod","link","url","isArray","original","source","start","depth","mapper","thisArg","element","targetIndex","sourceIndex","mapFn","_vm","_h","$createElement","_c","_self","attrs","staticClass","_v","staticStyle","jak1BlackLabelStatus","srcFilesFinishedValue","_s","srcFilesFinished","srcFilesTotal","srcFilesStartedValue","srcFilesStarted","dataFilesStartedValue","dataFilesStarted","dataFilesTotal","_l","pr","title","user","login","body","html_url","staticRenderFns","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","apply","projectProgress","require","components","recentPRs","mounted","methods","truncateString","str","num","loadRecentPRs","makeWatcher","$data","val","attrs$","listeners$","created","immediate","props","color","setBackgroundColor","console","setTextColor","colorName","elevation","Number","computed","computedElevation","elevationClasses","parseInt","height","maxHeight","maxWidth","minHeight","minWidth","width","measurableStyles","styles","_createForOfIteratorHelper","o","allowArrayLike","it","Array","unsupportedIterableToArray","F","s","n","e","_e","normalCompletion","didErr","step","_e2","rounded","Boolean","tile","roundedClasses","composite","mixins","outlined","shaped","tag","default","classes","render","class","style","on","h","$slots","inserted","window","modifiers","binding","handler","options","observer","IntersectionObserver","el","isIntersecting","unbind","observe","Intersect","directives","intersect","button","indeterminate","rotate","radius","isVisible","calculatedSize","circumference","normalizedValue","parseFloat","strokeDashArray","strokeDashOffset","strokeWidth","svgStyles","transform","viewBoxSize","genCircle","fill","cx","cy","r","offset","genSvg","children","xmlns","viewBox","genInfo","onObserve","role","$listeners","generateWarning","child","defaultImpl","register","unregister","parent","inject","activeClass","namespace","disabled","isActive","groupClasses","beforeDestroy","toggle","factory","prop","event","model","required","watch","$emit","availableProps","absolute","bottom","fixed","left","right","top","selected","rippleStop","DELAY_RIPPLE","opacity","isTouchEvent","isKeyboardEvent","calculate","localX","localY","scale","centerX","centerY","x","y","ripples","show","container","document","animation","performance","setTimeout","hide","diff","delay","isRippleEnabled","rippleShow","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyboardRippleHide","focusRippleHide","updateRipple","enabled","passive","removeListeners","directive","update","wasEnabled","Ripple","append","exact","exactPath","exactActiveClass","href","to","nuxt","replace","ripple","proxyClass","computedRipple","isClickable","isLink","$attrs","$route","click","generateRouteLink","tabindex","path","onRouteChange","$refs","large","small","xLarge","xSmall","medium","sizeableClasses","baseMixins","btnToggle","block","depressed","fab","icon","loading","plain","retainFocusOnClick","text","defaultRipple","circle","hasBg","isElevated","isRound","breakingProps","replacement","$el","genContent","genLoader","loader","setColor","includes","JSON","pattern","styleList","styleProp","parseStyle","styleMap","mergeTarget","mergeClasses","mergeStyles","mergeListeners","dest","mergeTransitions","origin","functional","group","hideOnLeave","leaveAbsolute","mode","beforeEnter","offsetHeight","position","offsetTop","offsetLeft","offsetWidth","mergeData","functions","expandedParentClass","sizeProperty","offsetProperty","transition","overflow","enter","initialStyle","requestAnimationFrame","afterEnter","enterCancelled","leave","afterLeave","leaveCancelled","resetStyles","VFadeTransition","createSimpleTransition","VSlideXTransition","createJavascriptTransition","internalLazyValue","internalValue","Proxyable","active","backgroundColor","backgroundOpacity","bufferValue","query","stream","striped","__cachedBackground","backgroundStyle","__cachedBar","__cachedBarType","__cachedBuffer","__cachedDeterminate","__cachedIndeterminate","genProgressBar","__cachedStream","isReversed","normalizedBuffer","themeClasses","computedTransition","$vuetify","rtl","normalize","reactive","slot","genListeners","listeners","onClick","loaderHeight","genProgress","progress","hover","img","raised","VCardActions","VCardText","breakpoints","breakpointProps","offsetProps","orderProps","propMap","col","order","breakpointClass","className","breakpoint","cache","cols","alignSelf","validator","cacheKey","classList","hasColClasses","id","fluid","isFontAwesome5","some","iconType","isSvgPath","test","SIZE_MAP","dense","hasClickListener","getIcon","iconName","getSize","sizes","explicitSize","getDefaultData","getSvgWrapperData","fontSize","wrapperData","applyColors","renderFontIcon","newChildren","delimiterIndex","isMaterialIcon","renderSvgIcon","svgData","d","renderSvgIconComponent","component","$_wrapperFor","aspectRatio","contentClass","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","hasIntersect","alt","contain","eager","gradient","lazySrc","root","rootMargin","threshold","src","srcset","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","loadImage","lazyImg","onLoad","startsWith","naturalHeight","onError","getSrc","pollForSize","timeout","poll","content","__genPlaceholder","placeholder","appear","node","once","ALIGNMENT","makeProps","prefix","def","alignValidator","alignProps","justifyValidator","justifyProps","alignContentValidator","alignContentProps","align","justify","alignContent","classMap","noGutters","inset","VBtn","VCard","VCol","VContainer","VIcon","VImg","VProgressLinear","VRow","VSubheader"],"mappings":"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","file":"js/about.31420eeb.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","module.exports = __webpack_public_path__ + \"img/logo-text-colored.5cda006b.png\";","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar $endsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=6003c7cf&scoped=true&lang=css&\"","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{staticClass:\"bg-img\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"align\":\"center\"}},[_c('v-img',{attrs:{\"max-height\":\"150\",\"max-width\":\"250\",\"src\":require(\"@/assets/img/logo-text-colored.png\")}}),_c('br'),_c('h4',[_vm._v(\" Reviving the Language that Brought us the Jak & Daxter Series \")]),_c('br'),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"#project-status\",\"rounded\":\"\",\"color\":\"primary\"}},[_c('v-icon',[_vm._v(\"mdi-calendar-check\")]),_vm._v(\" Project Status \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"rounded\":\"\",\"color\":\"secondary\",\"href\":\"#recent-updates\"}},[_c('v-icon',[_vm._v(\"mdi-update\")]),_vm._v(\" Recent Updates \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"/jak-project/api-docs.html\",\"target\":\"_blank\",\"rounded\":\"\",\"color\":\"deep-purple\"}},[_c('v-icon',[_vm._v(\"mdi-file-document\")]),_vm._v(\" Documentation \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"https://github.com/water111/jak-project\",\"target\":\"_blank\",\"rounded\":\"\",\"color\":\"accent\"}},[_c('v-icon',[_vm._v(\"mdi-git\")]),_vm._v(\" Contribute \")],1)],1)],1)],1)],1),_c('v-row',[_c('v-container',[_c('v-row',{staticStyle:{\"margin-top\":\"3em\"},attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h1',{staticClass:\"orange--text text--darken-1\",attrs:{\"id\":\"project-status\"}},[_vm._v(\" Project Status \")])])],1),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h2',{staticClass:\"orange--text text--lighten-3\"},[_vm._v(\"Jak 1 - Black Label\")])])],1),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('v-subheader',[_vm._v(\"Decompilation\")]),_c('v-progress-linear',{attrs:{\"color\":\"green\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.srcFilesFinishedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Source Files Finished - \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesFinished)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesTotal)+\" \")]),_c('br'),_c('v-progress-linear',{attrs:{\"color\":\"yellow\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.srcFilesStartedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Source Files Started - \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesStarted)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesTotal)+\" \")]),_c('br'),_c('v-progress-linear',{attrs:{\"color\":\"teal\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.dataFilesStartedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Data Files Started - \"+_vm._s(_vm.jak1BlackLabelStatus.dataFilesStarted)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.dataFilesTotal)+\" \")])],1)],1),_c('v-row',{staticStyle:{\"margin-top\":\"5em\"},attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h1',{staticClass:\"orange--text text--darken-1\",attrs:{\"id\":\"recent-updates\"}},[_vm._v(\" Recent Updates \")])])],1),_c('v-row',{staticStyle:{\"margin-bottom\":\"10em\"},attrs:{\"justify\":\"center\"}},_vm._l((_vm.recentPRs),function(pr,index){return _c('v-col',{key:'pr' - index,attrs:{\"cols\":\"4\"}},[_c('v-card',[_c('v-card-text',{staticStyle:{\"overflow-y\":\"auto\",\"height\":\"300px\"}},[_c('p',{staticClass:\"text-h5 orange--text text--lighten-3\"},[_vm._v(\" \"+_vm._s(pr.title)+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(pr.user.login)+\" \")]),_c('div',{staticClass:\"text--primary\"},[_c('pre',{staticClass:\"wrapped-pre\"},[_vm._v(_vm._s(pr.body))])])]),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"accent\",\"href\":pr.html_url,\"target\":\"_blank\"}},[_vm._v(\" View Change \")])],1)],1)],1)}),1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","const projectProgress = require('./config/progress.json')\n\nexport default projectProgress\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import Vue, { WatchHandler } from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & WatchHandler {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","import { VNodeDirective } from 'vue/types/vnode'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n /* istanbul ignore if */\n if (!el._observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n el._observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n !el._observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el)\n else el._observe.init = true\n }, options)\n\n el._observe = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement) {\n /* istanbul ignore if */\n if (!el._observe) return\n\n el._observe.observer.unobserve(el)\n delete el._observe\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable = VueConstructor : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable = VueConstructor> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable {\n return RegistrableInject(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Toggleable\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record\n\nexport type Positionable = VueConstructor\n\nexport function factory (selected?: S[]): Positionable\nexport function factory (selected: undefined): OptionsVue\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\nconst rippleStop = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [rippleStop]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nfunction opacity (el: HTMLElement, value: number) {\n el.style.opacity = value.toString()\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n opacity(animation, 0)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n opacity(animation, 0.25)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n opacity(animation, 0)\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e[rippleStop]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[rippleStop] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n },\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n click: this.click,\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass} ${this.proxyClass || ''}`.trim()\n\n const path = `_vnode.data.class.${activeClass}`\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (getObjectValueByPath(this.$refs.link, path)) {\n this.toggle()\n }\n })\n },\n toggle: () => { /* noop */ },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n (el as any)._initialDisplay = el.style.display\n el.style.display = 'none'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el) el.style.display = (el as any)._initialDisplay || ''\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Proxyable\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n if (this.$slots.placeholder) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, this.$slots.placeholder)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=6003c7cf&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=6003c7cf&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6003c7cf\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VContainer,VIcon,VImg,VProgressLinear,VRow,VSubheader})\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n small: function small() {\n return createHTML(this, 'small', '', '');\n }\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.array.flat.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./src/assets/img/logo-text-colored.png","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///./src/views/Home.vue?6e6e","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/modules/es.string.link.js","webpack:///./node_modules/core-js/internals/flatten-into-array.js","webpack:///./src/views/Home.vue?3361","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./src/progress.js","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?493c","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///../../../src/mixins/colorable/index.ts","webpack:///../../../src/mixins/elevatable/index.ts","webpack:///../../../src/mixins/measurable/index.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///../../../src/mixins/roundable/index.ts","webpack:///../../../src/components/VSheet/VSheet.ts","webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///../../../src/mixins/registrable/index.ts","webpack:///../../../src/mixins/groupable/index.ts","webpack:///../../../src/mixins/toggleable/index.ts","webpack:///../../../src/mixins/positionable/index.ts","webpack:///../../../src/directives/ripple/index.ts","webpack:///../../../src/mixins/routable/index.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../../src/components/VBtn/VBtn.ts","webpack:///../../src/util/mergeData.ts","webpack:///../../../src/components/transitions/createTransition.ts","webpack:///../../../src/components/transitions/expand-transition.ts","webpack:///../../../src/components/transitions/index.ts","webpack:///../../../src/mixins/proxyable/index.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///../../../src/mixins/loadable/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///./src/views/Home.vue?1dce","webpack:///./node_modules/core-js/modules/es.string.fixed.js","webpack:///./node_modules/core-js/modules/es.string.small.js"],"names":["$","flattenIntoArray","toObject","toLength","toInteger","arraySpeciesCreate","target","proto","flat","depthArg","arguments","length","undefined","O","this","sourceLen","A","collection","collectionStrong","module","exports","init","defineProperty","f","create","redefineAll","bind","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","set","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","C","that","iterable","type","index","first","last","size","AS_ENTRIES","getInternalState","define","key","value","previous","state","entry","getEntry","next","removed","prototype","clear","data","prev","forEach","callbackfn","boundFunction","has","get","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","done","global","isForced","redefine","InternalMetadataModule","isObject","fails","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","indexOf","IS_WEAK","NativeConstructor","NativePrototype","Constructor","exported","fixMethod","KEY","nativeMethod","call","REPLACE","entries","enable","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","constructor","forced","getOwnPropertyDescriptor","toString","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","$endsWith","endsWith","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","String","writable","searchString","endPosition","len","end","search","slice","runtime","Op","Object","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","obj","enumerable","configurable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","__await","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iteratorMethod","isNaN","i","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","object","reverse","pop","skipTempReset","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","createHTML","forcedStringHTMLMethod","link","url","isArray","original","source","start","depth","mapper","thisArg","element","targetIndex","sourceIndex","mapFn","_vm","_h","$createElement","_c","_self","attrs","staticClass","_v","staticStyle","jak1BlackLabelStatus","srcFilesFinishedValue","_s","srcFilesFinished","srcFilesTotal","srcFilesStartedValue","srcFilesStarted","dataFilesStartedValue","dataFilesStarted","dataFilesTotal","_l","pr","title","user","login","body","html_url","staticRenderFns","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","apply","projectProgress","require","components","recentPRs","mounted","methods","truncateString","str","num","loadRecentPRs","makeWatcher","$data","val","attrs$","listeners$","created","immediate","props","color","setBackgroundColor","console","setTextColor","colorName","elevation","Number","computed","computedElevation","elevationClasses","parseInt","height","maxHeight","maxWidth","minHeight","minWidth","width","measurableStyles","styles","_createForOfIteratorHelper","o","allowArrayLike","it","Array","unsupportedIterableToArray","F","s","n","e","_e","normalCompletion","didErr","step","_e2","rounded","Boolean","tile","roundedClasses","composite","mixins","outlined","shaped","tag","default","classes","render","class","style","on","h","$slots","inserted","window","modifiers","binding","handler","options","observer","IntersectionObserver","el","isIntersecting","unbind","observe","Intersect","directives","intersect","button","indeterminate","rotate","radius","isVisible","calculatedSize","circumference","normalizedValue","parseFloat","strokeDashArray","strokeDashOffset","strokeWidth","svgStyles","transform","viewBoxSize","genCircle","fill","cx","cy","r","offset","genSvg","children","xmlns","viewBox","genInfo","onObserve","role","$listeners","generateWarning","child","defaultImpl","register","unregister","parent","inject","activeClass","namespace","disabled","isActive","groupClasses","beforeDestroy","toggle","factory","prop","event","model","required","watch","$emit","availableProps","absolute","bottom","fixed","left","right","top","selected","rippleStop","DELAY_RIPPLE","opacity","isTouchEvent","isKeyboardEvent","calculate","localX","localY","scale","centerX","centerY","x","y","ripples","show","container","document","animation","performance","setTimeout","hide","diff","delay","isRippleEnabled","rippleShow","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyboardRippleHide","focusRippleHide","updateRipple","enabled","passive","removeListeners","directive","update","wasEnabled","Ripple","append","exact","exactPath","exactActiveClass","href","to","nuxt","replace","ripple","proxyClass","computedRipple","isClickable","isLink","$attrs","$route","click","generateRouteLink","tabindex","path","onRouteChange","$refs","large","small","xLarge","xSmall","medium","sizeableClasses","baseMixins","btnToggle","block","depressed","fab","icon","loading","plain","retainFocusOnClick","text","defaultRipple","circle","hasBg","isElevated","isRound","breakingProps","replacement","$el","genContent","genLoader","loader","setColor","includes","JSON","pattern","styleList","styleProp","parseStyle","styleMap","mergeTarget","mergeClasses","mergeStyles","mergeListeners","dest","mergeTransitions","origin","functional","group","hideOnLeave","leaveAbsolute","mode","beforeEnter","offsetHeight","position","offsetTop","offsetLeft","offsetWidth","mergeData","functions","expandedParentClass","sizeProperty","offsetProperty","transition","overflow","enter","initialStyle","requestAnimationFrame","afterEnter","enterCancelled","leave","afterLeave","leaveCancelled","resetStyles","VFadeTransition","createSimpleTransition","VSlideXTransition","createJavascriptTransition","internalLazyValue","internalValue","Proxyable","active","backgroundColor","backgroundOpacity","bufferValue","query","stream","striped","__cachedBackground","backgroundStyle","__cachedBar","__cachedBarType","__cachedBuffer","__cachedDeterminate","__cachedIndeterminate","genProgressBar","__cachedStream","isReversed","normalizedBuffer","themeClasses","computedTransition","$vuetify","rtl","normalize","reactive","slot","genListeners","listeners","onClick","loaderHeight","genProgress","progress","hover","img","raised","VCardActions","VCardText","breakpoints","breakpointProps","offsetProps","orderProps","propMap","col","order","breakpointClass","className","breakpoint","cache","cols","alignSelf","validator","cacheKey","classList","hasColClasses","id","fluid","isFontAwesome5","some","iconType","isSvgPath","test","SIZE_MAP","dense","hasClickListener","getIcon","iconName","getSize","sizes","explicitSize","getDefaultData","getSvgWrapperData","fontSize","wrapperData","applyColors","renderFontIcon","newChildren","delimiterIndex","isMaterialIcon","renderSvgIcon","svgData","d","renderSvgIconComponent","component","$_wrapperFor","aspectRatio","contentClass","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","hasIntersect","alt","contain","eager","gradient","lazySrc","root","rootMargin","threshold","src","srcset","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","loadImage","lazyImg","onLoad","startsWith","naturalHeight","onError","getSrc","pollForSize","timeout","poll","content","__genPlaceholder","placeholder","appear","node","once","ALIGNMENT","makeProps","prefix","def","alignValidator","alignProps","justifyValidator","justifyProps","alignContentValidator","alignContentProps","align","justify","alignContent","classMap","noGutters","inset","VBtn","VCard","VCol","VContainer","VIcon","VImg","VProgressLinear","VRow","VSubheader"],"mappings":"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","file":"js/about.a4656f69.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","module.exports = __webpack_public_path__ + \"img/logo-text-colored.5cda006b.png\";","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar $endsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=6003c7cf&scoped=true&lang=css&\"","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{staticClass:\"bg-img\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"align\":\"center\"}},[_c('v-img',{attrs:{\"max-height\":\"150\",\"max-width\":\"250\",\"src\":require(\"@/assets/img/logo-text-colored.png\")}}),_c('br'),_c('h4',[_vm._v(\" Reviving the Language that Brought us the Jak & Daxter Series \")]),_c('br'),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"#project-status\",\"rounded\":\"\",\"color\":\"primary\"}},[_c('v-icon',[_vm._v(\"mdi-calendar-check\")]),_vm._v(\" Project Status \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"rounded\":\"\",\"color\":\"secondary\",\"href\":\"#recent-updates\"}},[_c('v-icon',[_vm._v(\"mdi-update\")]),_vm._v(\" Recent Updates \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"/jak-project/api-docs.html\",\"target\":\"_blank\",\"rounded\":\"\",\"color\":\"deep-purple\"}},[_c('v-icon',[_vm._v(\"mdi-file-document\")]),_vm._v(\" Documentation \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"https://github.com/water111/jak-project\",\"target\":\"_blank\",\"rounded\":\"\",\"color\":\"accent\"}},[_c('v-icon',[_vm._v(\"mdi-git\")]),_vm._v(\" Contribute \")],1)],1)],1)],1)],1),_c('v-row',[_c('v-container',[_c('v-row',{staticStyle:{\"margin-top\":\"3em\"},attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h1',{staticClass:\"orange--text text--darken-1\",attrs:{\"id\":\"project-status\"}},[_vm._v(\" Project Status \")])])],1),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h2',{staticClass:\"orange--text text--lighten-3\"},[_vm._v(\"Jak 1 - Black Label\")])])],1),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('v-subheader',[_vm._v(\"Decompilation\")]),_c('v-progress-linear',{attrs:{\"color\":\"green\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.srcFilesFinishedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Source Files Finished - \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesFinished)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesTotal)+\" \")]),_c('br'),_c('v-progress-linear',{attrs:{\"color\":\"yellow\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.srcFilesStartedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Source Files Started - \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesStarted)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesTotal)+\" \")]),_c('br'),_c('v-progress-linear',{attrs:{\"color\":\"teal\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.dataFilesStartedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Data Files Started - \"+_vm._s(_vm.jak1BlackLabelStatus.dataFilesStarted)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.dataFilesTotal)+\" \")])],1)],1),_c('v-row',{staticStyle:{\"margin-top\":\"5em\"},attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h1',{staticClass:\"orange--text text--darken-1\",attrs:{\"id\":\"recent-updates\"}},[_vm._v(\" Recent Updates \")])])],1),_c('v-row',{staticStyle:{\"margin-bottom\":\"10em\"},attrs:{\"justify\":\"center\"}},_vm._l((_vm.recentPRs),function(pr,index){return _c('v-col',{key:'pr' - index,attrs:{\"cols\":\"4\"}},[_c('v-card',[_c('v-card-text',{staticStyle:{\"overflow-y\":\"auto\",\"height\":\"300px\"}},[_c('p',{staticClass:\"text-h5 orange--text text--lighten-3\"},[_vm._v(\" \"+_vm._s(pr.title)+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(pr.user.login)+\" \")]),_c('div',{staticClass:\"text--primary\"},[_c('pre',{staticClass:\"wrapped-pre\"},[_vm._v(_vm._s(pr.body))])])]),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"accent\",\"href\":pr.html_url,\"target\":\"_blank\"}},[_vm._v(\" View Change \")])],1)],1)],1)}),1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","const projectProgress = require('./config/progress.json')\n\nexport default projectProgress\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import Vue, { WatchHandler } from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & WatchHandler {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","import { VNodeDirective } from 'vue/types/vnode'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n /* istanbul ignore if */\n if (!el._observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n el._observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n !el._observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el)\n else el._observe.init = true\n }, options)\n\n el._observe = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement) {\n /* istanbul ignore if */\n if (!el._observe) return\n\n el._observe.observer.unobserve(el)\n delete el._observe\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable = VueConstructor : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable = VueConstructor> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable {\n return RegistrableInject(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Toggleable\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record\n\nexport type Positionable = VueConstructor\n\nexport function factory (selected?: S[]): Positionable\nexport function factory (selected: undefined): OptionsVue\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\nconst rippleStop = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [rippleStop]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nfunction opacity (el: HTMLElement, value: number) {\n el.style.opacity = value.toString()\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n opacity(animation, 0)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n opacity(animation, 0.25)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n opacity(animation, 0)\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e[rippleStop]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[rippleStop] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n },\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n click: this.click,\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass} ${this.proxyClass || ''}`.trim()\n\n const path = `_vnode.data.class.${activeClass}`\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (getObjectValueByPath(this.$refs.link, path)) {\n this.toggle()\n }\n })\n },\n toggle: () => { /* noop */ },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n (el as any)._initialDisplay = el.style.display\n el.style.display = 'none'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el) el.style.display = (el as any)._initialDisplay || ''\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Proxyable\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n if (this.$slots.placeholder) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, this.$slots.placeholder)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=6003c7cf&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=6003c7cf&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6003c7cf\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VContainer,VIcon,VImg,VProgressLinear,VRow,VSubheader})\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n small: function small() {\n return createHTML(this, 'small', '', '');\n }\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/app.3bcfc435.js b/docs/js/app.99fa3a4f.js similarity index 97% rename from docs/js/app.3bcfc435.js rename to docs/js/app.99fa3a4f.js index 737972f17b..12966e5f19 100644 --- a/docs/js/app.3bcfc435.js +++ b/docs/js/app.99fa3a4f.js @@ -1,2 +1,2 @@ -(function(e){function t(t){for(var n,o,i=t[0],c=t[1],l=t[2],s=0,p=[];s\n \n \n \n \n \n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=78a82666&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VMain } from 'vuetify/lib/components/VMain';\ninstallComponents(component, {VApp,VMain})\n","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib/framework';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n theme: { dark: true },\n})\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: '/',\n name: 'Home',\n component: () => import(/* webpackChunkName: \"about\" */ '../views/Home.vue')\n },\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes\n})\n\nexport default router\n","import Vue from 'vue'\nimport App from './App.vue'\nimport vuetify from './plugins/vuetify';\nimport router from './router'\n\nVue.config.productionTip = false\n\nnew Vue({\n vuetify,\n router,\n render: h => h(App)\n}).$mount('#app')\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?990a","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/plugins/vuetify.js","webpack:///./src/router/index.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","staticRenderFns","components","component","VApp","VMain","Vue","use","Vuetify","theme","dark","VueRouter","routes","path","router","base","process","config","productionTip","vuetify","render","h","App","$mount"],"mappings":"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","file":"js/app.99fa3a4f.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"about\":\"about\"}[chunkId]||chunkId) + \".\" + {\"about\":\"a4656f69\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"about\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"about\":\"about\"}[chunkId]||chunkId) + \".\" + {\"about\":\"c2633d65\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/jak-project/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[_c('v-main',[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=78a82666&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VMain } from 'vuetify/lib/components/VMain';\ninstallComponents(component, {VApp,VMain})\n","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib/framework';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n theme: { dark: true },\n})\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: '/',\n name: 'Home',\n component: () => import(/* webpackChunkName: \"about\" */ '../views/Home.vue')\n },\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes\n})\n\nexport default router\n","import Vue from 'vue'\nimport App from './App.vue'\nimport vuetify from './plugins/vuetify';\nimport router from './router'\n\nVue.config.productionTip = false\n\nnew Vue({\n vuetify,\n router,\n render: h => h(App)\n}).$mount('#app')\n"],"sourceRoot":""} \ No newline at end of file From eaee7e14518693953e17ac0c65dbcce900a51f2e Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Fri, 13 Aug 2021 21:14:05 -0400 Subject: [PATCH 07/12] finalizing --- Taskfile.yml | 6 +- decompiler/config/all-types.gc | 14 +- .../anonymous_function_types.jsonc | 4 +- .../jak1_ntsc_black_label/label_types.jsonc | 66 ++++- .../jak1_ntsc_black_label/type_casts.jsonc | 228 +----------------- scripts/find-label-types.py | 55 +++++ .../engine/collide/collide-shape-h_REF.gc | 30 +-- .../engine/collide/collide-touch-h_REF.gc | 12 +- .../reference/engine/game/fact-h_REF.gc | 2 +- .../reference/engine/nav/navigate-h_REF.gc | 6 +- .../engine/physics/trajectory_REF.gc | 5 +- .../levels/common/nav-enemy-h_REF.gc | 134 +++++----- test/offline/offline_test_main.cpp | 6 + 13 files changed, 245 insertions(+), 323 deletions(-) create mode 100644 scripts/find-label-types.py diff --git a/Taskfile.yml b/Taskfile.yml index 0deed05a77..15c5f9d8b5 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -56,4 +56,8 @@ tasks: ignore_error: true - python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/ - task: offline-tests - + find-label-types: + cmds: + - python ./scripts/next-decomp-file.py --file "{{.FILE}}" + - task: decomp + - python ./scripts/find-label-types.py --file "{{.FILE}}" diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index ce4bc59617..2a48932aa4 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -9701,7 +9701,7 @@ :flag-assert #xc00000028 (:methods (new (symbol type process pickup-type float) _type_ 0) - (dummy-9 () none 9) + (dummy-9 () uint 9) ;; See nav-enemy::process-drawable-death-event-handler (reset! (_type_ symbol) none 10) (dummy-11 (_type_) float 11) ) @@ -22100,11 +22100,11 @@ (define-extern nav-enemy-execute-jump (function none :behavior nav-enemy)) (define-extern nav-enemy-jump-land-anim (function none :behavior nav-enemy)) ;; TODO (define-extern nav-enemy-rnd-float-range (function float float float :behavior nav-enemy)) -(define-extern nav-enemy-common-post (function none)) ;; TODO not confirmed +(define-extern nav-enemy-common-post (function none :behavior nav-enemy)) ;; TODO not confirmed (define-extern nav-enemy-execute-custom-jump (function int float float none :behavior nav-enemy)) (define-extern nav-enemy-initialize-custom-jump (function vector symbol float float float none :behavior nav-enemy)) -(define-extern nav-enemy-simple-post (function none)) ;; TODO not confirmed -(define-extern nav-enemy-fall-and-play-death-anim (function art-joint-anim int float none)) ;; second arg is whatever is passed to align-control::11 +(define-extern nav-enemy-simple-post (function none :behavior nav-enemy)) ;; TODO not confirmed +(define-extern nav-enemy-fall-and-play-death-anim (function art-joint-anim int float none :behavior nav-enemy)) ;; second arg is whatever is passed to align-control::11 (define-extern nav-enemy-neck-control-inactive (function none :behavior nav-enemy)) (define-extern nav-enemy-frustrated? (function symbol :behavior nav-enemy)) (define-extern nav-enemy-player-at-frustration-point? (function symbol :behavior nav-enemy)) @@ -22112,7 +22112,7 @@ (define-extern nav-enemy-rnd-go-idle? (function float symbol)) (define-extern nav-enemy-notice-player? (function symbol :behavior nav-enemy)) (define-extern nav-enemy-turn-to-face-dir (function vector float none :behavior nav-enemy)) -(define-extern nav-enemy-facing-direction? (function vector float symbol)) +(define-extern nav-enemy-facing-direction? (function vector float symbol :behavior nav-enemy)) (define-extern nav-enemy-test-point-near-nav-mesh? (function vector symbol :behavior nav-enemy)) (define-extern nav-enemy-travel-post (function none :behavior nav-enemy)) (define-extern nav-enemy-get-new-patrol-point (function int :behavior nav-enemy)) @@ -22123,7 +22123,7 @@ (define-extern nav-enemy-rnd-percent? (function float symbol)) (define-extern nav-enemy-default-event-handler (function process int symbol event-message-block object :behavior nav-enemy)) ;; TODO - last arg is definitely a vector...but also not? (define-extern nav-enemy-jump-event-handler (function process int symbol event-message-block object :behavior nav-enemy)) -(define-extern process-drawable-death-event-handler (function process int symbol event-message-block object :behavior process-drawable)) ;; First two args are unused +(define-extern process-drawable-death-event-handler (function process int symbol event-message-block uint :behavior process-drawable)) ;; First two args are unused (define-extern nav-enemy-patrol-post (function none :behavior nav-enemy)) (define-extern nav-enemy-chase-post (function none :behavior nav-enemy)) (define-extern nav-enemy-flee-post (function none :behavior nav-enemy)) @@ -22134,7 +22134,7 @@ (define-extern nav-enemy-facing-player? (function float symbol)) (define-extern nav-enemy-test-nav-mesh-intersection-xz? (function vector symbol :behavior nav-enemy)) ;; TODO - vector is a guess, check nav-control::16 (define-extern nav-enemy-test-point-in-nav-mesh? (function vector symbol :behavior nav-enemy)) ;; TODO - vector is a guess, check nav-control::16 -(define-extern nav-enemy-set-base-collide-sphere-collide-with (function uint none)) ;; unused +(define-extern nav-enemy-set-base-collide-sphere-collide-with (function uint none :behavior nav-enemy)) ;; unused (define-extern ja-group-index? (function int symbol :behavior nav-enemy)) (define-extern nav-enemy-jump-post (function none :behavior nav-enemy)) (define-extern nav-enemy-jump-land-post (function none :behavior nav-enemy)) diff --git a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc index feb0fb4b40..003ab164d3 100644 --- a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc @@ -585,7 +585,7 @@ ], "nav-enemy": [ - [8, "(function none)"], // TODO - NECK! + [8, "(function none :behavior nav-enemy)"], [9, "(function none)"], // stubbed [10, "(function uint :behavior nav-enemy)"], [11, "(function object :behavior nav-enemy)"], @@ -600,7 +600,7 @@ [21, "(function none :behavior nav-enemy)"], [29, "(function symbol :behavior nav-enemy)"], [30, "(function object :behavior nav-enemy)"], - [31, "(function object :behavior nav-enemy)"], // TODO - art-element confusion + [31, "(function object :behavior nav-enemy)"], [32, "(function vector :behavior nav-enemy)"], [33, "(function object :behavior nav-enemy)"], [34, "(function object :behavior nav-enemy)"], diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index 8f784e77d4..8d25a07678 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -1414,6 +1414,68 @@ ], "nav-enemy": [ + ["L16", "_lambda_", true], + ["L18", "_lambda_", true], + ["L19", "_lambda_", true], + ["L20", "_lambda_", true], + ["L24", "_lambda_", true], + ["L29", "_lambda_", true], + ["L31", "_lambda_", true], + ["L32", "_lambda_", true], + ["L33", "_lambda_", true], + ["L36", "_lambda_", true], + ["L41", "_lambda_", true], + ["L44", "_lambda_", true], + ["L45", "_lambda_", true], + // ["L76", "_lambda_", true], + ["L82", "_lambda_", true], + ["L86", "_lambda_", true], + ["L88", "_lambda_", true], + ["L90", "_lambda_", true], + ["L91", "_lambda_", true], + ["L92", "_lambda_", true], + ["L93", "_lambda_", true], + ["L95", "_lambda_", true], + ["L96", "_lambda_", true], + ["L97", "_lambda_", true], + ["L109", "_lambda_", true], + ["L110", "_lambda_", true], + ["L111", "_lambda_", true], + ["L113", "_lambda_", true], + ["L120", "_lambda_", true], + ["L122", "_lambda_", true], + ["L124", "_lambda_", true], + ["L135", "_lambda_", true], + ["L142", "_lambda_", true], + ["L146", "_lambda_", true], + ["L150", "_lambda_", true], + ["L153", "_lambda_", true], + ["L155", "_lambda_", true], + ["L157", "_lambda_", true], + ["L165", "_lambda_", true], + ["L175", "_lambda_", true], + ["L176", "_lambda_", true], + ["L177", "_lambda_", true], + ["L179", "_lambda_", true], + ["L183", "_lambda_", true], + ["L331", "shadow-control", true], + ["L332", "state", true], + ["L333", "state", true], + ["L334", "state", true], + ["L335", "state", true], + ["L336", "state", true], + ["L337", "state", true], + ["L338", "state", true], + ["L339", "state", true], + ["L340", "state", true], + ["L341", "state", true], + ["L342", "state", true], + ["L343", "state", true], + ["L344", "state", true], + ["L345", "state", true], + ["L346", "state", true], + ["L347", "state", true], + ["L348", "state", true], ["L349", "attack-info", true], ["L353", "float", true], ["L354", "float", true], @@ -1444,7 +1506,9 @@ ["L386", "float", true], ["L387", "float", true], ["L391", "float", true], - ["L389", "float", true] + ["L389", "float", true], + ["L392", "rgba", true], + ["L393", "rgba", true] ], // please do not add things after this entry! git is dumb. diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index da9cb3dfc0..addddcf2ba 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -1801,6 +1801,7 @@ "nav-enemy-set-base-collide-sphere-collide-with": [ [[0, 999], "s6", "nav-enemy"], + [19, "v1", "collide-shape-prim-group"], [32, "v1", "collide-shape-prim-sphere"], [33, "s5", "collide-shape-prim-group"], [37, "v1", "collide-shape-prim-sphere"], @@ -1810,334 +1811,127 @@ [50, "s4", "collide-shape-prim-group"] ], - "nav-enemy-turn-to-face-dir": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-facing-direction?": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-facing-point?": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-test-nav-mesh-intersection-xz?": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-test-point-in-nav-mesh?": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-turn-to-face-point": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "ja-group-index?": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-reset-frustration": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-player-at-frustration-point?": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-frustrated?": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-jump-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-initialize-custom-jump": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-initialize-jump": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-execute-custom-jump": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-execute-jump": [ - [[0, 999], "s6", "nav-enemy"] - ], - "nav-enemy-jump-land-anim": [ - [[0, 999], "s6", "nav-enemy"], [39, "v1", "art-joint-anim"] ], - "nav-enemy-jump-land-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-travel-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-patrol-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-falling-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-death-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-chase-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-flee-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-face-player-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-notice-player?": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 8 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[42, 46], "t9", "(function object)"] ], - "(anon-function 10 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 12 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 14 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 17 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 20 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 30 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], "(anon-function 31 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [27, "v1", "art-joint-anim"], [[70, 74], "t9", "(function object)"] ], - "(anon-function 32 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 36 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 39 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 40 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 41 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], "(anon-function 51 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[39, 43], "t9", "(function object)"] ], "(anon-function 54 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [27, "v1", "art-joint-anim"], [[80, 84], "t9", "(function object)"] ], "(anon-function 55 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[9, 13], "t9", "(function object)"] ], "(anon-function 56 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [23, "v1", "art-joint-anim"], [105, "v1", "art-joint-anim"], [167, "v1", "art-joint-anim"], [249, "v1", "art-joint-anim"] ], - "(anon-function 58 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 59 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 60 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], "(anon-function 61 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[35, 39], "t9", "(function object)"] ], "(anon-function 57 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[47, 51], "t9", "(function object)"], [[89, 93], "t9", "(function object)"], [[98, 102], "t9", "(function object)"] ], "(anon-function 42 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[10, 14], "t9", "(function object)"], [[31, 35], "t9", "(function object)"], [[67, 71], "t9", "(function object)"] ], "(anon-function 43 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[33, 37], "t9", "(function object)"] ], - "(anon-function 44 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], - "(anon-function 46 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], "(anon-function 50 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [27, "v1", "art-joint-anim"], [91, "v1", "art-joint-anim"] ], "(anon-function 45 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[5, 9], "t9", "(function object)"], [[14, 18], "t9", "(function object)"], [[75, 79], "t9", "(function object)"], [[91, 95], "t9", "(function object)"] ], "(anon-function 37 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[1, 5], "t9", "(function object)"] ], "(anon-function 38 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[10, 14], "t9", "(function object)"], [[38, 42], "t9", "(function object)"], [[94, 98], "t9", "(function object)"], [[124, 128], "t9", "(function object)"] ], "(anon-function 33 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[1, 5], "t9", "(function object)"] ], "(anon-function 34 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[1, 5], "t9", "(function object)"] ], "(anon-function 35 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[15, 20], "t9", "(function object)"] ], "(anon-function 29 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[36, 40], "t9", "(function object)"] ], - "(anon-function 62 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"] - ], "(anon-function 21 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[15, 19], "t9", "(function object)"] ], "(anon-function 19 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[19, 23], "t9", "(function object)"] ], "(anon-function 16 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], - [[15, 19], "t9", "(function object object)"] + [[15, 19], "t9", "(function object)"] ], "(anon-function 15 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[3, 6], "t9", "(function object)"] ], "(anon-function 13 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], - [[6, 9], "t9", "(function object object)"] + [[6, 9], "t9", "(function object)"] ], "(anon-function 11 nav-enemy)": [ - [[0, 999], "s6", "nav-enemy"], [[80, 84], "t9", "(function object object object object)"] ], "nav-enemy-init-by-other": [ - [[0, 999], "s6", "nav-enemy"], [[54, 58], "t9", "(function object object object object)"] ], "nav-enemy-set-hit-from-direction": [ - [[0, 999], "s6", "nav-enemy"], [19, "v1", "process-drawable"] ], "(method 59 nav-enemy)": [ - [[1, 5], "t9", "(function object object)"] + [[1, 5], "t9", "(function object)"] ], "(method 73 nav-enemy)": [ - [[19, 23], "t9", "(function object object)"] + [[19, 23], "t9", "(function object)"] ], "(method 43 nav-enemy)": [ - [[22, 26], "t9", "(function object object)"] - ], - - "nav-enemy-send-attack": [ - [[0, 999], "s6", "nav-enemy"] + [[22, 26], "t9", "(function object)"] ], "nav-enemy-default-event-handler": [ - [[0, 999], "s6", "nav-enemy"], [62, "a0", "vector"], [82, "a0", "vector"], - [[49, 53], "t9", "(function object object)"], - [[70, 74], "t9", "(function object object)"], - [[92, 96], "t9", "(function object object)"], - [[100, 104], "t9", "(function object object)"], - [[108, 112], "t9", "(function object object)"] - ], - - "nav-enemy-jump-event-handler": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-common-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-simple-post": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-neck-control-look-at": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-neck-control-inactive": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-fall-and-play-death-anim": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "process-drawable-death-event-handler": [ - [[0, 999], "s6", "process-drawable"] + [[49, 53], "t9", "(function object)"], + [[70, 74], "t9", "(function object)"], + [[92, 96], "t9", "(function object)"], + [[100, 104], "t9", "(function object)"], + [[108, 112], "t9", "(function object)"] ], "(method 7 nav-enemy)": [ diff --git a/scripts/find-label-types.py b/scripts/find-label-types.py new file mode 100644 index 0000000000..38f7f65db7 --- /dev/null +++ b/scripts/find-label-types.py @@ -0,0 +1,55 @@ +import argparse +parser = argparse.ArgumentParser() +parser.add_argument("--file") +args = parser.parse_args() + +import re +labels_with_no_type = [] + +file_path = "decompiler_out/jak1/{}_disasm.gc".format(args.file) +with open(file_path) as f: + # Find all + content = f.readlines() + for line in content: + labels_with_no_type = labels_with_no_type + re.findall(r'L\d+', line) + +# dedup list +labels_with_no_type = list(dict.fromkeys(labels_with_no_type)) + +# let's go try to identify the types from the IR2 file if we can +label_lines = [] +file_path = "decompiler_out/jak1/{}_ir2.asm".format(args.file) +with open(file_path) as f: + # Find all + content = f.readlines() + prev_line = "" + for i, line in enumerate(content): + if line.startswith("L"): + for label in labels_with_no_type: + if line.startswith("{}:".format(label)): + # Check if the previous line has a `.type` + prev_line = content[i-1] + if ".type" in prev_line: + the_type = prev_line.split(".type ")[1].strip() + label_lines.append("[\"{}\", \"{}\", true]".format(label, the_type)) + labels_with_no_type.remove(label) + break + # Otherwise, lets see if it's a lambda, check the last 10 lines (hopefully this is enough) + found_it = False + for j in range(20): + temp_line = content[i-j] + if "anon-function" in temp_line: + label_lines.append("[\"{}\", \"_lambda_\", true]".format(label)) + labels_with_no_type.remove(label) + found_it = True + break + if found_it: + break + +# Print out the labels +print("Here are the labels I couldn't find a type for:") +for label in labels_with_no_type: + print("- {}".format(label)) +print("And here are the ones I could:") +print(",\n".join(label_lines)) + diff --git a/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc b/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc index 8375ee8933..e9c5c254bb 100644 --- a/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc @@ -314,10 +314,10 @@ ;; definition of type collide-shape-prim-mesh (deftype collide-shape-prim-mesh (collide-shape-prim) - ((mesh basic :offset-assert 72) - (mesh-id int32 :offset-assert 76) - (mesh-cache-id uint64 :offset-assert 80) - (mesh-cache-tris uint32 :offset-assert 88) + ((mesh collide-mesh :offset-assert 72) + (mesh-id int32 :offset-assert 76) + (mesh-cache-id uint64 :offset-assert 80) + (mesh-cache-tris uint32 :offset-assert 88) ) :method-count-assert 29 :size-assert #x5c @@ -389,17 +389,17 @@ ;; definition of type collide-shape (deftype collide-shape (trsqv) - ((process process :offset-assert 140) - (max-iteration-count uint8 :offset-assert 144) - (nav-flags uint8 :offset-assert 145) - (pad-byte uint8 2 :offset-assert 146) - (pat-ignore-mask pat-surface :offset-assert 148) - (event-self basic :offset-assert 152) - (event-other basic :offset-assert 156) - (root-prim collide-shape-prim :offset-assert 160) - (riders basic :offset-assert 164) - (backup-collide-as uint64 :offset-assert 168) - (backup-collide-with uint64 :offset-assert 176) + ((process process :offset-assert 140) + (max-iteration-count uint8 :offset-assert 144) + (nav-flags uint8 :offset-assert 145) + (pad-byte uint8 2 :offset-assert 146) + (pat-ignore-mask pat-surface :offset-assert 148) + (event-self basic :offset-assert 152) + (event-other basic :offset-assert 156) + (root-prim collide-shape-prim :offset-assert 160) + (riders collide-sticky-rider-group :offset-assert 164) + (backup-collide-as uint64 :offset-assert 168) + (backup-collide-with uint64 :offset-assert 176) ) :method-count-assert 56 :size-assert #xb8 diff --git a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc index 3374682df8..dc3fe52982 100644 --- a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc @@ -3,8 +3,8 @@ ;; definition of type touching-prim (deftype touching-prim (structure) - ((cprim basic :offset-assert 0) - (has-tri? basic :offset-assert 4) + ((cprim collide-shape-prim :offset-assert 0) + (has-tri? symbol :offset-assert 4) (tri collide-tri-result :inline :offset-assert 16) ) :method-count-assert 9 @@ -25,7 +25,7 @@ (deftype touching-prims-entry (structure) ((next touching-prims-entry :offset-assert 0) (prev touching-prims-entry :offset-assert 4) - (allocated? basic :offset-assert 8) + (allocated? symbol :offset-assert 8) (u float :offset-assert 12) (prim1 touching-prim :inline :offset-assert 16) (prim2 touching-prim :inline :offset-assert 128) @@ -120,8 +120,8 @@ ;; definition of type touching-shapes-entry (deftype touching-shapes-entry (structure) - ((cshape1 basic :offset-assert 0) - (cshape2 basic :offset-assert 4) + ((cshape1 collide-shape :offset-assert 0) + (cshape2 collide-shape :offset-assert 4) (resolve-u int8 :offset-assert 8) (head touching-prims-entry :offset-assert 12) ) @@ -132,7 +132,7 @@ (dummy-9 () none 9) (dummy-10 () none 10) (dummy-11 () none 11) - (dummy-12 () none 12) + (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) (dummy-13 () none 13) (dummy-14 () none 14) (dummy-15 () none 15) diff --git a/test/decompiler/reference/engine/game/fact-h_REF.gc b/test/decompiler/reference/engine/game/fact-h_REF.gc index a7ee1d8fcf..5abe8f8a6d 100644 --- a/test/decompiler/reference/engine/game/fact-h_REF.gc +++ b/test/decompiler/reference/engine/game/fact-h_REF.gc @@ -119,7 +119,7 @@ :flag-assert #xc00000028 (:methods (new (symbol type process pickup-type float) _type_ 0) - (dummy-9 () none 9) + (dummy-9 () uint 9) (reset! (_type_ symbol) none 10) (dummy-11 (_type_) float 11) ) diff --git a/test/decompiler/reference/engine/nav/navigate-h_REF.gc b/test/decompiler/reference/engine/nav/navigate-h_REF.gc index e298ccdbcf..2f98cd91fd 100644 --- a/test/decompiler/reference/engine/nav/navigate-h_REF.gc +++ b/test/decompiler/reference/engine/nav/navigate-h_REF.gc @@ -386,7 +386,7 @@ (dummy-13 () none 13) (dummy-14 () none 14) (set-target-pos! (_type_ vector) none 15) - (dummy-16 () none 16) + (dummy-16 (_type_ vector) symbol 16) (dummy-17 () none 17) (dummy-18 () none 18) (dummy-19 () none 19) @@ -395,7 +395,7 @@ (dummy-22 () none 22) (dummy-23 () none 23) (dummy-24 () none 24) - (dummy-25 () none 25) + (dummy-25 (_type_ vector float) symbol 25) (dummy-26 () none 26) (dummy-27 () none 27) (dummy-28 () none 28) @@ -591,7 +591,7 @@ (defmethod should-display? nav-control ((obj nav-control)) (and *display-nav-marks* - (nonzero? (logand (-> obj flags) (nav-control-flags display-marks))) + (nonzero? (logand (-> obj flags) (nav-control-flags display-marks bit0))) ) ) diff --git a/test/decompiler/reference/engine/physics/trajectory_REF.gc b/test/decompiler/reference/engine/physics/trajectory_REF.gc index 029177a5a3..3338ce60d1 100644 --- a/test/decompiler/reference/engine/physics/trajectory_REF.gc +++ b/test/decompiler/reference/engine/physics/trajectory_REF.gc @@ -2,6 +2,7 @@ (in-package goal) ;; definition for method 9 of type trajectory +;; INFO: this function exists in multiple non-identical object files ;; Used lq/sq (defmethod eval-position! @@ -136,7 +137,3 @@ 0 (none) ) - - - - diff --git a/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc b/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc index 3589ec77c4..f92d088432 100644 --- a/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc +++ b/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc @@ -139,30 +139,32 @@ ;; definition of type nav-enemy (deftype nav-enemy (process-drawable) - ((hit-from-dir vector :inline :offset-assert 176) - (event-param-point vector :inline :offset-assert 192) - (frustration-point vector :inline :offset-assert 208) - (jump-dest vector :inline :offset-assert 224) - (jump-trajectory trajectory :inline :offset-assert 240) - (jump-time uint64 :offset-assert 280) - (nav-info nav-enemy-info :offset-assert 288) - (target-speed float :offset-assert 292) - (momentum-speed float :offset-assert 296) - (acceleration float :offset-assert 300) - (rotate-speed float :offset-assert 304) - (turn-time uint64 :offset-assert 312) - (frustration-time uint64 :offset-assert 320) - (speed-scale float :offset-assert 328) - (neck basic :offset-assert 332) - (reaction-time uint64 :offset-assert 336) - (notice-time uint64 :offset-assert 344) - (state-timeout uint64 :offset-assert 352) - (free-time uint64 :offset-assert 360) - (touch-time uint64 :offset-assert 368) - (nav-enemy-flags uint32 :offset-assert 376) - (incomming-attack-id uint64 :offset-assert 384) - (jump-return-state basic :offset-assert 392) - (rand-gen basic :offset-assert 396) + ((collide-info collide-shape-moving :offset 112) + (enemy-info fact-info-enemy :offset 144) + (hit-from-dir vector :inline :offset-assert 176) + (event-param-point vector :inline :offset-assert 192) + (frustration-point vector :inline :offset-assert 208) + (jump-dest vector :inline :offset-assert 224) + (jump-trajectory trajectory :inline :offset-assert 240) + (jump-time uint64 :offset-assert 280) + (nav-info nav-enemy-info :offset-assert 288) + (target-speed float :offset-assert 292) + (momentum-speed float :offset-assert 296) + (acceleration float :offset-assert 300) + (rotate-speed float :offset-assert 304) + (turn-time uint64 :offset-assert 312) + (frustration-time uint64 :offset-assert 320) + (speed-scale float :offset-assert 328) + (neck joint-mod :offset-assert 332) + (reaction-time uint64 :offset-assert 336) + (notice-time uint64 :offset-assert 344) + (state-timeout uint64 :offset-assert 352) + (free-time uint64 :offset-assert 360) + (touch-time uint64 :offset-assert 368) + (nav-enemy-flags uint32 :offset-assert 376) + (incomming-attack-id uint64 :offset-assert 384) + (jump-return-state basic :offset-assert 392) + (rand-gen random-generator :offset-assert 396) ) :heap-base #x120 :method-count-assert 76 @@ -183,48 +185,48 @@ (nav-enemy-stare () none 31) (nav-enemy-stop-chase () none 32) (nav-enemy-victory () none 33) - (dummy-34 () none 34) - (dummy-35 () none 35) - (dummy-36 () none 36) - (dummy-37 () none 37) - (dummy-38 () none 38) - (dummy-39 () none 39) - (dummy-40 () none 40) - (dummy-41 () none 41) - (dummy-42 () none 42) - (dummy-43 () none 43) - (dummy-44 () none 44) - (dummy-45 () none 45) - (dummy-46 () none 46) - (dummy-47 () none 47) - (dummy-48 () none 48) - (dummy-49 () none 49) - (dummy-50 () none 50) - (dummy-51 () none 51) - (dummy-52 () none 52) - (dummy-53 () none 53) - (dummy-54 () none 54) - (dummy-55 () none 55) - (dummy-56 () none 56) - (dummy-57 () none 57) - (dummy-58 () none 58) - (dummy-59 () none 59) - (dummy-60 () none 60) - (dummy-61 () none 61) - (dummy-62 () none 62) - (dummy-63 () none 63) - (dummy-64 () none 64) - (dummy-65 () none 65) - (dummy-66 () none 66) - (dummy-67 () none 67) - (dummy-68 () none 68) - (dummy-69 () none 69) - (dummy-70 () none 70) - (dummy-71 () none 71) - (dummy-72 () none 72) - (dummy-73 () none 73) - (dummy-74 () none 74) - (dummy-75 () none 75) + (dummy-34 (_type_) none 34) + (dummy-35 (_type_) none 35) + (dummy-36 (_type_) none 36) + (TODO-RENAME-37 (_type_) none 37) + (TODO-RENAME-38 (_type_) none 38) + (TODO-RENAME-39 (_type_) none 39) + (dummy-40 (_type_) none 40) + (dummy-41 (_type_) none 41) + (TODO-RENAME-42 (_type_) int 42) + (dummy-43 (_type_ process event-message-block) object 43) + (dummy-44 (_type_ process event-message-block) object 44) + (TODO-RENAME-45 (_type_ nav-enemy-info) none 45) + (TODO-RENAME-46 (_type_ float) basic 46) + (TODO-RENAME-47 (_type_) none 47) + (TODO-RENAME-48 (_type_) none 48) + (TODO-RENAME-49 (_type_ nav-enemy-info) float 49) + (TODO-RENAME-50 (_type_ vector) symbol 50) + (dummy-51 (_type_) none 51) + (dummy-52 (_type_) none 52) + (dummy-53 (_type_) none 53) + (dummy-54 (_type_) none 54) + (dummy-55 (_type_) none 55) + (dummy-56 (_type_) none 56) + (dummy-57 (_type_) none 57) + (dummy-58 (_type_) none 58) + (TODO-RENAME-59 (_type_) none 59) + (dummy-60 (_type_) none 60) + (dummy-61 (_type_) none 61) + (dummy-62 (_type_) none 62) + (dummy-63 (_type_) none 63) + (dummy-64 (_type_) none 64) + (dummy-65 (_type_) none 65) + (dummy-66 (_type_) none 66) + (dummy-67 (_type_) symbol 67) + (dummy-68 (_type_) none 68) + (dummy-69 (_type_) none 69) + (dummy-70 (_type_) none 70) + (dummy-71 (_type_) none 71) + (dummy-72 (_type_ process event-message-block) object 72) + (TODO-RENAME-73 (_type_ process) symbol 73) + (dummy-74 (_type_) none 74) + (dummy-75 (_type_) none 75) ) ) diff --git a/test/offline/offline_test_main.cpp b/test/offline/offline_test_main.cpp index 3d6acd37e6..888bb94386 100644 --- a/test/offline/offline_test_main.cpp +++ b/test/offline/offline_test_main.cpp @@ -85,6 +85,9 @@ const std::unordered_set g_functions_expected_to_reject = { "update-mood-lava", // asm "update-mood-lightning", // asm + // nav-enemy + "(anon-function 28 nav-enemy)", // asm + "debug-menu-item-var-render" // asm }; @@ -168,6 +171,9 @@ const std::unordered_set g_functions_to_skip_compiling = { // camera "slave-set-rotation!", "v-slrp2!", "v-slrp3!", // vector-dot involving the stack + // nav-enemy + "(anon-function 28 nav-enemy)", // asm + // loader - decompiler bug with detecting handle macros "(method 10 external-art-buffer)"}; From 202f04d0096836153d004007587151ca7fab4c60 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Fri, 13 Aug 2021 21:57:46 -0400 Subject: [PATCH 08/12] goalc: fix off-by-one in line number reference --- common/goos/TextDB.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/goos/TextDB.cpp b/common/goos/TextDB.cpp index 3a274741df..d3213d286e 100644 --- a/common/goos/TextDB.cpp +++ b/common/goos/TextDB.cpp @@ -135,7 +135,7 @@ std::string TextDb::get_info_for(const Object& o, bool* terminate_compiler_error */ std::string TextDb::get_info_for(const std::shared_ptr& frag, int offset) const { std::string result = "text from " + frag->get_description() + - ", line: " + std::to_string(frag->get_line_idx(offset) + 1) + "\n"; + ", line: " + std::to_string(frag->get_line_idx(offset)) + "\n"; result += frag->get_line_containing_offset(offset) + "\n"; return result; } From 05f25e60f8044b8b79398b0703a8451d23eef3a3 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Fri, 13 Aug 2021 21:57:58 -0400 Subject: [PATCH 09/12] decomp: finalize `nav-enemy` --- decompiler/config/all-types.gc | 2 +- .../anonymous_function_types.jsonc | 1 + .../config/jak1_ntsc_black_label/hacks.jsonc | 4 +- .../jak1_ntsc_black_label/label_types.jsonc | 2 +- .../stack_structures.jsonc | 4 + .../jak1_ntsc_black_label/type_casts.jsonc | 21 +- goal_src/engine/collide/collide-shape-h.gc | 83 +- goal_src/engine/collide/collide-touch-h.gc | 40 +- goal_src/engine/game/fact-h.gc | 2 +- goal_src/engine/nav/navigate-h.gc | 69 +- goal_src/levels/common/nav-enemy-h.gc | 93 +- .../reference/levels/common/nav-enemy_REF.gc | 3973 +++++++++++++++++ test/offline/offline_test_main.cpp | 6 - 13 files changed, 4117 insertions(+), 183 deletions(-) create mode 100644 test/decompiler/reference/levels/common/nav-enemy_REF.gc diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 2a48932aa4..0f83164bb5 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -20066,7 +20066,7 @@ (define-extern vent-standard-event-handler function) (define-extern ecovalve-init-by-other function) -(define-extern birth-pickup-at-point function) +(define-extern birth-pickup-at-point (function vector int float symbol process symbol basic)) ;; TODO - not confirmed at all! (the symbols are wrong) (define-extern fuel-cell-pick-anim function) (define-extern othercam-init-by-other function) (define-extern fuel-cell-animate function) diff --git a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc index 003ab164d3..ccbfa00c3b 100644 --- a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc @@ -598,6 +598,7 @@ [19, "(function object :behavior nav-enemy)"], [20, "(function uint :behavior nav-enemy)"], [21, "(function none :behavior nav-enemy)"], + [28, "(function symbol :behavior nav-enemy)"], [29, "(function symbol :behavior nav-enemy)"], [30, "(function object :behavior nav-enemy)"], [31, "(function object :behavior nav-enemy)"], diff --git a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc index 6c6ad2b182..83f05807ce 100644 --- a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc @@ -363,7 +363,6 @@ "(method 32 nav-control)", // collectables BUG - "birth-pickup-at-point", "add-blue-motion", // ocean @@ -374,7 +373,7 @@ "ocean-interp-wave", // nav-enemy BUG - "(anon-function 28 nav-enemy)", + // "(anon-function 28 nav-enemy)", // orb-cache BUG "(method 27 orb-cache-top)", @@ -396,7 +395,6 @@ "(anon-function 8 game-save)", "(anon-function 9 game-save)", "(anon-function 10 game-save)", - "(anon-function 28 nav-enemy)", "mistycannon-find-best-solution", "target-flut-falling-anim-trans", "kermit-check-to-hit-player?", diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index 8d25a07678..514413f6f6 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -1427,7 +1427,7 @@ ["L41", "_lambda_", true], ["L44", "_lambda_", true], ["L45", "_lambda_", true], - // ["L76", "_lambda_", true], + ["L76", "_lambda_", true], ["L82", "_lambda_", true], ["L86", "_lambda_", true], ["L88", "_lambda_", true], diff --git a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc index b4c47694f2..68204f1a9f 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -902,5 +902,9 @@ [16, "event-message-block"] ], + "birth-pickup-at-point": [ + [16, "vector"] + ], + "placeholder-do-not-add-below!": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index addddcf2ba..c1295e2bfd 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -1802,13 +1802,16 @@ "nav-enemy-set-base-collide-sphere-collide-with": [ [[0, 999], "s6", "nav-enemy"], [19, "v1", "collide-shape-prim-group"], + [23, "s2", "collide-shape-prim"], [32, "v1", "collide-shape-prim-sphere"], [33, "s5", "collide-shape-prim-group"], [37, "v1", "collide-shape-prim-sphere"], [38, "s5", "collide-shape-prim-group"], [42, "v1", "collide-shape-prim-sphere"], [43, "s5", "collide-shape-prim-group"], - [50, "s4", "collide-shape-prim-group"] + [50, "s4", "collide-shape-prim-group"], + [54, "s5", "collide-shape-prim"], + [55, "s5", "collide-shape-prim"] ], "nav-enemy-jump-land-anim": [ @@ -1901,11 +1904,11 @@ [[6, 9], "t9", "(function object)"] ], "(anon-function 11 nav-enemy)": [ - [[80, 84], "t9", "(function object object object object)"] + [[80, 84], "t9", "(function object)"] ], "nav-enemy-init-by-other": [ - [[54, 58], "t9", "(function object object object object)"] + [[54, 58], "t9", "(function object object)"] ], "nav-enemy-set-hit-from-direction": [ @@ -1924,6 +1927,10 @@ [[22, 26], "t9", "(function object)"] ], + "(method 45 nav-enemy)": [ + [14, "v1", "process-mask"] + ], + "nav-enemy-default-event-handler": [ [62, "a0", "vector"], [82, "a0", "vector"], @@ -1940,5 +1947,13 @@ [19, "t9", "(function process-drawable int none)"] ], + "(anon-function 59 nav-enemy)": [ + [8, "v1", "int"] + ], + + "(anon-function 28 nav-enemy)": [ + [31, "v1", "int"] + ], + "placeholder-do-not-add-below": [] } diff --git a/goal_src/engine/collide/collide-shape-h.gc b/goal_src/engine/collide/collide-shape-h.gc index ff994e4df0..336d83f895 100644 --- a/goal_src/engine/collide/collide-shape-h.gc +++ b/goal_src/engine/collide/collide-shape-h.gc @@ -183,33 +183,14 @@ :size-assert #x4c :flag-assert #x1c0000004c (:methods - (new (symbol type basic uint) _type_ 0) - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 () none 16) - (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) - (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) - ) + (new (symbol type basic uint) _type_ 0) + ) ) ;; mesh collision ;; the pats are stored per tri in the mesh. (deftype collide-shape-prim-mesh (collide-shape-prim) - ((mesh basic :offset-assert 72) + ((mesh collide-mesh :offset-assert 72) (mesh-id int32 :offset-assert 76) (mesh-cache-id uint64 :offset-assert 80) (mesh-cache-tris uint32 :offset-assert 88) @@ -218,63 +199,25 @@ :size-assert #x5c :flag-assert #x1d0000005c (:methods - (new (symbol type basic uint uint) _type_ 0) - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 () none 16) - (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) - (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) - (dummy-28 () none 28) - ) + (new (symbol type basic uint uint) _type_ 0) + (dummy-28 () none 28) + ) ) ;; A group of collide-shape-prim's (deftype collide-shape-prim-group (collide-shape-prim) ((num-prims int32 :offset-assert 72) (allocated-prims int32 :offset-assert 76) - (prim uint32 1 :offset-assert 80) ;; array of references. + (prim uint32 1 :offset-assert 80) ; array of references ) :method-count-assert 30 :size-assert #x54 :flag-assert #x1e00000054 (:methods - (new (symbol type basic uint int) _type_ 0) - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 () none 16) - (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) - (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) - (dummy-28 () none 28) - (dummy-29 () none 29) - ) + (new (symbol type basic uint int) _type_ 0) + (dummy-28 () none 28) + (dummy-29 () none 29) + ) ) (defenum collide-list-enum @@ -293,8 +236,8 @@ (pat-ignore-mask pat-surface :offset-assert 148) (event-self basic :offset-assert 152) (event-other basic :offset-assert 156) - (root-prim collide-shape-prim :offset-assert 160) - (riders basic :offset-assert 164) + (root-prim collide-shape-prim :offset-assert 160) + (riders collide-sticky-rider-group :offset-assert 164) (backup-collide-as uint64 :offset-assert 168) (backup-collide-with uint64 :offset-assert 176) ) diff --git a/goal_src/engine/collide/collide-touch-h.gc b/goal_src/engine/collide/collide-touch-h.gc index 2854368bfc..373d6e5f7f 100644 --- a/goal_src/engine/collide/collide-touch-h.gc +++ b/goal_src/engine/collide/collide-touch-h.gc @@ -6,8 +6,8 @@ ;; dgos: GAME, ENGINE (deftype touching-prim (structure) - ((cprim basic :offset-assert 0) - (has-tri? basic :offset-assert 4) + ((cprim collide-shape-prim :offset-assert 0) ;; a big guess, there's a few that meet this name + (has-tri? symbol :offset-assert 4) (tri collide-tri-result :inline :offset-assert 16) ) :method-count-assert 9 @@ -18,7 +18,7 @@ (deftype touching-prims-entry (structure) ((next touching-prims-entry :offset-assert 0) (prev touching-prims-entry :offset-assert 4) - (allocated? basic :offset-assert 8) + (allocated? symbol :offset-assert 8) (u float :offset-assert 12) (prim1 touching-prim :inline :offset-assert 16) (prim2 touching-prim :inline :offset-assert 128) @@ -27,11 +27,11 @@ :size-assert #xe4 :flag-assert #xd000000e4 (:methods - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - ) + (dummy-9 () none 9) + (dummy-10 () none 10) + (dummy-11 () none 11) + (dummy-12 () none 12) + ) ) (deftype touching-prims-entry-pool (structure) @@ -88,8 +88,8 @@ ) (deftype touching-shapes-entry (structure) - ((cshape1 basic :offset-assert 0) - (cshape2 basic :offset-assert 4) + ((cshape1 collide-shape :offset-assert 0) + (cshape2 collide-shape :offset-assert 4) (resolve-u int8 :offset-assert 8) (head touching-prims-entry :offset-assert 12) ) @@ -98,16 +98,16 @@ :size-assert #x10 :flag-assert #x1200000010 (:methods - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (get-head (_type_) touching-prims-entry 16) - (unknown1 (_type_ (pointer uint32)) uint 17) - ) + (dummy-9 () none 9) + (dummy-10 () none 10) + (dummy-11 () none 11) + (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one! + (dummy-13 () none 13) + (dummy-14 () none 14) + (dummy-15 () none 15) + (get-head (_type_) touching-prims-entry 16) + (unknown1 (_type_ (pointer uint32)) uint 17) + ) ) (deftype touching-list (structure) diff --git a/goal_src/engine/game/fact-h.gc b/goal_src/engine/game/fact-h.gc index 5c44304a10..0f8b4b8d8b 100644 --- a/goal_src/engine/game/fact-h.gc +++ b/goal_src/engine/game/fact-h.gc @@ -94,7 +94,7 @@ :flag-assert #xc00000028 (:methods (new (symbol type process pickup-type float) _type_ 0) - (dummy-9 () none 9) + (dummy-9 () uint 9) ;; See nav-enemy::process-drawable-death-event-handler (reset! (_type_ symbol) none 10) (dummy-11 (_type_) float 11) ) diff --git a/goal_src/engine/nav/navigate-h.gc b/goal_src/engine/nav/navigate-h.gc index 582b2348d3..3b252ecbd3 100644 --- a/goal_src/engine/nav/navigate-h.gc +++ b/goal_src/engine/nav/navigate-h.gc @@ -9,15 +9,18 @@ :bitfield #t :type uint32 (display-marks 0) + (bit0 0) ;; TODO - nav-enemy::45 (bit1 1) (bit2 2) - (bit3 3) + (bit3 3) ;; TODO - nav-enemy::45 (bit4 4) - (bit5 5) - (bit6 6) - (bit7 7) + (bit5 5) ;; TODO - nav-enemy::45 + (bit6 6) ;; TODO - nav-enemy::45 + (bit7 7) ;; TODO - nav-enemy::45 (bit8 8) + (bit10 10) ;; TODO - nav-enemy::nav-enemy-patrol-post (bit13 13) + (bit19 19) ;; TODO - nav-enemy::lambda::17 ) (deftype nav-poly (structure) @@ -201,38 +204,38 @@ ) (deftype nav-control (basic) - ((flags nav-control-flags :offset-assert 4) - (process basic :offset-assert 8) - (shape collide-shape :offset-assert 12) - (mesh nav-mesh :offset-assert 16) - (gap-event basic :offset-assert 20) - (block-event basic :offset-assert 24) - (current-poly nav-poly :offset-assert 28) - (next-poly nav-poly :offset-assert 32) - (target-poly nav-poly :offset-assert 36) - (portal nav-route-portal 2 :offset-assert 40) - (nearest-y-threshold meters :offset-assert 48) - (event-temp vector :inline :offset-assert 64) - (old-travel vector :inline :offset-assert 80) - (blocked-travel vector :inline :offset-assert 96) - (prev-pos vector :inline :offset-assert 112) - (extra-nav-sphere vector :inline :offset-assert 128) - (travel vector :inline :offset-assert 144) - (target-pos vector :inline :offset-assert 160) - (destination-pos vector :inline :offset-assert 176) - (block-time uint64 :offset-assert 192) - (block-count float :offset-assert 200) - (user-poly nav-poly :offset-assert 204) - (nav-cull-radius float :offset-assert 208) - (num-spheres int16 :offset-assert 212) - (max-spheres int16 :offset-assert 214) - (sphere sphere :inline :dynamic :offset-assert 224) + ((flags nav-control-flags :offset-assert 4) + (process basic :offset-assert 8) + (shape collide-shape :offset-assert 12) + (mesh nav-mesh :offset-assert 16) + (gap-event basic :offset-assert 20) + (block-event basic :offset-assert 24) + (current-poly nav-poly :offset-assert 28) + (next-poly nav-poly :offset-assert 32) + (target-poly nav-poly :offset-assert 36) + (portal nav-route-portal 2 :offset-assert 40) ;; guess + (nearest-y-threshold meters :offset-assert 48) + (event-temp vector :inline :offset-assert 64) + (old-travel vector :inline :offset-assert 80) + (blocked-travel vector :inline :offset-assert 96) + (prev-pos vector :inline :offset-assert 112) + (extra-nav-sphere vector :inline :offset-assert 128) + (travel vector :inline :offset-assert 144) + (target-pos vector :inline :offset-assert 160) + (destination-pos vector :inline :offset-assert 176) + (block-time uint64 :offset-assert 192) + (block-count float :offset-assert 200) + (user-poly nav-poly :offset-assert 204) + (nav-cull-radius float :offset-assert 208) + (num-spheres int16 :offset-assert 212) + (max-spheres int16 :offset-assert 214) + (sphere sphere :inline :dynamic :offset-assert 224) ;; guess ) :method-count-assert 36 :size-assert #xe0 :flag-assert #x24000000e0 (:methods - (new (symbol type collide-shape int float) _type_ 0) + (new (symbol type collide-shape int float) _type_) (dummy-9 () none 9) (point-in-bounds? (_type_ vector) symbol 10) (dummy-11 () none 11) @@ -240,7 +243,7 @@ (dummy-13 () none 13) (dummy-14 () none 14) (set-target-pos! (_type_ vector) none 15) - (dummy-16 () none 16) + (dummy-16 (_type_ vector) symbol 16) ; see - nav-enemy-test-point-in-nav-mesh? (dummy-17 () none 17) (dummy-18 () none 18) (dummy-19 () none 19) @@ -249,7 +252,7 @@ (dummy-22 () none 22) (dummy-23 () none 23) (dummy-24 () none 24) - (dummy-25 () none 25) + (dummy-25 (_type_ vector float) symbol 25) ; see - nav-enemy-test-point-near-nav-mesh? (dummy-26 () none 26) (dummy-27 () none 27) (dummy-28 () none 28) diff --git a/goal_src/levels/common/nav-enemy-h.gc b/goal_src/levels/common/nav-enemy-h.gc index 7193b4c41a..eca695745f 100644 --- a/goal_src/levels/common/nav-enemy-h.gc +++ b/goal_src/levels/common/nav-enemy-h.gc @@ -64,7 +64,9 @@ ) (deftype nav-enemy (process-drawable) - ((hit-from-dir vector :inline :offset-assert 176) + ((collide-info collide-shape-moving :score 100 :offset 112) + (enemy-info fact-info-enemy :score 100 :offset 144) + (hit-from-dir vector :inline :offset-assert 176) (event-param-point vector :inline :offset-assert 192) (frustration-point vector :inline :offset-assert 208) (jump-dest vector :inline :offset-assert 224) @@ -78,7 +80,7 @@ (turn-time uint64 :offset-assert 312) (frustration-time uint64 :offset-assert 320) (speed-scale float :offset-assert 328) - (neck basic :offset-assert 332) + (neck joint-mod :offset-assert 332) ; this is what `neck` is on the pelican (reaction-time uint64 :offset-assert 336) (notice-time uint64 :offset-assert 344) (state-timeout uint64 :offset-assert 352) @@ -87,12 +89,13 @@ (nav-enemy-flags uint32 :offset-assert 376) (incomming-attack-id uint64 :offset-assert 384) (jump-return-state basic :offset-assert 392) - (rand-gen basic :offset-assert 396) + (rand-gen random-generator :offset-assert 396) ) :heap-base #x120 :method-count-assert 76 :size-assert #x190 :flag-assert #x4c01200190 + ;; inherited inspect of process-drawable (:methods (nav-enemy-attack () none 20) ;; state (nav-enemy-chase () none 21) ;; state @@ -108,47 +111,47 @@ (nav-enemy-stare () none 31) ;; state (nav-enemy-stop-chase () none 32) ;; state (nav-enemy-victory () none 33) ;; state - (dummy-34 () none 34) - (dummy-35 () none 35) - (dummy-36 () none 36) - (dummy-37 () none 37) - (dummy-38 () none 38) - (dummy-39 () none 39) - (dummy-40 () none 40) - (dummy-41 () none 41) - (dummy-42 () none 42) - (dummy-43 () none 43) - (dummy-44 () none 44) - (dummy-45 () none 45) - (dummy-46 () none 46) - (dummy-47 () none 47) - (dummy-48 () none 48) - (dummy-49 () none 49) - (dummy-50 () none 50) - (dummy-51 () none 51) - (dummy-52 () none 52) - (dummy-53 () none 53) - (dummy-54 () none 54) - (dummy-55 () none 55) - (dummy-56 () none 56) - (dummy-57 () none 57) - (dummy-58 () none 58) - (dummy-59 () none 59) - (dummy-60 () none 60) - (dummy-61 () none 61) - (dummy-62 () none 62) - (dummy-63 () none 63) - (dummy-64 () none 64) - (dummy-65 () none 65) - (dummy-66 () none 66) - (dummy-67 () none 67) - (dummy-68 () none 68) - (dummy-69 () none 69) - (dummy-70 () none 70) - (dummy-71 () none 71) - (dummy-72 () none 72) - (dummy-73 () none 73) - (dummy-74 () none 74) - (dummy-75 () none 75) + (dummy-34 (_type_) none 34) + (dummy-35 (_type_) none 35) + (dummy-36 (_type_) none 36) + (TODO-RENAME-37 (_type_) none 37) + (TODO-RENAME-38 (_type_) none 38) + (TODO-RENAME-39 (_type_) none 39) + (dummy-40 (_type_) none 40) + (dummy-41 (_type_) none 41) + (TODO-RENAME-42 (_type_) int 42) + (dummy-43 (_type_ process event-message-block) object 43) + (dummy-44 (_type_ process event-message-block) object 44) + (TODO-RENAME-45 (_type_ nav-enemy-info) none 45) + (TODO-RENAME-46 (_type_ float) basic 46) + (TODO-RENAME-47 (_type_) none 47) ;; - Stubbed + (TODO-RENAME-48 (_type_) none 48) ;; - Stubbed + (TODO-RENAME-49 (_type_ nav-enemy-info) float 49) + (TODO-RENAME-50 (_type_ vector) symbol 50) + (dummy-51 (_type_) none 51) + (dummy-52 (_type_) none 52) + (dummy-53 (_type_) none 53) + (dummy-54 (_type_) none 54) + (dummy-55 (_type_) none 55) + (dummy-56 (_type_) none 56) + (dummy-57 (_type_) none 57) + (dummy-58 (_type_) none 58) + (TODO-RENAME-59 (_type_) none 59) + (dummy-60 (_type_) none 60) + (dummy-61 (_type_) none 61) + (dummy-62 (_type_) none 62) + (dummy-63 (_type_) none 63) + (dummy-64 (_type_) none 64) + (dummy-65 (_type_) none 65) + (dummy-66 (_type_) none 66) + (dummy-67 (_type_) symbol 67) + (dummy-68 (_type_) none 68) + (dummy-69 (_type_) none 69) + (dummy-70 (_type_) none 70) + (dummy-71 (_type_) none 71) + (dummy-72 (_type_ process event-message-block) object 72) ;; TODO - args unknown, 3rd arg contains a touching-shapes-entry offset 16/20 + (TODO-RENAME-73 (_type_ process) symbol 73) + (dummy-74 (_type_) none 74) + (dummy-75 (_type_) none 75) ) ) diff --git a/test/decompiler/reference/levels/common/nav-enemy_REF.gc b/test/decompiler/reference/levels/common/nav-enemy_REF.gc new file mode 100644 index 0000000000..6af3f94f9c --- /dev/null +++ b/test/decompiler/reference/levels/common/nav-enemy_REF.gc @@ -0,0 +1,3973 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for function nav-enemy-rnd-float +(defun nav-enemy-rnd-float () + (rand-vu) + ) + +;; definition for function nav-enemy-rnd-percent? +(defun nav-enemy-rnd-percent? ((arg0 float)) + (>= arg0 (rand-vu)) + ) + +;; definition for function nav-enemy-rnd-float-range +(defbehavior nav-enemy-rnd-float-range nav-enemy ((arg0 float) (arg1 float)) + (+ arg0 (* (rand-vu) (- arg1 arg0))) + ) + +;; definition for function nav-enemy-rnd-int-count +(defun nav-enemy-rnd-int-count ((arg0 int)) + (the int (* (rand-vu) (the float arg0))) + ) + +;; definition for function nav-enemy-rnd-int-range +(defun nav-enemy-rnd-int-range ((arg0 int) (arg1 int)) + (+ arg0 (the int (* (rand-vu) (the float (+ (- 1 arg0) arg1))))) + ) + +;; definition for function nav-enemy-rnd-go-idle? +(defun nav-enemy-rnd-go-idle? ((arg0 float)) + (let* ((v1-3 (-> *display* frames (-> *display* last-screen) frame run-time)) + (f1-2 (fmax 0.0 (fmin 1.0 (* 0.001 (+ -7000.0 (the float v1-3)))))) + ) + (>= (+ arg0 (* f1-2 (- 1.0 arg0))) (rand-vu)) + ) + ) + +;; definition for method 9 of type trajectory +;; INFO: this function exists in multiple non-identical object files +(defmethod + eval-position! + trajectory + ((obj trajectory) (time float) (result vector)) + (vector+float*! + result + (-> obj initial-position) + (-> obj initial-velocity) + time + ) + (+! (-> result y) (* (* (* 0.5 time) time) (-> obj gravity))) + result + ) + +;; definition for method 7 of type nav-enemy +;; INFO: Return type mismatch none vs nav-enemy. +(defmethod relocate nav-enemy ((obj nav-enemy) (arg0 int)) + (if (nonzero? (-> obj neck)) + (set! (-> obj neck) (the-as joint-mod (+ (the-as int (-> obj neck)) arg0))) + ) + (if (nonzero? (-> obj rand-gen)) + (set! + (-> obj rand-gen) + (the-as random-generator (+ (the-as int (-> obj rand-gen)) arg0)) + ) + ) + (the-as + nav-enemy + ((the-as + (function process-drawable int none) + (find-parent-method nav-enemy 7) + ) + obj + arg0 + ) + ) + ) + +;; definition for method 42 of type nav-enemy +(defmethod TODO-RENAME-42 nav-enemy ((obj nav-enemy)) + (local-vars (v1-11 symbol)) + (with-pp + (when (<= (-> obj path curve num-cverts) 0) + (let ((t9-0 (the-as (function object object) enter-state)) + (a0-1 "no path") + ) + (set! (-> pp next-state) process-drawable-art-error) + (t9-0 a0-1) + ) + ) + (let ((s5-0 3)) + 0 + (let ((s4-0 (-> obj nav destination-pos))) + (until (or v1-11 (<= s5-0 0)) + (let ((v1-8 (nav-enemy-rnd-int-count (-> obj path curve num-cverts)))) + (eval-path-curve-div! (-> obj path) s4-0 (the float v1-8) 'interp) + ) + (+! s5-0 -1) + (set! + v1-11 + (< 4096.0 (vector-vector-xz-distance s4-0 (-> obj collide-info trans))) + ) + ) + ) + ) + 0 + ) + ) + +;; definition for method 39 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-39 nav-enemy ((obj nav-enemy)) + (when + (and + (logtest? (-> obj nav-enemy-flags) 256) + (or + (not *target*) + (and + (zero? (logand (-> *target* state-flags) #x80f8)) + (>= + (the-as int (- (-> *display* base-frame-counter) (-> obj touch-time))) + 15 + ) + ) + ) + ) + (let ((t9-0 (method-of-object (-> obj collide-info) dummy-54))) + 2 + 1 + (t9-0) + ) + (set! (-> obj nav-enemy-flags) (logand -257 (-> obj nav-enemy-flags))) + ) + ((method-of-object (-> obj draw shadow-ctrl) dummy-14)) + (when *target* + (if *target* + (look-at-enemy! + (-> *target* neck) + (the-as vector (-> obj collide-info root-prim prim-core)) + (if (logtest? (-> obj nav-enemy-flags) 4) + 'attacking + ) + obj + ) + ) + (if + (and + (nonzero? (-> obj neck)) + (nonzero? (logand (-> obj nav-enemy-flags) #x4000)) + ) + (set-target! + (-> obj neck) + (target-pos (-> obj nav-info player-look-at-joint)) + ) + ) + ) + (when (-> obj nav-info debug-draw-neck) + (if (nonzero? (-> obj neck)) + (joint-mod-debug-draw (-> obj neck)) + ) + ) + (ja-post) + 0 + (none) + ) + +;; definition for method 44 of type nav-enemy +(defmethod + dummy-44 + nav-enemy + ((obj nav-enemy) (arg0 process) (arg1 event-message-block)) + (if + (and + (logtest? (-> obj nav-enemy-flags) 64) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + ) + (nav-enemy-send-attack + arg0 + (the-as touching-shapes-entry (-> arg1 param 0)) + 'generic + ) + ) + ) + +;; definition for method 72 of type nav-enemy +(defmethod + dummy-72 + nav-enemy + ((obj nav-enemy) (arg0 process) (arg1 event-message-block)) + (if + (and + (logtest? (-> obj nav-enemy-flags) 64) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + ) + (nav-enemy-send-attack + arg0 + (the-as touching-shapes-entry (-> arg1 param 0)) + 'generic + ) + ) + ) + +;; definition for method 73 of type nav-enemy +(defmethod TODO-RENAME-73 nav-enemy ((obj nav-enemy) (arg0 process)) + (with-pp + (let ((v1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-0 from) pp) + (set! (-> v1-0 num-params) 1) + (set! (-> v1-0 message) 'get-attack-count) + (set! (-> v1-0 param 0) (the-as uint 1)) + (send-event-function arg0 v1-0) + ) + (logclear! (-> obj mask) (process-mask actor-pause attackable)) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> pp next-state) + (the-as state (method-of-object obj nav-enemy-die)) + ) + (t9-1) + ) + 'die + ) + ) + +;; definition for method 43 of type nav-enemy +(defmethod + dummy-43 + nav-enemy + ((obj nav-enemy) (arg0 process) (arg1 event-message-block)) + (with-pp + (cond + ((logtest? (-> obj nav-enemy-flags) 32) + (let ((v1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-2 from) pp) + (set! (-> v1-2 num-params) 1) + (set! (-> v1-2 message) 'get-attack-count) + (set! (-> v1-2 param 0) (the-as uint 1)) + (send-event-function arg0 v1-2) + ) + (logclear! (-> obj mask) (process-mask actor-pause attackable)) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> pp next-state) + (the-as state (method-of-object obj nav-enemy-die)) + ) + (t9-1) + ) + ) + (else + (dummy-44 obj arg0 arg1) + ) + ) + ) + ) + +;; definition for function nav-enemy-send-attack +;; INFO: Return type mismatch symbol vs object. +(defbehavior + nav-enemy-send-attack nav-enemy + ((arg0 process) (arg1 touching-shapes-entry) (arg2 symbol)) + (let ((v1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-0 from) self) + (set! (-> v1-0 num-params) 2) + (set! (-> v1-0 message) 'attack) + (set! (-> v1-0 param 0) (the-as uint arg1)) + (let ((a1-1 (new 'static 'attack-info :mask #xe0))) + (set! (-> a1-1 shove-back) (-> self nav-info attack-shove-back)) + (set! (-> a1-1 shove-up) (-> self nav-info attack-shove-up)) + (set! (-> a1-1 mode) arg2) + (set! (-> v1-0 param 1) (the-as uint a1-1)) + ) + (when (send-event-function arg0 v1-0) + (let ((t9-1 (method-of-object (-> self collide-info) dummy-54))) + 2 + 0 + (t9-1) + ) + (logior! (-> self nav-enemy-flags) 256) + #t + ) + ) + ) + +;; definition for function nav-enemy-default-event-handler +;; Used lq/sq +(defbehavior + nav-enemy-default-event-handler nav-enemy + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch) + (set! (-> self touch-time) (-> *display* base-frame-counter)) + (dummy-44 self arg0 arg3) + ) + (('attack) + (nav-enemy-set-hit-from-direction arg0) + (dummy-43 self arg0 arg3) + ) + (('instant-death) + (let ((gp-1 (-> self hit-from-dir))) + (vector-z-quaternion! gp-1 (-> self collide-info quat)) + (vector-float*! gp-1 gp-1 -1.0) + (vector-normalize! gp-1 1.0) + ) + (logclear! (-> self mask) (process-mask actor-pause attackable)) + (let ((t9-5 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-die)) + ) + (t9-5) + ) + ) + (('jump) + (when (!= (-> self next-state name) 'nav-enemy-jump-land) + (set! + (-> self event-param-point quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (set! (-> self nav user-poly) (the-as nav-poly (-> arg3 param 1))) + (set! (-> self jump-return-state) (-> self state)) + (let ((t9-6 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-jump)) + ) + (t9-6) + ) + ) + ) + (('cue-jump-to-point) + (when (logtest? (-> self nav-enemy-flags) 2048) + (set! + (-> self event-param-point quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (let ((v0-0 (the-as object (logand -2049 (-> self nav-enemy-flags))))) + (set! (-> self nav-enemy-flags) (the-as uint v0-0)) + v0-0 + ) + ) + ) + (('cue-chase) + (let ((t9-7 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-7) + ) + ) + (('cue-patrol) + (let ((t9-8 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-8) + ) + ) + (('go-wait-for-cue) + (let ((t9-9 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (method-of-object self dummy-35))) + (t9-9) + ) + ) + ) + ) + +;; definition for function nav-enemy-jump-event-handler +(defbehavior + nav-enemy-jump-event-handler nav-enemy + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch) + (set! (-> self touch-time) (-> *display* base-frame-counter)) + (dummy-72 self arg0 arg3) + ) + (('attack) + (nav-enemy-set-hit-from-direction arg0) + (TODO-RENAME-73 self arg0) + ) + ) + ) + +;; definition for function process-drawable-death-event-handler +(defbehavior + process-drawable-death-event-handler process-drawable + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('death-start) + (let ((t9-0 (method-of-object (-> self fact) dummy-9))) + #t + *entity-pool* + (-> self fact) + 0 + (t9-0) + ) + ) + (('death-end) + (let ((v0-0 (logior (-> self draw status) 2))) + (set! (-> self draw status) v0-0) + v0-0 + ) + ) + ) + ) + +;; failed to figure out what this is: +nav-enemy-default-event-handler + +;; definition for function nav-enemy-common-post +(defbehavior nav-enemy-common-post nav-enemy () + (TODO-RENAME-39 self) + (none) + ) + +;; definition for function nav-enemy-simple-post +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-simple-post nav-enemy () + (TODO-RENAME-9 (-> self align)) + (nav-enemy-common-post) + (dummy-47 (-> self collide-info)) + 0 + (none) + ) + +;; definition for method 40 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod dummy-40 nav-enemy ((obj nav-enemy)) + (let ((t9-0 (method-of-object (-> obj nav) dummy-11))) + (-> obj nav target-pos) + (t9-0) + ) + 0 + (none) + ) + +;; definition for method 41 of type nav-enemy +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod dummy-41 nav-enemy ((obj nav-enemy)) + (cond + ((-> obj nav-info use-align) + (TODO-RENAME-11 + (-> obj align) + 4 + (-> obj nav travel) + (the-as int 1.0) + 1.0 + (* (-> obj enemy-info speed) (-> obj speed-scale)) + ) + ) + (else + (cond + ((-> obj nav-info use-momentum) + (let* ((f0-3 (- (-> obj target-speed) (-> obj momentum-speed))) + (f1-4 + (fmin + (* (-> obj acceleration) (-> *display* seconds-per-frame)) + (fabs f0-3) + ) + ) + ) + (if (< f0-3 0.0) + (set! (-> obj momentum-speed) (- (-> obj momentum-speed) f1-4)) + (+! (-> obj momentum-speed) f1-4) + ) + ) + ) + (else + (set! (-> obj momentum-speed) (-> obj target-speed)) + ) + ) + (let* + ((f0-12 + (fmin + (* (-> obj speed-scale) (-> obj momentum-speed)) + (* (vector-length (-> obj nav travel)) (-> *display* frames-per-second)) + ) + ) + (v1-15 + (vector-normalize-copy! + (new 'stack-no-clear 'vector) + (-> obj nav travel) + f0-12 + ) + ) + ) + (set! (-> obj collide-info transv x) (-> v1-15 x)) + (set! (-> obj collide-info transv z) (-> v1-15 z)) + ) + ) + ) + (when (-> obj nav-info move-to-ground) + (let ((s5-0 vector-v++!) + (s4-0 (-> obj collide-info transv)) + (t9-3 (method-of-object (-> obj collide-info) dummy-62)) + ) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + 0.0 + (s5-0 s4-0 (the-as vector (t9-3))) + ) + ) + 0 + (none) + ) + +;; definition for method 37 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-37 nav-enemy ((obj nav-enemy)) + (when (logtest? (-> obj nav-enemy-flags) 16) + (if + (or + (logtest? (-> obj nav-enemy-flags) 128) + (nonzero? (logand #x80000 (-> obj nav flags))) + ) + (seek-to-point-toward-point! + (-> obj collide-info) + (-> obj nav target-pos) + (-> obj rotate-speed) + (the-as int (-> obj turn-time)) + ) + (seek-toward-heading-vec! + (-> obj collide-info) + (-> obj nav travel) + (-> obj rotate-speed) + (the-as int (-> obj turn-time)) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 38 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-38 nav-enemy ((obj nav-enemy)) + (cond + ((-> obj nav-info move-to-ground) + (let ((t9-0 (method-of-object (-> obj collide-info) dummy-59))) + (-> obj collide-info transv) + (-> obj nav-info gnd-collide-with) + 8192.0 + (-> obj nav-info hover-if-no-ground) + (nonzero? (logand (-> obj nav-enemy-flags) #x8000)) + (t9-0) + ) + ) + (else + (let ((t9-1 (method-of-object (-> obj collide-info) dummy-58))) + (-> obj collide-info transv) + (t9-1) + ) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-travel-post +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-travel-post nav-enemy () + (cond + ((logtest? (-> self nav-enemy-flags) 8) + (TODO-RENAME-9 (-> self align)) + (dummy-40 self) + (dummy-41 self) + (TODO-RENAME-37 self) + (TODO-RENAME-38 self) + (nav-enemy-common-post) + ) + (else + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) + (nav-enemy-simple-post) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #xff :b #xff :a #x80) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-patrol-post +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-patrol-post nav-enemy () + (when + (or (logtest? #x80000 (-> self nav flags)) (< 2.0 (-> self nav block-count))) + (set! (-> self nav block-count) 2.0) + (logior! (-> self nav flags) (nav-control-flags bit10)) + (nav-enemy-get-new-patrol-point) + ) + (let ((t9-1 (method-of-object (-> self nav) dummy-19))) + (-> self nav target-pos) + (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (t9-1) + ) + (if (logtest? #x200000 (-> self nav flags)) + (logclear! (-> self nav flags) (nav-control-flags bit10)) + ) + (nav-enemy-travel-post) + 0 + (none) + ) + +;; definition for function nav-enemy-chase-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-chase-post nav-enemy () + (set! (-> self nav target-pos quad) (-> (target-pos 0) quad)) + (nav-enemy-travel-post) + 0 + (none) + ) + +;; definition for function nav-enemy-flee-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-flee-post nav-enemy () + (let + ((gp-1 + (vector-! + (new 'stack-no-clear 'vector) + (-> self collide-info trans) + (target-pos 0) + ) + ) + ) + (vector-z-quaternion! + (new 'stack-no-clear 'vector) + (-> self collide-info quat) + ) + 0.0 + 0.0 + (set! (-> gp-1 y) 0.0) + (set! (-> self nav travel quad) (-> gp-1 quad)) + ) + (vector-normalize! (-> self nav travel) 409600.0) + (let ((t9-3 (method-of-object (-> self nav) dummy-24))) + 204.8 + (t9-3) + ) + (vector+! + (-> self nav target-pos) + (-> self collide-info trans) + (-> self nav travel) + ) + (nav-enemy-travel-post) + 0 + (none) + ) + +;; definition for function nav-enemy-face-player-post +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-face-player-post nav-enemy () + (if (and *target* (nonzero? (logand (-> self nav-enemy-flags) 16))) + (seek-to-point-toward-point! + (-> self collide-info) + (target-pos 0) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + ) + (nav-enemy-simple-post) + 0 + (none) + ) + +;; definition for function nav-enemy-falling-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-falling-post nav-enemy () + (let ((gp-0 vector-v++!) + (s5-0 (-> self collide-info transv)) + (t9-0 (method-of-object (-> self collide-info) dummy-62)) + ) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + 0.0 + (gp-0 s5-0 (the-as vector (t9-0))) + ) + (let ((t9-2 (method-of-object (-> self collide-info) dummy-33))) + (-> self collide-info transv) + (-> self collide-info root-prim collide-with) + (t9-2) + ) + (nav-enemy-common-post) + 0 + (none) + ) + +;; definition for function nav-enemy-death-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-death-post nav-enemy () + (let ((gp-0 vector-v++!) + (s5-0 (-> self collide-info transv)) + (t9-0 (method-of-object (-> self collide-info) dummy-62)) + ) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + 0.0 + (gp-0 s5-0 (the-as vector (t9-0))) + ) + (let ((t9-2 (method-of-object (-> self collide-info) dummy-57))) + (-> self collide-info transv) + (t9-2) + ) + (nav-enemy-common-post) + 0 + (none) + ) + +;; definition for function nav-enemy-neck-control-look-at +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-neck-control-look-at nav-enemy () + (logior! (-> self nav-enemy-flags) #x4000) + (if (nonzero? (-> self neck)) + (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-neck-control-inactive +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-neck-control-inactive nav-enemy () + (when + (and + (nonzero? (-> self neck)) + (nonzero? (logand (-> self nav-enemy-flags) #x4000)) + ) + (set! (-> self nav-enemy-flags) (logand -16385 (-> self nav-enemy-flags))) + (shut-down! (-> self neck)) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-player-vulnerable? +;; INFO: Return type mismatch basic vs symbol. +(defun nav-enemy-player-vulnerable? () + (the-as + symbol + (and *target* (zero? (logand (-> *target* state-flags) #x80f8))) + ) + ) + +;; definition for method 46 of type nav-enemy +(defmethod TODO-RENAME-46 nav-enemy ((obj nav-enemy) (arg0 float)) + (and + *target* + (zero? (logand (-> *target* state-flags) #x80f8)) + (and + (or + (zero? (logand (-> obj nav-enemy-flags) 4096)) + (< + (vector-vector-distance (target-pos 0) (-> obj collide-info trans)) + arg0 + ) + ) + (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)) + ) + ) + ) + +;; definition for function nav-enemy-notice-player? +(defbehavior nav-enemy-notice-player? nav-enemy () + (let ((gp-0 #f)) + (cond + ((logtest? (-> self nav-enemy-flags) 1) + (when + (>= + (the-as int (- (-> *display* base-frame-counter) (-> self notice-time))) + (the-as int (-> self reaction-time)) + ) + (set! gp-0 #t) + (set! (-> self nav-enemy-flags) (logand -2 (-> self nav-enemy-flags))) + ) + ) + (else + (when + (or + (TODO-RENAME-46 self (-> self nav-info notice-distance)) + (and + (-> self nav-info use-proximity-notice) + *target* + (>= + (-> self nav-info proximity-notice-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + ) + (logior! (-> self nav-enemy-flags) 1) + (set! (-> self notice-time) (-> *display* base-frame-counter)) + ) + ) + ) + gp-0 + ) + ) + +;; definition for function nav-enemy-facing-direction? +;; Used lq/sq +(defbehavior nav-enemy-facing-direction? nav-enemy ((arg0 vector) (arg1 float)) + (let + ((s4-0 + (vector-z-quaternion! + (new 'stack-no-clear 'vector) + (-> self collide-info quat) + ) + ) + (s5-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s5-0 quad) (-> arg0 quad)) + (set! (-> s5-0 y) 0.0) + (vector-normalize! s5-0 1.0) + (>= (vector-dot s4-0 s5-0) (cos arg1)) + ) + ) + +;; definition for function nav-enemy-facing-point? +(defbehavior nav-enemy-facing-point? nav-enemy ((arg0 vector) (arg1 float)) + (let + ((v1-1 + (vector-! (new 'stack-no-clear 'vector) arg0 (-> self collide-info trans)) + ) + ) + (nav-enemy-facing-direction? v1-1 arg1) + ) + ) + +;; definition for function nav-enemy-facing-player? +(defun nav-enemy-facing-player? ((arg0 float)) + (nav-enemy-facing-point? (target-pos 0) arg0) + ) + +;; definition for function nav-enemy-test-nav-mesh-intersection-xz? +(defbehavior nav-enemy-test-nav-mesh-intersection-xz? nav-enemy ((arg0 vector)) + (dummy-16 (-> self nav) arg0) + ) + +;; definition for function nav-enemy-test-point-in-nav-mesh? +(defbehavior nav-enemy-test-point-in-nav-mesh? nav-enemy ((arg0 vector)) + (and + (dummy-16 (-> self nav) arg0) + (< + (-> arg0 y) + (+ (-> self collide-info trans y) (-> self enemy-info notice-top)) + ) + ) + ) + +;; definition for function nav-enemy-test-point-near-nav-mesh? +(defbehavior nav-enemy-test-point-near-nav-mesh? nav-enemy ((arg0 vector)) + (and + (dummy-25 (-> self nav) arg0 (-> self nav-info notice-nav-radius)) + (< + (-> arg0 y) + (+ (-> self collide-info trans y) (-> self enemy-info notice-top)) + ) + ) + ) + +;; definition for function nav-enemy-get-new-patrol-point +(defbehavior nav-enemy-get-new-patrol-point nav-enemy () + (TODO-RENAME-42 self) + 0 + ) + +;; definition for function nav-enemy-set-base-collide-sphere-collide-with +;; INFO: Return type mismatch int vs none. +(defbehavior + nav-enemy-set-base-collide-sphere-collide-with nav-enemy + ((arg0 uint)) + (let ((s5-0 (-> self collide-info root-prim))) + (set! (-> s5-0 collide-with) arg0) + (let + ((s4-0 + (if + (and + (nonzero? s5-0) + (type-type? (-> s5-0 type) collide-shape-prim-group) + ) + s5-0 + ) + ) + (s5-1 (the-as object #f)) + ) + (when s4-0 + (dotimes (s3-0 (-> (the-as collide-shape-prim-group s4-0) num-prims)) + (let* + ((s2-0 + (the-as + object + (-> + (the-as collide-shape-prim-group (+ (* s3-0 4) (the-as int s4-0))) + prim + 0 + ) + ) + ) + (v1-6 + (if + (and + (nonzero? (the-as uint s2-0)) + (type-type? + (-> (the-as collide-shape-prim s2-0) type) + collide-shape-prim-sphere + ) + ) + (the-as uint s2-0) + ) + ) + ) + (when (the-as uint v1-6) + (if + (or + (not (the-as uint s5-1)) + (< + (-> (the-as collide-shape-prim-sphere v1-6) transform-index) + (-> (the-as collide-shape-prim-group s5-1) transform-index) + ) + (and + (= + (-> (the-as collide-shape-prim-sphere v1-6) transform-index) + (-> (the-as collide-shape-prim-group s5-1) transform-index) + ) + (< + (-> (the-as collide-shape-prim-sphere v1-6) local-sphere y) + (-> (the-as collide-shape-prim-group s5-1) local-sphere y) + ) + ) + ) + (set! s5-1 (the-as uint v1-6)) + ) + ) + ) + ) + (if (the-as collide-shape-prim s5-1) + (set! (-> (the-as collide-shape-prim s5-1) collide-with) arg0) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-set-hit-from-direction +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-set-hit-from-direction nav-enemy ((arg0 process)) + (let* ((gp-0 (-> self hit-from-dir)) + (s5-0 arg0) + (v1-1 + (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) + s5-0 + ) + ) + ) + (set! (-> gp-0 quad) (-> *null-vector* quad)) + (when v1-1 + (vector-! + gp-0 + (-> self collide-info trans) + (-> (the-as process-drawable v1-1) root trans) + ) + (set! (-> gp-0 y) 0.0) + (vector-xz-normalize! gp-0 1.0) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-fall-and-play-death-anim +;; INFO: Return type mismatch int vs none. +(defbehavior + nav-enemy-fall-and-play-death-anim nav-enemy + ((arg0 art-joint-anim) (arg1 int) (arg2 float)) + (nav-enemy-neck-control-inactive) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self skel root-channel 0 frame-group) arg0) + (let ((s4-1 #f) + (s3-0 (-> self collide-info)) + ) + (when + (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) collide-shape-moving)) + s3-0 + ) + (when (= (vector-xz-length-squared (-> self hit-from-dir)) 0.0) + (vector-z-quaternion! (-> self hit-from-dir) (-> self collide-info quat)) + (vector-negate-in-place! (-> self hit-from-dir)) + (set! (-> self hit-from-dir y) 0.0) + (vector-xz-normalize! (-> self hit-from-dir) 1.0) + ) + (set! (-> self collide-info transv y) 65502.96) + (let ((v1-14 (-> self skel root-channel 0))) + (set! (-> v1-14 num-func) num-func-identity) + (set! (-> v1-14 frame-num) 0.0) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! + (-> self collide-info status) + (logand -8 (-> self collide-info status)) + ) + (until (begin + (suspend) + (let ((a0-13 (-> self skel root-channel 0))) + (set! + (-> a0-13 param 0) + (the float (+ (-> a0-13 frame-group data 0 length) -1)) + ) + (set! (-> a0-13 param 1) arg2) + (joint-control-channel-group-eval! + a0-13 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (cond + ((nonzero? (-> self align)) + (when (not s4-1) + (TODO-RENAME-9 (-> self align)) + (TODO-RENAME-10 (-> self align) 4098 1.0 (the-as float arg1) 1.0) + (when (zero? (logand (-> self align flags) 1)) + (let + ((f0-6 + (* + (- (-> self align delta trans z)) + (-> *display* frames-per-second) + ) + ) + ) + (set! + (-> self collide-info transv x) + (* (-> self hit-from-dir x) f0-6) + ) + (set! + (-> self collide-info transv z) + (* (-> self hit-from-dir z) f0-6) + ) + ) + ) + ) + ) + (else + (let ((f0-8 20480.0)) + (set! (-> self collide-info transv x) (* (-> self hit-from-dir x) f0-8)) + (set! (-> self collide-info transv z) (* (-> self hit-from-dir z) f0-8)) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-turn-to-face-dir +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-turn-to-face-dir nav-enemy ((arg0 vector) (arg1 float)) + (local-vars (v1-16 symbol)) + (let ((s4-0 (-> *display* base-frame-counter))) + (let ((v1-3 (-> self skel root-channel 0))) + (set! + (-> v1-3 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info turn-anim)) + ) + ) + ) + (let ((v1-6 (-> self skel root-channel 0))) + (set! (-> v1-6 num-func) num-func-identity) + (set! (-> v1-6 frame-num) 0.0) + ) + (until v1-16 + (seek-toward-heading-vec! + (-> self collide-info) + arg0 + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) 0.75) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (set! + v1-16 + (or + (>= (the-as int (- (-> *display* base-frame-counter) s4-0)) 3000) + (nav-enemy-facing-direction? arg0 arg1) + ) + ) + ) + ) + (forward-up->quaternion (-> self collide-info quat) arg0 *y-vector*) + 0 + (none) + ) + +;; definition for function nav-enemy-turn-to-face-point +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-turn-to-face-point nav-enemy ((arg0 vector) (arg1 float)) + (let + ((gp-1 + (vector-! (new 'stack-no-clear 'vector) arg0 (-> self collide-info trans)) + ) + ) + (set! (-> gp-1 y) 0.0) + (when (< 0.0 (vector-length gp-1)) + (vector-normalize! gp-1 1.0) + (nav-enemy-turn-to-face-dir gp-1 arg1) + ) + ) + 0 + (none) + ) + +;; definition for method 12 of type nav-enemy +(defmethod run-logic? nav-enemy ((obj nav-enemy)) + (or + (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or + (and + (nonzero? (-> obj draw)) + (and + (>= + (+ + (-> *ACTOR-bank* pause-dist) + (-> obj collide-info pause-adjust-distance) + ) + (vector-vector-distance (-> obj collide-info trans) (camera-pos)) + ) + (or + (logtest? (-> obj draw status) 8) + (!= (-> obj next-state name) 'nav-enemy-idle) + ) + ) + ) + (and + (nonzero? (-> obj skel)) + (!= (-> obj skel root-channel 0) (-> obj skel channel)) + ) + (and (nonzero? (-> obj draw)) (nonzero? (logand (-> obj draw status) 16))) + ) + ) + ) + +;; failed to figure out what this is: +(let + ((gp-0 + (new 'static 'state + :name 'nav-enemy-idle + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 28 (the-as function gp-0)) + (set! (-> gp-0 event) nav-enemy-default-event-handler) + (set! + (-> gp-0 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (nav-enemy-neck-control-inactive) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (when (-> self nav-info move-to-ground) + (let ((t9-1 (method-of-object (-> self collide-info) dummy-60))) + 40960.0 + 40960.0 + #t + (-> self nav-info gnd-collide-with) + (t9-1) + ) + ) + (set! (-> self nav-enemy-flags) (logand -7 (-> self nav-enemy-flags))) + (let ((v0-2 300)) + (set! (-> self state-timeout) (the-as uint v0-2)) + v0-2 + ) + ) + ) + ) + (set! + (-> gp-0 trans) + (lambda :behavior nav-enemy + () + (when + (and + (and + *target* + (>= + (-> self enemy-info idle-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + (the-as int (-> self state-timeout)) + ) + (nonzero? (-> self draw)) + (nonzero? (logand (-> self draw status) 8)) + ) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-1) + ) + ) + ) + ) + (set! + (-> gp-0 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 22) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + ) + (let ((v1-5 (-> self skel root-channel 0))) + (set! (-> v1-5 num-func) num-func-identity) + (set! (-> v1-5 frame-num) 0.0) + ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) + (while #t + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) f30-0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-0 post) ja-post) + ) + +;; failed to figure out what this is: +(let + ((gp-1 + (new 'static 'state + :name 'nav-enemy-patrol + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 30 (the-as function gp-1)) + (set! (-> gp-1 event) nav-enemy-default-event-handler) + (set! + (-> gp-1 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! + (-> self nav flags) + (the-as + nav-control-flags + (the-as int (logior #x80000 (-> self nav flags))) + ) + ) + (set! (-> self nav-enemy-flags) (logand -5 (-> self nav-enemy-flags))) + (logior! (-> self nav-enemy-flags) 8) + (set! (-> self state-timeout) (the-as uint 300)) + (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) + (set! (-> self acceleration) (-> self nav-info walk-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info walk-rotate-speed)) + (let ((v0-0 (-> self nav-info walk-turn-time))) + (set! (-> self turn-time) (the-as uint v0-0)) + (the-as uint v0-0) + ) + ) + ) + ) + (set! + (-> gp-1 exit) + (lambda :behavior nav-enemy + () + (let ((v0-0 (logior (-> self nav-enemy-flags) 8))) + (set! (-> self nav-enemy-flags) v0-0) + v0-0 + ) + ) + ) + (set! + (-> gp-1 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 30 + ) + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + (the-as int (-> self state-timeout)) + ) + (if + (and + (nonzero? (-> self draw)) + (nonzero? (logand (-> self draw status) 8)) + ) + (set! (-> self free-time) (-> *display* base-frame-counter)) + ) + (when + (or + (or + (not *target*) + (< + (-> self enemy-info idle-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (>= + (the-as int (- (-> *display* base-frame-counter) (-> self free-time))) + 600 + ) + ) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-idle)) + ) + (t9-1) + ) + ) + ) + (when + (and + (-> self nav-info use-flee) + (and + (and + *target* + (>= + (-> self nav-info notice-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (let ((gp-0 'racer) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) 'query) + (set! (-> a1-2 param 0) (the-as uint 'mode)) + (= gp-0 (send-event-function *target* a1-2)) + ) + ) + ) + (let ((t9-4 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self dummy-22)) + ) + (t9-4) + ) + ) + (when (nav-enemy-notice-player?) + (let ((t9-6 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-notice)) + ) + (t9-6) + ) + ) + ) + ) + ) + (set! + (-> gp-1 code) + (lambda :behavior nav-enemy + () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (while #t + (let ((a0-1 (-> self skel root-channel 0))) + (set! + (-> a0-1 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + ) + (set! + (-> a0-1 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-1 param 1) f30-0) + (set! (-> a0-1 frame-num) 0.0) + (joint-control-channel-group! + a0-1 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 param 0) + (the float (+ (-> a0-2 frame-group data 0 length) -1)) + ) + (set! (-> a0-2 param 1) f30-0) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + (when (nav-enemy-rnd-go-idle? 0.2) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 param 0) 1.0) + (joint-control-channel-group! + a0-5 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 180) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (let ((a0-8 (-> self skel root-channel 0))) + (set! + (-> a0-8 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + (set! + (-> a0-8 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-8 param 1) f30-0) + (set! (-> a0-8 frame-num) 0.0) + (joint-control-channel-group! + a0-8 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (ja-blend-eval) + (suspend) + (let ((a0-9 (-> self skel root-channel 0))) + (set! + (-> a0-9 param 0) + (the float (+ (-> a0-9 frame-group data 0 length) -1)) + ) + (set! (-> a0-9 param 1) f30-0) + (joint-control-channel-group-eval! + a0-9 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + (until (begin + (not (nav-enemy-rnd-go-idle? 0.2)) + ) + (let ((a0-11 (-> self skel root-channel 0))) + (set! + (-> a0-11 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + (set! + (-> a0-11 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-11 param 1) f30-0) + (set! (-> a0-11 frame-num) 0.0) + (joint-control-channel-group! + a0-11 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-12 (-> self skel root-channel 0))) + (set! + (-> a0-12 param 0) + (the float (+ (-> a0-12 frame-group data 0 length) -1)) + ) + (set! (-> a0-12 param 1) f30-0) + (joint-control-channel-group-eval! + a0-12 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + (logior! (-> self nav-enemy-flags) 8) + (let ((a0-15 (-> self skel root-channel 0))) + (set! (-> a0-15 param 0) 1.0) + (joint-control-channel-group! + a0-15 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 180) + (let ((a0-17 (-> self skel root-channel 0))) + (set! + (-> a0-17 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + ) + (set! + (-> a0-17 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-17 param 1) f30-0) + (set! (-> a0-17 frame-num) 0.0) + (joint-control-channel-group! + a0-17 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (ja-blend-eval) + (suspend) + (let ((a0-18 (-> self skel root-channel 0))) + (set! + (-> a0-18 param 0) + (the float (+ (-> a0-18 frame-group data 0 length) -1)) + ) + (set! (-> a0-18 param 1) f30-0) + (joint-control-channel-group-eval! + a0-18 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-1 post) nav-enemy-patrol-post) + ) + +;; failed to figure out what this is: +(let + ((gp-2 + (new 'static 'state + :name 'nav-enemy-notice + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 29 (the-as function gp-2)) + (set! (-> gp-2 event) nav-enemy-default-event-handler) + (set! + (-> gp-2 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (logior! (-> self nav-enemy-flags) 4) + (nav-enemy-neck-control-look-at) + (when (logtest? (-> self nav-enemy-flags) 2) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-1) + ) + ) + (logior! (-> self nav-enemy-flags) 2) + (let ((gp-0 (-> self nav)) + (v1-10 (target-pos 0)) + ) + (set! (-> gp-0 target-pos quad) (-> v1-10 quad)) + ) + (let ((t9-3 (method-of-object (-> self nav) dummy-11))) + (-> self nav target-pos) + (t9-3) + ) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (let ((v0-4 (-> self nav-info run-turn-time))) + (set! (-> self turn-time) (the-as uint v0-4)) + (the-as uint v0-4) + ) + ) + ) + ) + (set! + (-> gp-2 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 22) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) f30-0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (seek-toward-heading-vec! + (-> self collide-info) + (-> self nav travel) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + (suspend) + (let ((a0-4 (-> self skel root-channel 0))) + (set! + (-> a0-4 param 0) + (the float (+ (-> a0-4 frame-group data 0 length) -1)) + ) + (set! (-> a0-4 param 1) f30-0) + (joint-control-channel-group-eval! + a0-4 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + (let ((t9-6 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-6) + ) + ) + ) + (set! (-> gp-2 post) nav-enemy-simple-post) + ) + +;; definition for function ja-group-index? +(defbehavior ja-group-index? nav-enemy ((arg0 int)) + (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data arg0) + ) + ) + +;; failed to figure out what this is: +(let + ((gp-3 + (new 'static 'state + :name 'nav-enemy-flee + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 22 (the-as function gp-3)) + (set! (-> gp-3 event) nav-enemy-default-event-handler) + (set! + (-> gp-3 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (let ((v0-0 (-> *display* base-frame-counter))) + (set! (-> self state-time) v0-0) + v0-0 + ) + ) + ) + ) + (set! + (-> gp-3 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + (the-as int (-> self reaction-time)) + ) + (when + (or + (or + (not *target*) + (< + (-> self nav-info stop-chase-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (let ((gp-0 'racer) + (a1-1 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 1) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'mode)) + (!= gp-0 (send-event-function *target* a1-1)) + ) + ) + (let ((t9-2 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-2) + ) + ) + ) + ) + ) + (set! + (-> gp-3 code) + (lambda :behavior nav-enemy + () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (ja-channel-push! 1 60) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) f30-0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) f30-0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + (ja-channel-push! 1 60) + (while #t + (let ((a0-6 (-> self skel root-channel 0))) + (set! + (-> a0-6 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + (set! + (-> a0-6 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-6 param 1) f30-0) + (set! (-> a0-6 frame-num) 0.0) + (joint-control-channel-group! + a0-6 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-7 (-> self skel root-channel 0))) + (set! + (-> a0-7 param 0) + (the float (+ (-> a0-7 frame-group data 0 length) -1)) + ) + (set! (-> a0-7 param 1) f30-0) + (joint-control-channel-group-eval! + a0-7 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-3 post) nav-enemy-face-player-post) + ) + +;; definition for function nav-enemy-reset-frustration +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-reset-frustration nav-enemy () + (set! (-> self nav-enemy-flags) (logand -8193 (-> self nav-enemy-flags))) + (if *target* + (set! (-> self frustration-point quad) (-> *target* control shadow-pos quad)) + ) + (set! (-> self frustration-time) (-> *display* base-frame-counter)) + 0 + (none) + ) + +;; definition for function nav-enemy-player-at-frustration-point? +(defbehavior nav-enemy-player-at-frustration-point? nav-enemy () + (if *target* + (< + (vector-vector-distance + (-> *target* control shadow-pos) + (-> self frustration-point) + ) + 6144.0 + ) + ) + ) + +;; definition for function nav-enemy-frustrated? +(defbehavior nav-enemy-frustrated? nav-enemy () + (and + (logtest? (-> self nav-enemy-flags) 8192) + (nav-enemy-player-at-frustration-point?) + ) + ) + +;; failed to figure out what this is: +(let + ((gp-4 + (new 'static 'state + :name 'nav-enemy-chase + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 21 (the-as function gp-4)) + (set! (-> gp-4 event) nav-enemy-default-event-handler) + (set! + (-> gp-4 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (nav-enemy-neck-control-look-at) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self free-time) (-> *display* base-frame-counter)) + (logior! (-> self nav-enemy-flags) 4) + (set! (-> self target-speed) (-> self nav-info run-travel-speed)) + (set! (-> self acceleration) (-> self nav-info run-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (the-as uint (-> self nav-info run-turn-time))) + (nav-enemy-reset-frustration) + (none) + ) + ) + ) + (set! + (-> gp-4 trans) + (lambda :behavior nav-enemy () (when (logtest? (-> *target* state-flags) 128) + (let + ((t9-0 + (the-as (function object) enter-state) + ) + ) + (set! + (-> self next-state) + (the-as + state + (method-of-object self nav-enemy-patrol) + ) + ) + (t9-0) + ) + ) + (when (logtest? (-> self nav-enemy-flags) 256) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-victory)) + ) + (t9-1) + ) + ) + (if + (or + (not (nav-enemy-player-at-frustration-point?)) + (< + (-> self nav-info frustration-distance) + (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans)) + ) + ) + (nav-enemy-reset-frustration) + ) + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + (the-as int (-> self reaction-time)) + ) + (if + (>= + (the-as + int + (- (-> *display* base-frame-counter) (-> self frustration-time)) + ) + (the-as + int + (+ (-> self reaction-time) (-> self nav-info frustration-time)) + ) + ) + (logior! (-> self nav-enemy-flags) 8192) + ) + (when + (or + (not (TODO-RENAME-46 self (-> self nav-info stop-chase-distance))) + (nonzero? (logand (-> self nav-enemy-flags) 8192)) + ) + (let ((t9-7 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-stop-chase)) + ) + (t9-7) + ) + ) + (cond + ((logtest? #x20000 (-> self nav flags)) + (when + (>= + (the-as int (- (-> *display* base-frame-counter) (-> self free-time))) + 300 + ) + (let ((t9-8 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-8) + ) + ) + ) + (else + (let ((v0-6 (the-as object (-> *display* base-frame-counter)))) + (set! (-> self free-time) (the-as uint v0-6)) + v0-6 + ) + ) + ) + ) + ) + ) + (set! + (-> gp-4 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 60) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info run-anim)) + ) + ) + ) + (let ((v1-5 (-> self skel root-channel 0))) + (set! (-> v1-5 num-func) num-func-identity) + (set! (-> v1-5 frame-num) 0.0) + ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (while #t + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) f30-0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-4 post) nav-enemy-chase-post) + ) + +;; failed to figure out what this is: +(let + ((gp-5 + (new 'static 'state + :name 'nav-enemy-stop-chase + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 32 (the-as function gp-5)) + (set! (-> gp-5 event) nav-enemy-default-event-handler) + (set! + (-> gp-5 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let* + ((f30-0 + (vector-vector-distance (-> self collide-info trans) (target-pos 0)) + ) + (gp-1 + (the + int + (+ + (lerp-scale 600.0 1800.0 f30-0 32768.0 122880.0) + (nav-enemy-rnd-float-range 0.0 30.0) + ) + ) + ) + ) + (when (< f30-0 40960.0) + (let ((t9-4 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-stare)) + ) + (t9-4) + ) + ) + (set! (-> self state-timeout) (the-as uint gp-1)) + ) + (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) + (set! (-> self acceleration) (-> self nav-info walk-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info walk-rotate-speed)) + (let ((v0-5 (-> self nav-info walk-turn-time))) + (set! (-> self turn-time) (the-as uint v0-5)) + (the-as uint v0-5) + ) + ) + ) + ) + (set! + (-> gp-5 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 30 + ) + (when (logtest? (-> *target* state-flags) 128) + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-0) + ) + ) + (when + (and + (TODO-RENAME-46 self (-> self nav-info notice-distance)) + (not (nav-enemy-frustrated?)) + ) + (let ((t9-3 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-3) + ) + ) + (when + (or + (or + (not *target*) + (< + (-> self enemy-info idle-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (logtest? #x20000 (-> self nav flags)) + (>= + (the-as + int + (- + (-> *display* base-frame-counter) + (the-as uint (-> self state-time)) + ) + ) + (the-as int (-> self state-timeout)) + ) + ) + (let ((t9-5 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-stare)) + ) + (t9-5) + ) + ) + ) + ) + ) + (set! + (-> gp-5 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 30) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + ) + ) + (let ((v1-5 (-> self skel root-channel 0))) + (set! (-> v1-5 num-func) num-func-identity) + (set! (-> v1-5 frame-num) 0.0) + ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (while #t + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) f30-0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-5 post) nav-enemy-chase-post) + ) + +;; failed to figure out what this is: +(let + ((gp-6 + (new 'static 'state + :name 'nav-enemy-stare + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 31 (the-as function gp-6)) + (set! (-> gp-6 event) nav-enemy-default-event-handler) + (set! + (-> gp-6 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + (let + ((f0-0 + (vector-vector-distance (-> self collide-info trans) (target-pos 0)) + ) + ) + (set! + (-> self state-timeout) + (the-as + uint + (the + int + (+ + (lerp-scale 3000.0 0.0 f0-0 12288.0 122880.0) + (nav-enemy-rnd-float-range 0.0 900.0) + ) + ) + ) + ) + ) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (the-as uint (-> self nav-info run-turn-time))) + (let ((v0-4 (-> self collide-info transv))) + (set! (-> v0-4 quad) (-> *null-vector* quad)) + v0-4 + ) + ) + ) + ) + (set! + (-> gp-6 exit) + (lambda :behavior nav-enemy + () + (let ((v0-0 (logior (-> self nav-enemy-flags) 16))) + (set! (-> self nav-enemy-flags) v0-0) + v0-0 + ) + ) + ) + (set! + (-> gp-6 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 30 + ) + (when (logtest? (-> *target* state-flags) 128) + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-0) + ) + ) + (cond + ((TODO-RENAME-46 self (-> self nav-info notice-distance)) + (when + (and + (>= + (the-as + int + (- (-> *display* base-frame-counter) (-> self notice-time)) + ) + (the-as int (-> self reaction-time)) + ) + (not (nav-enemy-frustrated?)) + ) + (let ((t9-3 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-3) + ) + ) + ) + (else + (set! (-> self notice-time) (-> *display* base-frame-counter)) + ) + ) + (when + (not + (or + (and + *target* + (>= + 40960.0 + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (and + (-> self nav-info use-proximity-notice) + *target* + (>= + (-> self nav-info proximity-notice-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + ) + ) + (set! (-> self nav-enemy-flags) (logand -5 (-> self nav-enemy-flags))) + (when + (>= + (the-as + int + (- + (-> *display* base-frame-counter) + (the-as uint (-> self state-time)) + ) + ) + (the-as int (-> self state-timeout)) + ) + (let ((t9-6 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-give-up)) + ) + (t9-6) + ) + ) + ) + (when + (or + (or + (not *target*) + (< + (-> self enemy-info idle-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (nonzero? (logand #x20000 (-> self nav flags))) + ) + (let ((t9-8 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-give-up)) + ) + (t9-8) + ) + ) + ) + ) + ) + (set! + (-> gp-6 code) + (lambda :behavior nav-enemy + () + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-give-up)) + ) + (t9-0) + ) + ) + ) + (set! (-> gp-6 post) nav-enemy-face-player-post) + ) + +;; failed to figure out what this is: +(let + ((gp-7 + (new 'static 'state + :name 'nav-enemy-give-up + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 25 (the-as function gp-7)) + (set! (-> gp-7 event) nav-enemy-default-event-handler) + (set! + (-> gp-7 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (nav-enemy-neck-control-inactive) + (let ((v0-1 (logand -5 (-> self nav-enemy-flags)))) + (set! (-> self nav-enemy-flags) v0-1) + v0-1 + ) + ) + ) + ) + (set! + (-> gp-7 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 30 + ) + (when (TODO-RENAME-46 self (-> self nav-info notice-distance)) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-1) + ) + ) + ) + ) + ) + (set! + (-> gp-7 code) + (lambda :behavior nav-enemy + () + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-0) + ) + ) + ) + (set! (-> gp-7 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-8 + (new 'static 'state + :name 'nav-enemy-attack + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 20 (the-as function gp-8)) + (set! (-> gp-8 event) nav-enemy-default-event-handler) + (set! + (-> gp-8 code) + (lambda :behavior nav-enemy + () + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-victory)) + ) + (t9-0) + ) + ) + ) + (set! (-> gp-8 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-9 + (new 'static 'state + :name 'nav-enemy-victory + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 33 (the-as function gp-9)) + (set! (-> gp-9 event) nav-enemy-default-event-handler) + (set! + (-> gp-9 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy () (let ((v0-0 (-> self collide-info transv))) + (set! + (-> v0-0 quad) + (-> *null-vector* quad) + ) + v0-0 + ) + ) + ) + ) + (set! + (-> gp-9 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 22) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info victory-anim)) + ) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info victory-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) f30-0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info victory-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) f30-0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + (let ((t9-5 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-stare)) + ) + (t9-5) + ) + ) + ) + (set! (-> gp-9 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-10 + (new 'static 'state + :name 'nav-enemy-die + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 23 (the-as function gp-10)) + (set! (-> gp-10 event) process-drawable-death-event-handler) + (set! + (-> gp-10 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 0) + (set! (-> a1-0 message) 'child-die) + (let ((t9-0 send-event-function) + (v1-1 (-> self parent)) + ) + (t9-0 (the-as process (if v1-1 + (-> v1-1 0 self) + ) + ) + a1-0 + ) + ) + ) + ) + ) + ) + (set! + (-> gp-10 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 22) + (dummy-48 (-> self collide-info)) + (let ((t9-2 nav-enemy-fall-and-play-death-anim) + (a0-4 (-> self draw art-group data (-> self nav-info die-anim))) + (a1-1 1.0) + (a2-0 1.0) + ) + 1000000000000000.0 + 600 + (t9-2 (the-as art-joint-anim a0-4) (the-as int a1-1) a2-0) + ) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'death-end) + (send-event-function self a1-2) + ) + (when (logtest? (-> self enemy-info options) 2) + (let ((t9-4 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-fuel-cell)) + ) + (t9-4) + ) + ) + (while (-> self child) + (suspend) + ) + (dummy-18 self) + ) + ) + (set! (-> gp-10 post) nav-enemy-death-post) + ) + +;; failed to figure out what this is: +(let + ((gp-11 + (new 'static 'state + :name 'nav-enemy-fuel-cell + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 24 (the-as function gp-11)) + (set! + (-> gp-11 event) + (the-as + (function process int symbol event-message-block object) + process-drawable-fuel-cell-handler + ) + ) + (set! + (-> gp-11 code) + (lambda :behavior nav-enemy + () + (ja-channel-set! 0) + (dummy-48 (-> self collide-info)) + (ja-post) + (process-entity-status! self (entity-perm-status complete) #t) + (when (not (task-complete? *game-info* (-> self entity extra perm task))) + (label cfg-1) + (let ((t9-5 birth-pickup-at-point) + (a0-4 (-> self collide-info trans)) + (a1-2 6) + (a2-1 (the float (the-as int (-> self entity extra perm task)))) + (a3-0 #f) + (t1-0 #f) + ) + (t9-5 a0-4 a1-2 a2-1 a3-0 self t1-0) + ) + (when (not (-> self child)) + (suspend) + (goto cfg-1) + ) + (while (-> self child) + (suspend) + ) + ) + (dummy-18 self) + ) + ) + ) + +;; definition for function nav-enemy-jump-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-jump-post nav-enemy () + (if (logtest? (-> self nav-enemy-flags) 16) + (seek-to-point-toward-point! + (-> self collide-info) + (-> self jump-dest) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + ) + (when (logtest? (-> self nav-enemy-flags) 8) + (let + ((f30-0 + (the float (- (-> *display* base-frame-counter) (-> self jump-time))) + ) + ) + (let + ((v1-12 + (eval-position! + (-> self jump-trajectory) + f30-0 + (new 'stack-no-clear 'vector) + ) + ) + ) + (set! (-> self collide-info trans quad) (-> v1-12 quad)) + ) + (eval-velocity! + (-> self jump-trajectory) + f30-0 + (-> self collide-info transv) + ) + ) + ) + (nav-enemy-simple-post) + 0 + (none) + ) + +;; definition for function nav-enemy-initialize-custom-jump +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior + nav-enemy-initialize-custom-jump nav-enemy + ((arg0 vector) (arg1 symbol) (arg2 float) (arg3 float) (arg4 float)) + (set! (-> self jump-dest quad) (-> arg0 quad)) + (let* ((s4-0 (-> self collide-info trans)) + (f28-0 (vector-vector-xz-distance s4-0 arg0)) + (f30-0 (fmax arg2 (* arg3 f28-0))) + ) + (let ((f26-0 (- (-> arg0 y) (-> s4-0 y)))) + (let ((f24-0 (vector-length (-> self collide-info transv))) + (s1-1 + (vector-z-quaternion! + (new 'stack-no-clear 'vector) + (-> self collide-info quat) + ) + ) + (s2-2 (vector-! (new 'stack-no-clear 'vector) arg0 s4-0)) + ) + (set! (-> s1-1 y) 0.0) + (set! (-> s2-2 y) 0.0) + (vector-xz-normalize! s1-1 1.0) + (vector-xz-normalize! s2-2 1.0) + (set! (-> self nav-enemy-flags) (logand -1537 (-> self nav-enemy-flags))) + (if + (or + (>= (* 0.5 (-> self nav-info run-travel-speed)) f24-0) + (>= (cos 3640.889) (vector-dot s1-1 s2-2)) + ) + (logior! (-> self nav-enemy-flags) 512) + ) + ) + (if + (or + (and (< f26-0 0.0) (< f28-0 (fabs f26-0))) + (and (< (fabs f26-0) 12288.0) (< f28-0 20480.0)) + ) + (logior! (-> self nav-enemy-flags) 1024) + ) + ) + (when (and arg1 (nonzero? (logand (-> self nav-enemy-flags) 1024))) + (set! (-> self nav-enemy-flags) (logand -513 (-> self nav-enemy-flags))) + (set! f30-0 2048.0) + ) + (setup-from-to-height! + (-> self jump-trajectory) + s4-0 + arg0 + f30-0 + (* 0.000011111111 arg4) + ) + ) + (set! (-> self nav extra-nav-sphere quad) (-> arg0 quad)) + (set! (-> self nav extra-nav-sphere w) (-> self collide-info nav-radius)) + (logior! (-> self collide-info nav-flags) 2) + 0 + (none) + ) + +;; definition for function nav-enemy-initialize-jump +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-initialize-jump nav-enemy ((arg0 vector)) + (nav-enemy-initialize-custom-jump + arg0 + #t + (-> self nav-info jump-height-min) + (-> self nav-info jump-height-factor) + -409600.0 + ) + 0 + (none) + ) + +;; definition for function nav-enemy-execute-custom-jump +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior + nav-enemy-execute-custom-jump nav-enemy + ((arg0 int) (arg1 float) (arg2 float)) + (when (logtest? (-> self nav-enemy-flags) 512) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) 1.0) + (joint-control-channel-group! + a0-1 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 30) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (let ((s3-0 (-> self skel root-channel 0))) + (set! + (-> s3-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data arg0)) + ) + (set! (-> s3-0 param 0) (ja-aframe arg1 0)) + (set! (-> s3-0 param 1) arg2) + (set! (-> s3-0 frame-num) 0.0) + (joint-control-channel-group! + s3-0 + (the-as art-joint-anim (-> self draw art-group data arg0)) + num-func-seek! + ) + ) + (until (begin + (ja-blend-eval) + (suspend) + (let ((s3-1 (-> self skel root-channel 0))) + (set! (-> s3-1 param 0) (ja-aframe arg1 0)) + (set! (-> s3-1 param 1) arg2) + (joint-control-channel-group-eval! + s3-1 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + (set! (-> self collide-info status) (logand -8 (-> self collide-info status))) + (set! (-> self jump-time) (-> *display* base-frame-counter)) + (logior! (-> self nav-enemy-flags) 8) + (cond + ((logtest? (-> self nav-enemy-flags) 1024) + (cond + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data (-> self nav-info run-anim)) + ) + ) + (else + (let ((a0-22 (-> self skel root-channel 0))) + (set! (-> a0-22 param 0) 1.0) + (joint-control-channel-group! + a0-22 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 30) + (let ((v1-39 (-> self skel root-channel 0))) + (set! + (-> v1-39 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info run-anim)) + ) + ) + ) + (let ((v1-42 (-> self skel root-channel 0))) + (set! (-> v1-42 num-func) num-func-identity) + (set! (-> v1-42 frame-num) 0.0) + ) + ) + ) + ) + (else + (let ((a0-30 (-> self skel root-channel 0))) + (set! (-> a0-30 param 0) 1.0) + (joint-control-channel-group! + a0-30 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 30) + (let ((v1-49 (-> self skel root-channel 0))) + (set! + (-> v1-49 frame-group) + (the-as art-joint-anim (-> self draw art-group data arg0)) + ) + ) + (let ((s5-1 (-> self skel root-channel 0))) + (set! (-> s5-1 num-func) num-func-identity) + (set! (-> s5-1 frame-num) (ja-aframe arg1 0)) + ) + ) + ) + (while + (< + (the float (- (-> *display* base-frame-counter) (-> self jump-time))) + (-> self jump-trajectory time) + ) + (suspend) + (let ((a0-36 (-> self skel root-channel 0))) + (set! + (-> a0-36 param 0) + (the float (+ (-> a0-36 frame-group data 0 length) -1)) + ) + (set! (-> a0-36 param 1) 1.0) + (joint-control-channel-group-eval! + a0-36 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-blend-eval) + ) + (set! (-> self collide-info trans quad) (-> self jump-dest quad)) + (set! (-> self collide-info transv y) 0.0) + (set! + (-> self collide-info nav-flags) + (logand -3 (-> self collide-info nav-flags)) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-execute-jump +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-execute-jump nav-enemy () + (nav-enemy-execute-custom-jump + (-> self nav-info jump-anim) + (-> self nav-info jump-anim-start-frame) + (-> self nav-info jump-start-anim-speed) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-jump-land-anim +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-jump-land-anim nav-enemy () + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 param 0) + (the float (+ (-> a0-0 frame-group data 0 length) -1)) + ) + (set! (-> a0-0 param 1) 1.0) + (joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!) + ) + (ja-channel-push! 1 22) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info jump-land-anim)) + ) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info jump-land-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info jump-land-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (ja-blend-eval) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +(let + ((gp-12 + (new 'static 'state + :name 'nav-enemy-jump + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 26 (the-as function gp-12)) + (set! (-> gp-12 event) nav-enemy-jump-event-handler) + (set! + (-> gp-12 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (when + (and + (-> self nav-info use-jump-blocked) + (TODO-RENAME-50 self (-> self event-param-point)) + ) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self dummy-74)) + ) + (t9-1) + ) + ) + (nav-enemy-initialize-jump (-> self event-param-point)) + (none) + ) + ) + ) + (set! + (-> gp-12 exit) + (lambda :behavior nav-enemy + () + (let ((v0-0 (logior (-> self nav-enemy-flags) 24))) + (set! (-> self nav-enemy-flags) v0-0) + v0-0 + ) + ) + ) + (set! + (-> gp-12 code) + (lambda :behavior nav-enemy + () + (nav-enemy-execute-jump) + (let ((a1-0 (the-as structure (-> self nav user-poly)))) + (if (not (the-as nav-poly a1-0)) + (set! a1-0 (dummy-16 (-> self nav) (-> self jump-dest))) + ) + (if a1-0 + ((method-of-object (-> self nav) dummy-14)) + ) + ) + (let ((t9-3 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-jump-land)) + ) + (t9-3) + ) + ) + ) + (set! (-> gp-12 post) nav-enemy-jump-post) + ) + +;; definition for function nav-enemy-jump-land-post +;; Used lq/sq +(defbehavior nav-enemy-jump-land-post nav-enemy () + (TODO-RENAME-9 (-> self align)) + (let ((t9-1 (method-of-object (-> self nav) dummy-11))) + (-> self nav target-pos) + (t9-1) + ) + (set! + (-> self target-speed) + (seek (-> self target-speed) (-> self nav-info run-travel-speed) 2048.0) + ) + (set! (-> self momentum-speed) (-> self target-speed)) + (let* + ((f0-7 + (fmin + (* (-> self speed-scale) (-> self momentum-speed)) + (* (vector-length (-> self nav travel)) (-> *display* frames-per-second)) + ) + ) + (v1-9 + (vector-normalize-copy! + (new 'stack-no-clear 'vector) + (-> self nav travel) + f0-7 + ) + ) + ) + (set! (-> self collide-info transv x) (-> v1-9 x)) + (set! (-> self collide-info transv z) (-> v1-9 z)) + ) + (if + (or + (logtest? (-> self nav-enemy-flags) 128) + (nonzero? (logand #x80000 (-> self nav flags))) + ) + (seek-to-point-toward-point! + (-> self collide-info) + (-> self nav target-pos) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + (seek-toward-heading-vec! + (-> self collide-info) + (-> self nav travel) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + ) + (let ((gp-0 vector-v++!) + (s5-0 (-> self collide-info transv)) + (t9-7 (method-of-object (-> self collide-info) dummy-62)) + ) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + 0.0 + (gp-0 s5-0 (the-as vector (t9-7))) + ) + (let ((t9-9 (method-of-object (-> self collide-info) dummy-59))) + (-> self collide-info transv) + (-> self nav-info gnd-collide-with) + 8192.0 + (-> self nav-info hover-if-no-ground) + (t9-9) + ) + (nav-enemy-common-post) + (none) + ) + +;; failed to figure out what this is: +(let + ((gp-13 + (new 'static 'state + :name 'nav-enemy-jump-land + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 27 (the-as function gp-13)) + (set! (-> gp-13 event) nav-enemy-default-event-handler) + (set! + (-> gp-13 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self nav flags) (nav-control-flags bit19)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self collide-info transv quad)) + (set! (-> gp-0 y) 0.0) + (set! (-> self target-speed) (vector-length gp-0)) + (set! (-> self momentum-speed) (-> self target-speed)) + (vector-xz-normalize! gp-0 16384.0) + (vector+! (-> self nav target-pos) (-> self collide-info trans) gp-0) + ) + ) + ) + ) + (set! + (-> gp-13 trans) + (lambda :behavior nav-enemy + () + (when + (or + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 150 + ) + (nonzero? (logand #x80000 (-> self nav flags))) + ) + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-0) + ) + ) + ) + ) + (set! + (-> gp-13 code) + (lambda :behavior nav-enemy + () + (nav-enemy-jump-land-anim) + (let ((t9-1 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (-> self jump-return-state))) + (t9-1) + ) + ) + ) + (set! (-> gp-13 post) nav-enemy-jump-land-post) + ) + +;; failed to figure out what this is: +(let + ((gp-14 + (new 'static 'state + :name 'nav-enemy-jump-blocked + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 74 (the-as function gp-14)) + (set! (-> gp-14 event) nav-enemy-default-event-handler) + (set! + (-> gp-14 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (let ((v0-0 (-> *display* base-frame-counter))) + (set! (-> self state-time) v0-0) + v0-0 + ) + ) + ) + ) + (set! + (-> gp-14 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 150 + ) + (let ((t9-0 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (-> self jump-return-state))) + (t9-0) + ) + ) + ) + ) + (set! + (-> gp-14 code) + (lambda :behavior nav-enemy + () + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + (ja-channel-push! 1 60) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + num-func-identity + ) + (set! + (-> gp-0 frame-num) + (rand-vu-float-range + 0.0 + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + ) + ) + ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) + (while #t + (suspend) + (let ((a0-10 (-> self skel root-channel 0))) + (set! (-> a0-10 param 0) f30-0) + (joint-control-channel-group-eval! + a0-10 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-14 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-15 + (new 'static 'state + :name 'nav-enemy-wait-for-cue + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 35 (the-as function gp-15)) + (set! (-> gp-15 event) nav-enemy-default-event-handler) + (set! + (-> gp-15 code) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logior! (-> self nav-enemy-flags) 2048) + (ja-channel-push! 1 30) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (let ((v1-6 (-> self skel root-channel 0))) + (set! + (-> v1-6 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + ) + (let ((v1-9 (-> self skel root-channel 0))) + (set! (-> v1-9 num-func) num-func-identity) + (set! (-> v1-9 frame-num) 0.0) + ) + (while (logtest? (-> self nav-enemy-flags) 2048) + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) f30-0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + (ja-channel-push! 1 30) + (nav-enemy-turn-to-face-point (-> self event-param-point) 910.2222) + (let ((gp-0 (nav-enemy-rnd-int-range 0 150)) + (s5-0 (-> *display* base-frame-counter)) + ) + (until (begin + (let ((a0-12 (-> self skel root-channel 0))) + (set! (-> a0-12 param 0) f30-0) + (joint-control-channel-group-eval! + a0-12 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (suspend) + (>= (the-as int (- (-> *display* base-frame-counter) s5-0)) gp-0) + ) + (empty) + ) + ) + ) + (let ((t9-7 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (method-of-object self dummy-36))) + (t9-7) + ) + ) + ) + (set! (-> gp-15 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-16 + (new 'static 'state + :name 'nav-enemy-jump-to-point + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 36 (the-as function gp-16)) + (set! (-> gp-16 event) nav-enemy-jump-event-handler) + (set! + (-> gp-16 exit) + (lambda :behavior nav-enemy + () + (let ((v0-0 (logior (-> self nav-enemy-flags) 24))) + (set! (-> self nav-enemy-flags) v0-0) + v0-0 + ) + ) + ) + (set! (-> gp-16 trans) (the-as (function object) (lambda () + 0 + (none) + ) + ) + ) + (set! + (-> gp-16 code) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (nav-enemy-initialize-jump (-> self event-param-point)) + (nav-enemy-neck-control-look-at) + (logior! (-> self nav-enemy-flags) 16) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) + (ja-channel-push! 1 60) + (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445) + ) + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + (nav-enemy-execute-jump) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (nav-enemy-jump-land-anim) + (let ((t9-7 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (method-of-object self dummy-35))) + (t9-7) + ) + (none) + ) + ) + (set! (-> gp-16 post) nav-enemy-jump-post) + ) + +;; definition for symbol *nav-enemy-dummy-shadow-control*, type shadow-control +(define + *nav-enemy-dummy-shadow-control* + (new 'static 'shadow-control + :settings + (new 'static 'shadow-settings + :center + (new 'static 'vector :w 0.000000000000000000000000000000000000000000056) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane (new 'static 'plane :y 1.0 :w 4096.0) + :top-plane (new 'static 'plane :y 1.0 :w -4096.0) + ) + ) + ) + +;; definition for method 45 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-45 nav-enemy ((obj nav-enemy) (arg0 nav-enemy-info)) + (set! (-> obj rand-gen) (new 'process 'random-generator)) + (set! (-> obj rand-gen seed) (the-as uint #x666edd1e)) + (set! (-> obj mask) (the-as process-mask (logior #x20000 (-> obj mask)))) + (TODO-RENAME-49 obj arg0) + (if (-> obj draw shadow) + (set! + (-> obj draw shadow-ctrl) + (new + 'process + 'shadow-control + (-> obj nav-info shadow-min-y) + (-> obj nav-info shadow-max-y) + (-> obj nav-info shadow-locus-dist) + (the-as float 17) + 245760.0 + ) + ) + (set! (-> obj draw shadow-ctrl) *nav-enemy-dummy-shadow-control*) + ) + (set! (-> obj align) (new 'process 'align-control obj)) + (set! + (-> obj nav) + (new + 'process + 'nav-control + (-> obj collide-info) + 16 + (-> arg0 nav-nearest-y-threshold) + ) + ) + (logior! + (-> obj nav flags) + (nav-control-flags display-marks bit0 bit3 bit5 bit6 bit7) + ) + (set! (-> obj nav gap-event) 'jump) + ((method-of-object (-> obj nav) dummy-26)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0)) + (logior! + (-> obj path flags) + (path-control-flag display draw-line draw-point draw-text) + ) + (set! + (-> obj enemy-info) + (new + 'process + 'fact-info-enemy + obj + (pickup-type eco-pill-random) + (-> *FACT-bank* default-pill-inc) + ) + ) + (set! (-> obj reaction-time) (the-as uint (nav-enemy-rnd-int-range 30 240))) + (set! (-> obj speed-scale) 1.0) + (logior! (-> obj nav-enemy-flags) 4216) + 0 + (none) + ) + +;; definition for method 49 of type nav-enemy +(defmethod TODO-RENAME-49 nav-enemy ((obj nav-enemy) (arg0 nav-enemy-info)) + (set! (-> obj nav-info) arg0) + (set! (-> obj rotate-speed) (-> obj nav-info walk-rotate-speed)) + (set! (-> obj turn-time) (the-as uint (-> obj nav-info walk-turn-time))) + (when (and (!= (-> obj nav-info neck-joint) -1) (zero? (-> obj neck))) + (set! + (-> obj neck) + (new + 'process + 'joint-mod + (joint-mod-handler-mode flex-blend) + obj + (-> obj nav-info neck-joint) + ) + ) + (set-vector! (-> obj neck twist-max) 8192.0 8192.0 0.0 1.0) + (set! (-> obj neck up) (the-as uint 1)) + (set! (-> obj neck nose) (the-as uint 2)) + (set! (-> obj neck ear) (the-as uint 0)) + (set! (-> obj neck max-dist) 102400.0) + (let ((f0-6 16384.0)) + (set! (-> obj neck ignore-angle) f0-6) + f0-6 + ) + ) + ) + +;; definition for function nav-enemy-init-by-other +;; INFO: Return type mismatch object vs nav-enemy. +;; Used lq/sq +(defbehavior + nav-enemy-init-by-other nav-enemy + ((arg0 nav-enemy) (arg1 vector) (arg2 vector)) + (TODO-RENAME-47 self) + (logior! (-> self mask) (process-mask actor-pause)) + (set! (-> self collide-info trans quad) (-> arg1 quad)) + (set! (-> self event-param-point quad) (-> arg2 quad)) + (let ((s3-1 (vector-! (new 'stack-no-clear 'vector) arg2 arg1))) + (set! (-> s3-1 y) 0.0) + (vector-normalize! s3-1 1.0) + (forward-up->quaternion (-> self collide-info quat) s3-1 *up-vector*) + ) + (vector-identity! (-> self collide-info scale)) + (set! (-> self entity) (-> arg0 entity)) + (TODO-RENAME-48 self) + (let ((v1-13 -4097) + (a0-10 (-> self nav-enemy-flags)) + ) + (set! (-> self nav-enemy-flags) (logand v1-13 a0-10)) + (logior! (-> self nav-enemy-flags) 2) + (let ((t9-5 (the-as (function object object) enter-state))) + (set! (-> self next-state) (the-as state (method-of-object self dummy-35))) + (the-as nav-enemy (t9-5 a0-10)) + ) + ) + ) + +;; definition for method 47 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-47 nav-enemy ((obj nav-enemy)) + 0 + (none) + ) + +;; definition for method 48 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-48 nav-enemy ((obj nav-enemy)) + 0 + (none) + ) + +;; definition for method 59 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-59 nav-enemy ((obj nav-enemy)) + (with-pp + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> pp next-state) + (the-as state (method-of-object obj nav-enemy-idle)) + ) + (t9-0) + ) + 0 + (none) + ) + ) + +;; definition for method 11 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod dummy-method-11 nav-enemy ((obj nav-enemy) (arg0 object)) + (TODO-RENAME-47 obj) + (process-drawable-from-entity! obj arg0) + (TODO-RENAME-48 obj) + (TODO-RENAME-59 obj) + 0 + (none) + ) + +;; definition for method 50 of type nav-enemy +;; Used lq/sq +(defmethod TODO-RENAME-50 nav-enemy ((obj nav-enemy) (arg0 vector)) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> s4-0 quad) (-> obj collide-info trans quad)) + (set! (-> obj collide-info trans quad) (-> arg0 quad)) + (let ((gp-0 (-> obj nav))) + (let ((t9-0 (method-of-object gp-0 dummy-28))) + -1 + (t9-0) + ) + (set! (-> obj collide-info trans quad) (-> s4-0 quad)) + (let* ((v1-8 (-> gp-0 mesh origin)) + (f0-1 (- (-> arg0 x) (-> v1-8 x))) + (f1-2 (- (-> arg0 z) (-> v1-8 z))) + ) + (countdown (v1-9 (-> gp-0 num-spheres)) + (let* ((a0-10 (-> gp-0 sphere v1-9)) + (f2-2 (- (-> a0-10 x) f0-1)) + (f3-1 (- (-> a0-10 z) f1-2)) + (f4-0 (-> a0-10 w)) + ) + (if (>= (* f4-0 f4-0) (+ (* f2-2 f2-2) (* f3-1 f3-1))) + (return #t) + ) + ) + ) + ) + ) + ) + #f + ) diff --git a/test/offline/offline_test_main.cpp b/test/offline/offline_test_main.cpp index 888bb94386..3d6acd37e6 100644 --- a/test/offline/offline_test_main.cpp +++ b/test/offline/offline_test_main.cpp @@ -85,9 +85,6 @@ const std::unordered_set g_functions_expected_to_reject = { "update-mood-lava", // asm "update-mood-lightning", // asm - // nav-enemy - "(anon-function 28 nav-enemy)", // asm - "debug-menu-item-var-render" // asm }; @@ -171,9 +168,6 @@ const std::unordered_set g_functions_to_skip_compiling = { // camera "slave-set-rotation!", "v-slrp2!", "v-slrp3!", // vector-dot involving the stack - // nav-enemy - "(anon-function 28 nav-enemy)", // asm - // loader - decompiler bug with detecting handle macros "(method 10 external-art-buffer)"}; From 9f36419e372b43d70d0c0849755d77544bac1de6 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Fri, 13 Aug 2021 22:16:33 -0400 Subject: [PATCH 10/12] fix goal_src --- decompiler/config/jak1_ntsc_black_label.jsonc | 2 +- goal_src/engine/draw/process-drawable.gc | 5 + goal_src/engine/game/collectables.gc | 2 + goal_src/levels/common/nav-enemy-h.gc | 6 + goal_src/levels/common/nav-enemy.gc | 3970 +++++++++++++++++ goal_src/levels/misty/misty-teetertotter.gc | 86 +- .../reference/levels/common/nav-enemy_REF.gc | 2 +- .../levels/misty/misty-teetertotter_REF.gc | 90 +- 8 files changed, 4077 insertions(+), 86 deletions(-) diff --git a/decompiler/config/jak1_ntsc_black_label.jsonc b/decompiler/config/jak1_ntsc_black_label.jsonc index b346771a87..b157978891 100644 --- a/decompiler/config/jak1_ntsc_black_label.jsonc +++ b/decompiler/config/jak1_ntsc_black_label.jsonc @@ -3,7 +3,7 @@ // if you want to filter to only some object names. // it will make the decompiler much faster. - "allowed_objects": ["nav-enemy"], + "allowed_objects": [], //////////////////////////// // CODE ANALYSIS OPTIONS diff --git a/goal_src/engine/draw/process-drawable.gc b/goal_src/engine/draw/process-drawable.gc index 560bad54c6..1700296cb1 100644 --- a/goal_src/engine/draw/process-drawable.gc +++ b/goal_src/engine/draw/process-drawable.gc @@ -15,3 +15,8 @@ (define-extern ja-done? (function int symbol)) ;; TODO - for misty-warehouse (define-extern rider-trans (function int)) +;; TODO - for nav-enemy +(define-extern ja-blend-eval (function int)) +(define-extern process-drawable-fuel-cell-handler (function process-drawable object symbol (pointer int64) symbol)) +(define-extern ja-aframe-num (function int float)) +(define-extern ja-aframe (function float int float)) diff --git a/goal_src/engine/game/collectables.gc b/goal_src/engine/game/collectables.gc index 646e29eceb..e1cbcfa7c6 100644 --- a/goal_src/engine/game/collectables.gc +++ b/goal_src/engine/game/collectables.gc @@ -5,3 +5,5 @@ ;; name in dgo: collectables ;; dgos: GAME, ENGINE +;; TODO - for nav-enemy +(define-extern birth-pickup-at-point (function vector int float symbol process symbol basic)) ;; TODO - not confirmed at all! (the symbols are wrong) diff --git a/goal_src/levels/common/nav-enemy-h.gc b/goal_src/levels/common/nav-enemy-h.gc index eca695745f..e450263abd 100644 --- a/goal_src/levels/common/nav-enemy-h.gc +++ b/goal_src/levels/common/nav-enemy-h.gc @@ -155,3 +155,9 @@ (dummy-75 (_type_) none 75) ) ) + +;; NOTE - some forward declarations +(define-extern nav-enemy-send-attack (function process touching-shapes-entry symbol object :behavior nav-enemy)) +(define-extern nav-enemy-set-hit-from-direction (function process none :behavior nav-enemy)) +(define-extern nav-enemy-get-new-patrol-point (function int :behavior nav-enemy)) +(define-extern nav-enemy-test-point-near-nav-mesh? (function vector symbol :behavior nav-enemy)) diff --git a/goal_src/levels/common/nav-enemy.gc b/goal_src/levels/common/nav-enemy.gc index f6a6af9d1d..f005ad816d 100644 --- a/goal_src/levels/common/nav-enemy.gc +++ b/goal_src/levels/common/nav-enemy.gc @@ -5,3 +5,3973 @@ ;; name in dgo: nav-enemy ;; dgos: GAME, COMMON, L1 +;; definition for function nav-enemy-rnd-float +(defun nav-enemy-rnd-float () + (rand-vu) + ) + +;; definition for function nav-enemy-rnd-percent? +(defun nav-enemy-rnd-percent? ((arg0 float)) + (>= arg0 (rand-vu)) + ) + +;; definition for function nav-enemy-rnd-float-range +(defbehavior nav-enemy-rnd-float-range nav-enemy ((arg0 float) (arg1 float)) + (+ arg0 (* (rand-vu) (- arg1 arg0))) + ) + +;; definition for function nav-enemy-rnd-int-count +(defun nav-enemy-rnd-int-count ((arg0 int)) + (the int (* (rand-vu) (the float arg0))) + ) + +;; definition for function nav-enemy-rnd-int-range +(defun nav-enemy-rnd-int-range ((arg0 int) (arg1 int)) + (+ arg0 (the int (* (rand-vu) (the float (+ (- 1 arg0) arg1))))) + ) + +;; definition for function nav-enemy-rnd-go-idle? +(defun nav-enemy-rnd-go-idle? ((arg0 float)) + (let* ((v1-3 (-> *display* frames (-> *display* last-screen) frame run-time)) + (f1-2 (fmax 0.0 (fmin 1.0 (* 0.001 (+ -7000.0 (the float v1-3)))))) + ) + (>= (+ arg0 (* f1-2 (- 1.0 arg0))) (rand-vu)) + ) + ) + +;; definition for method 9 of type trajectory +;; INFO: this function exists in multiple non-identical object files +(defmethod + eval-position! + trajectory + ((obj trajectory) (time float) (result vector)) + (vector+float*! + result + (-> obj initial-position) + (-> obj initial-velocity) + time + ) + (+! (-> result y) (* (* (* 0.5 time) time) (-> obj gravity))) + result + ) + +;; definition for method 7 of type nav-enemy +;; INFO: Return type mismatch none vs nav-enemy. +(defmethod relocate nav-enemy ((obj nav-enemy) (arg0 int)) + (if (nonzero? (-> obj neck)) + (set! (-> obj neck) (the-as joint-mod (+ (the-as int (-> obj neck)) arg0))) + ) + (if (nonzero? (-> obj rand-gen)) + (set! + (-> obj rand-gen) + (the-as random-generator (+ (the-as int (-> obj rand-gen)) arg0)) + ) + ) + (the-as + nav-enemy + ((the-as + (function process-drawable int none) + (find-parent-method nav-enemy 7) + ) + obj + arg0 + ) + ) + ) + +;; definition for method 42 of type nav-enemy +(defmethod TODO-RENAME-42 nav-enemy ((obj nav-enemy)) + (local-vars (v1-11 symbol)) + (with-pp + (when (<= (-> obj path curve num-cverts) 0) + (let ((t9-0 (the-as (function object object) enter-state)) + (a0-1 "no path") + ) + (set! (-> pp next-state) process-drawable-art-error) + (t9-0 a0-1) + ) + ) + (let ((s5-0 3)) + 0 + (let ((s4-0 (-> obj nav destination-pos))) + (until (or v1-11 (<= s5-0 0)) + (let ((v1-8 (nav-enemy-rnd-int-count (-> obj path curve num-cverts)))) + (eval-path-curve-div! (-> obj path) s4-0 (the float v1-8) 'interp) + ) + (+! s5-0 -1) + (set! + v1-11 + (< 4096.0 (vector-vector-xz-distance s4-0 (-> obj collide-info trans))) + ) + ) + ) + ) + 0 + ) + ) + +;; definition for method 39 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-39 nav-enemy ((obj nav-enemy)) + (when + (and + (logtest? (-> obj nav-enemy-flags) 256) + (or + (not *target*) + (and + (zero? (logand (-> *target* state-flags) #x80f8)) + (>= + (the-as int (- (-> *display* base-frame-counter) (-> obj touch-time))) + 15 + ) + ) + ) + ) + (let ((t9-0 (method-of-object (-> obj collide-info) dummy-54))) + 2 + 1 + (t9-0) + ) + (set! (-> obj nav-enemy-flags) (logand -257 (-> obj nav-enemy-flags))) + ) + ((method-of-object (-> obj draw shadow-ctrl) dummy-14)) + (when *target* + (if *target* + (look-at-enemy! + (-> *target* neck) + (the-as vector (-> obj collide-info root-prim prim-core)) + (if (logtest? (-> obj nav-enemy-flags) 4) + 'attacking + ) + obj + ) + ) + (if + (and + (nonzero? (-> obj neck)) + (nonzero? (logand (-> obj nav-enemy-flags) #x4000)) + ) + (set-target! + (-> obj neck) + (target-pos (-> obj nav-info player-look-at-joint)) + ) + ) + ) + (when (-> obj nav-info debug-draw-neck) + (if (nonzero? (-> obj neck)) + (joint-mod-debug-draw (-> obj neck)) + ) + ) + (ja-post) + 0 + (none) + ) + +;; definition for method 44 of type nav-enemy +(defmethod + dummy-44 + nav-enemy + ((obj nav-enemy) (arg0 process) (arg1 event-message-block)) + (if + (and + (logtest? (-> obj nav-enemy-flags) 64) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + ) + (nav-enemy-send-attack + arg0 + (the-as touching-shapes-entry (-> arg1 param 0)) + 'generic + ) + ) + ) + +;; definition for method 72 of type nav-enemy +(defmethod + dummy-72 + nav-enemy + ((obj nav-enemy) (arg0 process) (arg1 event-message-block)) + (if + (and + (logtest? (-> obj nav-enemy-flags) 64) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + ) + (nav-enemy-send-attack + arg0 + (the-as touching-shapes-entry (-> arg1 param 0)) + 'generic + ) + ) + ) + +;; definition for method 73 of type nav-enemy +(defmethod TODO-RENAME-73 nav-enemy ((obj nav-enemy) (arg0 process)) + (with-pp + (let ((v1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-0 from) pp) + (set! (-> v1-0 num-params) 1) + (set! (-> v1-0 message) 'get-attack-count) + (set! (-> v1-0 param 0) (the-as uint 1)) + (send-event-function arg0 v1-0) + ) + (logclear! (-> obj mask) (process-mask actor-pause attackable)) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> pp next-state) + (the-as state (method-of-object obj nav-enemy-die)) + ) + (t9-1) + ) + 'die + ) + ) + +;; definition for method 43 of type nav-enemy +(defmethod + dummy-43 + nav-enemy + ((obj nav-enemy) (arg0 process) (arg1 event-message-block)) + (with-pp + (cond + ((logtest? (-> obj nav-enemy-flags) 32) + (let ((v1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-2 from) pp) + (set! (-> v1-2 num-params) 1) + (set! (-> v1-2 message) 'get-attack-count) + (set! (-> v1-2 param 0) (the-as uint 1)) + (send-event-function arg0 v1-2) + ) + (logclear! (-> obj mask) (process-mask actor-pause attackable)) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> pp next-state) + (the-as state (method-of-object obj nav-enemy-die)) + ) + (t9-1) + ) + ) + (else + (dummy-44 obj arg0 arg1) + ) + ) + ) + ) + +;; definition for function nav-enemy-send-attack +;; INFO: Return type mismatch symbol vs object. +(defbehavior + nav-enemy-send-attack nav-enemy + ((arg0 process) (arg1 touching-shapes-entry) (arg2 symbol)) + (let ((v1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-0 from) self) + (set! (-> v1-0 num-params) 2) + (set! (-> v1-0 message) 'attack) + (set! (-> v1-0 param 0) (the-as uint arg1)) + (let ((a1-1 (new 'static 'attack-info :mask #xe0))) + (set! (-> a1-1 shove-back) (-> self nav-info attack-shove-back)) + (set! (-> a1-1 shove-up) (-> self nav-info attack-shove-up)) + (set! (-> a1-1 mode) arg2) + (set! (-> v1-0 param 1) (the-as uint a1-1)) + ) + (when (send-event-function arg0 v1-0) + (let ((t9-1 (method-of-object (-> self collide-info) dummy-54))) + 2 + 0 + (t9-1) + ) + (logior! (-> self nav-enemy-flags) 256) + #t + ) + ) + ) + +;; definition for function nav-enemy-default-event-handler +;; Used lq/sq +(defbehavior + nav-enemy-default-event-handler nav-enemy + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch) + (set! (-> self touch-time) (-> *display* base-frame-counter)) + (dummy-44 self arg0 arg3) + ) + (('attack) + (nav-enemy-set-hit-from-direction arg0) + (dummy-43 self arg0 arg3) + ) + (('instant-death) + (let ((gp-1 (-> self hit-from-dir))) + (vector-z-quaternion! gp-1 (-> self collide-info quat)) + (vector-float*! gp-1 gp-1 -1.0) + (vector-normalize! gp-1 1.0) + ) + (logclear! (-> self mask) (process-mask actor-pause attackable)) + (let ((t9-5 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-die)) + ) + (t9-5) + ) + ) + (('jump) + (when (!= (-> self next-state name) 'nav-enemy-jump-land) + (set! + (-> self event-param-point quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (set! (-> self nav user-poly) (the-as nav-poly (-> arg3 param 1))) + (set! (-> self jump-return-state) (-> self state)) + (let ((t9-6 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-jump)) + ) + (t9-6) + ) + ) + ) + (('cue-jump-to-point) + (when (logtest? (-> self nav-enemy-flags) 2048) + (set! + (-> self event-param-point quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (let ((v0-0 (the-as object (logand -2049 (-> self nav-enemy-flags))))) + (set! (-> self nav-enemy-flags) (the-as uint v0-0)) + v0-0 + ) + ) + ) + (('cue-chase) + (let ((t9-7 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-7) + ) + ) + (('cue-patrol) + (let ((t9-8 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-8) + ) + ) + (('go-wait-for-cue) + (let ((t9-9 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (method-of-object self dummy-35))) + (t9-9) + ) + ) + ) + ) + +;; definition for function nav-enemy-jump-event-handler +(defbehavior + nav-enemy-jump-event-handler nav-enemy + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch) + (set! (-> self touch-time) (-> *display* base-frame-counter)) + (dummy-72 self arg0 arg3) + ) + (('attack) + (nav-enemy-set-hit-from-direction arg0) + (TODO-RENAME-73 self arg0) + ) + ) + ) + +;; definition for function process-drawable-death-event-handler +(defbehavior + process-drawable-death-event-handler process-drawable + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('death-start) + (let ((t9-0 (method-of-object (-> self fact) dummy-9))) + #t + *entity-pool* + (-> self fact) + 0 + (t9-0) + ) + ) + (('death-end) + (let ((v0-0 (logior (-> self draw status) 2))) + (set! (-> self draw status) v0-0) + v0-0 + ) + ) + ) + ) + +;; failed to figure out what this is: +nav-enemy-default-event-handler + +;; definition for function nav-enemy-common-post +(defbehavior nav-enemy-common-post nav-enemy () + (TODO-RENAME-39 self) + (none) + ) + +;; definition for function nav-enemy-simple-post +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-simple-post nav-enemy () + (TODO-RENAME-9 (-> self align)) + (nav-enemy-common-post) + (dummy-47 (-> self collide-info)) + 0 + (none) + ) + +;; definition for method 40 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod dummy-40 nav-enemy ((obj nav-enemy)) + (let ((t9-0 (method-of-object (-> obj nav) dummy-11))) + (-> obj nav target-pos) + (t9-0) + ) + 0 + (none) + ) + +;; definition for method 41 of type nav-enemy +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod dummy-41 nav-enemy ((obj nav-enemy)) + (cond + ((-> obj nav-info use-align) + (TODO-RENAME-11 + (-> obj align) + 4 + (-> obj nav travel) + (the-as int 1.0) + 1.0 + (* (-> obj enemy-info speed) (-> obj speed-scale)) + ) + ) + (else + (cond + ((-> obj nav-info use-momentum) + (let* ((f0-3 (- (-> obj target-speed) (-> obj momentum-speed))) + (f1-4 + (fmin + (* (-> obj acceleration) (-> *display* seconds-per-frame)) + (fabs f0-3) + ) + ) + ) + (if (< f0-3 0.0) + (set! (-> obj momentum-speed) (- (-> obj momentum-speed) f1-4)) + (+! (-> obj momentum-speed) f1-4) + ) + ) + ) + (else + (set! (-> obj momentum-speed) (-> obj target-speed)) + ) + ) + (let* + ((f0-12 + (fmin + (* (-> obj speed-scale) (-> obj momentum-speed)) + (* (vector-length (-> obj nav travel)) (-> *display* frames-per-second)) + ) + ) + (v1-15 + (vector-normalize-copy! + (new 'stack-no-clear 'vector) + (-> obj nav travel) + f0-12 + ) + ) + ) + (set! (-> obj collide-info transv x) (-> v1-15 x)) + (set! (-> obj collide-info transv z) (-> v1-15 z)) + ) + ) + ) + (when (-> obj nav-info move-to-ground) + (let ((s5-0 vector-v++!) + (s4-0 (-> obj collide-info transv)) + (t9-3 (method-of-object (-> obj collide-info) dummy-62)) + ) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + 0.0 + (s5-0 s4-0 (the-as vector (t9-3))) + ) + ) + 0 + (none) + ) + +;; definition for method 37 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-37 nav-enemy ((obj nav-enemy)) + (when (logtest? (-> obj nav-enemy-flags) 16) + (if + (or + (logtest? (-> obj nav-enemy-flags) 128) + (nonzero? (logand #x80000 (-> obj nav flags))) + ) + (seek-to-point-toward-point! + (-> obj collide-info) + (-> obj nav target-pos) + (-> obj rotate-speed) + (the-as int (-> obj turn-time)) + ) + (seek-toward-heading-vec! + (-> obj collide-info) + (-> obj nav travel) + (-> obj rotate-speed) + (the-as int (-> obj turn-time)) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 38 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-38 nav-enemy ((obj nav-enemy)) + (cond + ((-> obj nav-info move-to-ground) + (let ((t9-0 (method-of-object (-> obj collide-info) dummy-59))) + (-> obj collide-info transv) + (-> obj nav-info gnd-collide-with) + 8192.0 + (-> obj nav-info hover-if-no-ground) + (nonzero? (logand (-> obj nav-enemy-flags) #x8000)) + (t9-0) + ) + ) + (else + (let ((t9-1 (method-of-object (-> obj collide-info) dummy-58))) + (-> obj collide-info transv) + (t9-1) + ) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-travel-post +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-travel-post nav-enemy () + (cond + ((logtest? (-> self nav-enemy-flags) 8) + (TODO-RENAME-9 (-> self align)) + (dummy-40 self) + (dummy-41 self) + (TODO-RENAME-37 self) + (TODO-RENAME-38 self) + (nav-enemy-common-post) + ) + (else + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) + (nav-enemy-simple-post) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #xff :b #xff :a #x80) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-patrol-post +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-patrol-post nav-enemy () + (when + (or (logtest? #x80000 (-> self nav flags)) (< 2.0 (-> self nav block-count))) + (set! (-> self nav block-count) 2.0) + (logior! (-> self nav flags) (nav-control-flags bit10)) + (nav-enemy-get-new-patrol-point) + ) + (let ((t9-1 (method-of-object (-> self nav) dummy-19))) + (-> self nav target-pos) + (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (t9-1) + ) + (if (logtest? #x200000 (-> self nav flags)) + (logclear! (-> self nav flags) (nav-control-flags bit10)) + ) + (nav-enemy-travel-post) + 0 + (none) + ) + +;; definition for function nav-enemy-chase-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-chase-post nav-enemy () + (set! (-> self nav target-pos quad) (-> (target-pos 0) quad)) + (nav-enemy-travel-post) + 0 + (none) + ) + +;; definition for function nav-enemy-flee-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-flee-post nav-enemy () + (let + ((gp-1 + (vector-! + (new 'stack-no-clear 'vector) + (-> self collide-info trans) + (target-pos 0) + ) + ) + ) + (vector-z-quaternion! + (new 'stack-no-clear 'vector) + (-> self collide-info quat) + ) + 0.0 + 0.0 + (set! (-> gp-1 y) 0.0) + (set! (-> self nav travel quad) (-> gp-1 quad)) + ) + (vector-normalize! (-> self nav travel) 409600.0) + (let ((t9-3 (method-of-object (-> self nav) dummy-24))) + 204.8 + (t9-3) + ) + (vector+! + (-> self nav target-pos) + (-> self collide-info trans) + (-> self nav travel) + ) + (nav-enemy-travel-post) + 0 + (none) + ) + +;; definition for function nav-enemy-face-player-post +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-face-player-post nav-enemy () + (if (and *target* (nonzero? (logand (-> self nav-enemy-flags) 16))) + (seek-to-point-toward-point! + (-> self collide-info) + (target-pos 0) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + ) + (nav-enemy-simple-post) + 0 + (none) + ) + +;; definition for function nav-enemy-falling-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-falling-post nav-enemy () + (let ((gp-0 vector-v++!) + (s5-0 (-> self collide-info transv)) + (t9-0 (method-of-object (-> self collide-info) dummy-62)) + ) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + 0.0 + (gp-0 s5-0 (the-as vector (t9-0))) + ) + (let ((t9-2 (method-of-object (-> self collide-info) dummy-33))) + (-> self collide-info transv) + (-> self collide-info root-prim collide-with) + (t9-2) + ) + (nav-enemy-common-post) + 0 + (none) + ) + +;; definition for function nav-enemy-death-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-death-post nav-enemy () + (let ((gp-0 vector-v++!) + (s5-0 (-> self collide-info transv)) + (t9-0 (method-of-object (-> self collide-info) dummy-62)) + ) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + 0.0 + (gp-0 s5-0 (the-as vector (t9-0))) + ) + (let ((t9-2 (method-of-object (-> self collide-info) dummy-57))) + (-> self collide-info transv) + (t9-2) + ) + (nav-enemy-common-post) + 0 + (none) + ) + +;; definition for function nav-enemy-neck-control-look-at +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-neck-control-look-at nav-enemy () + (logior! (-> self nav-enemy-flags) #x4000) + (if (nonzero? (-> self neck)) + (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-neck-control-inactive +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-neck-control-inactive nav-enemy () + (when + (and + (nonzero? (-> self neck)) + (nonzero? (logand (-> self nav-enemy-flags) #x4000)) + ) + (set! (-> self nav-enemy-flags) (logand -16385 (-> self nav-enemy-flags))) + (shut-down! (-> self neck)) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-player-vulnerable? +;; INFO: Return type mismatch basic vs symbol. +(defun nav-enemy-player-vulnerable? () + (the-as + symbol + (and *target* (zero? (logand (-> *target* state-flags) #x80f8))) + ) + ) + +;; definition for method 46 of type nav-enemy +(defmethod TODO-RENAME-46 nav-enemy ((obj nav-enemy) (arg0 float)) + (and + *target* + (zero? (logand (-> *target* state-flags) #x80f8)) + (and + (or + (zero? (logand (-> obj nav-enemy-flags) 4096)) + (< + (vector-vector-distance (target-pos 0) (-> obj collide-info trans)) + arg0 + ) + ) + (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)) + ) + ) + ) + +;; definition for function nav-enemy-notice-player? +(defbehavior nav-enemy-notice-player? nav-enemy () + (let ((gp-0 #f)) + (cond + ((logtest? (-> self nav-enemy-flags) 1) + (when + (>= + (the-as int (- (-> *display* base-frame-counter) (-> self notice-time))) + (the-as int (-> self reaction-time)) + ) + (set! gp-0 #t) + (set! (-> self nav-enemy-flags) (logand -2 (-> self nav-enemy-flags))) + ) + ) + (else + (when + (or + (TODO-RENAME-46 self (-> self nav-info notice-distance)) + (and + (-> self nav-info use-proximity-notice) + *target* + (>= + (-> self nav-info proximity-notice-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + ) + (logior! (-> self nav-enemy-flags) 1) + (set! (-> self notice-time) (-> *display* base-frame-counter)) + ) + ) + ) + gp-0 + ) + ) + +;; definition for function nav-enemy-facing-direction? +;; Used lq/sq +(defbehavior nav-enemy-facing-direction? nav-enemy ((arg0 vector) (arg1 float)) + (let + ((s4-0 + (vector-z-quaternion! + (new 'stack-no-clear 'vector) + (-> self collide-info quat) + ) + ) + (s5-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s5-0 quad) (-> arg0 quad)) + (set! (-> s5-0 y) 0.0) + (vector-normalize! s5-0 1.0) + (>= (vector-dot s4-0 s5-0) (cos arg1)) + ) + ) + +;; definition for function nav-enemy-facing-point? +(defbehavior nav-enemy-facing-point? nav-enemy ((arg0 vector) (arg1 float)) + (let + ((v1-1 + (vector-! (new 'stack-no-clear 'vector) arg0 (-> self collide-info trans)) + ) + ) + (nav-enemy-facing-direction? v1-1 arg1) + ) + ) + +;; definition for function nav-enemy-facing-player? +(defun nav-enemy-facing-player? ((arg0 float)) + (nav-enemy-facing-point? (target-pos 0) arg0) + ) + +;; definition for function nav-enemy-test-nav-mesh-intersection-xz? +(defbehavior nav-enemy-test-nav-mesh-intersection-xz? nav-enemy ((arg0 vector)) + (dummy-16 (-> self nav) arg0) + ) + +;; definition for function nav-enemy-test-point-in-nav-mesh? +(defbehavior nav-enemy-test-point-in-nav-mesh? nav-enemy ((arg0 vector)) + (and + (dummy-16 (-> self nav) arg0) + (< + (-> arg0 y) + (+ (-> self collide-info trans y) (-> self enemy-info notice-top)) + ) + ) + ) + +;; definition for function nav-enemy-test-point-near-nav-mesh? +(defbehavior nav-enemy-test-point-near-nav-mesh? nav-enemy ((arg0 vector)) + (and + (dummy-25 (-> self nav) arg0 (-> self nav-info notice-nav-radius)) + (< + (-> arg0 y) + (+ (-> self collide-info trans y) (-> self enemy-info notice-top)) + ) + ) + ) + +;; definition for function nav-enemy-get-new-patrol-point +(defbehavior nav-enemy-get-new-patrol-point nav-enemy () + (TODO-RENAME-42 self) + 0 + ) + +;; definition for function nav-enemy-set-base-collide-sphere-collide-with +;; INFO: Return type mismatch int vs none. +(defbehavior + nav-enemy-set-base-collide-sphere-collide-with nav-enemy + ((arg0 uint)) + (let ((s5-0 (-> self collide-info root-prim))) + (set! (-> s5-0 collide-with) arg0) + (let + ((s4-0 + (if + (and + (nonzero? s5-0) + (type-type? (-> s5-0 type) collide-shape-prim-group) + ) + s5-0 + ) + ) + (s5-1 (the-as object #f)) + ) + (when s4-0 + (dotimes (s3-0 (-> (the-as collide-shape-prim-group s4-0) num-prims)) + (let* + ((s2-0 + (the-as + object + (-> + (the-as collide-shape-prim-group (+ (* s3-0 4) (the-as int s4-0))) + prim + 0 + ) + ) + ) + (v1-6 + (if + (and + (nonzero? (the-as uint s2-0)) + (type-type? + (-> (the-as collide-shape-prim s2-0) type) + collide-shape-prim-sphere + ) + ) + (the-as uint s2-0) + ) + ) + ) + (when (the-as uint v1-6) + (if + (or + (not (the-as uint s5-1)) + (< + (-> (the-as collide-shape-prim-sphere v1-6) transform-index) + (-> (the-as collide-shape-prim-group s5-1) transform-index) + ) + (and + (= + (-> (the-as collide-shape-prim-sphere v1-6) transform-index) + (-> (the-as collide-shape-prim-group s5-1) transform-index) + ) + (< + (-> (the-as collide-shape-prim-sphere v1-6) local-sphere y) + (-> (the-as collide-shape-prim-group s5-1) local-sphere y) + ) + ) + ) + (set! s5-1 (the-as uint v1-6)) + ) + ) + ) + ) + (if (the-as collide-shape-prim s5-1) + (set! (-> (the-as collide-shape-prim s5-1) collide-with) arg0) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-set-hit-from-direction +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-set-hit-from-direction nav-enemy ((arg0 process)) + (let* ((gp-0 (-> self hit-from-dir)) + (s5-0 arg0) + (v1-1 + (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) + s5-0 + ) + ) + ) + (set! (-> gp-0 quad) (-> *null-vector* quad)) + (when v1-1 + (vector-! + gp-0 + (-> self collide-info trans) + (-> (the-as process-drawable v1-1) root trans) + ) + (set! (-> gp-0 y) 0.0) + (vector-xz-normalize! gp-0 1.0) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-fall-and-play-death-anim +;; INFO: Return type mismatch int vs none. +(defbehavior + nav-enemy-fall-and-play-death-anim nav-enemy + ((arg0 art-joint-anim) (arg1 int) (arg2 float)) + (nav-enemy-neck-control-inactive) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self skel root-channel 0 frame-group) arg0) + (let ((s4-1 #f) + (s3-0 (-> self collide-info)) + ) + (when + (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) collide-shape-moving)) + s3-0 + ) + (when (= (vector-xz-length-squared (-> self hit-from-dir)) 0.0) + (vector-z-quaternion! (-> self hit-from-dir) (-> self collide-info quat)) + (vector-negate-in-place! (-> self hit-from-dir)) + (set! (-> self hit-from-dir y) 0.0) + (vector-xz-normalize! (-> self hit-from-dir) 1.0) + ) + (set! (-> self collide-info transv y) 65502.96) + (let ((v1-14 (-> self skel root-channel 0))) + (set! (-> v1-14 num-func) num-func-identity) + (set! (-> v1-14 frame-num) 0.0) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! + (-> self collide-info status) + (logand -8 (-> self collide-info status)) + ) + (until (begin + (suspend) + (let ((a0-13 (-> self skel root-channel 0))) + (set! + (-> a0-13 param 0) + (the float (+ (-> a0-13 frame-group data 0 length) -1)) + ) + (set! (-> a0-13 param 1) arg2) + (joint-control-channel-group-eval! + a0-13 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (cond + ((nonzero? (-> self align)) + (when (not s4-1) + (TODO-RENAME-9 (-> self align)) + (TODO-RENAME-10 (-> self align) 4098 1.0 (the-as float arg1) 1.0) + (when (zero? (logand (-> self align flags) 1)) + (let + ((f0-6 + (* + (- (-> self align delta trans z)) + (-> *display* frames-per-second) + ) + ) + ) + (set! + (-> self collide-info transv x) + (* (-> self hit-from-dir x) f0-6) + ) + (set! + (-> self collide-info transv z) + (* (-> self hit-from-dir z) f0-6) + ) + ) + ) + ) + ) + (else + (let ((f0-8 20480.0)) + (set! (-> self collide-info transv x) (* (-> self hit-from-dir x) f0-8)) + (set! (-> self collide-info transv z) (* (-> self hit-from-dir z) f0-8)) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-turn-to-face-dir +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-turn-to-face-dir nav-enemy ((arg0 vector) (arg1 float)) + (local-vars (v1-16 symbol)) + (let ((s4-0 (-> *display* base-frame-counter))) + (let ((v1-3 (-> self skel root-channel 0))) + (set! + (-> v1-3 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info turn-anim)) + ) + ) + ) + (let ((v1-6 (-> self skel root-channel 0))) + (set! (-> v1-6 num-func) num-func-identity) + (set! (-> v1-6 frame-num) 0.0) + ) + (until v1-16 + (seek-toward-heading-vec! + (-> self collide-info) + arg0 + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) 0.75) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (set! + v1-16 + (or + (>= (the-as int (- (-> *display* base-frame-counter) s4-0)) 3000) + (nav-enemy-facing-direction? arg0 arg1) + ) + ) + ) + ) + (forward-up->quaternion (-> self collide-info quat) arg0 *y-vector*) + 0 + (none) + ) + +;; definition for function nav-enemy-turn-to-face-point +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-turn-to-face-point nav-enemy ((arg0 vector) (arg1 float)) + (let + ((gp-1 + (vector-! (new 'stack-no-clear 'vector) arg0 (-> self collide-info trans)) + ) + ) + (set! (-> gp-1 y) 0.0) + (when (< 0.0 (vector-length gp-1)) + (vector-normalize! gp-1 1.0) + (nav-enemy-turn-to-face-dir gp-1 arg1) + ) + ) + 0 + (none) + ) + +;; definition for method 12 of type nav-enemy +(defmethod run-logic? nav-enemy ((obj nav-enemy)) + (or + (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or + (and + (nonzero? (-> obj draw)) + (and + (>= + (+ + (-> *ACTOR-bank* pause-dist) + (-> obj collide-info pause-adjust-distance) + ) + (vector-vector-distance (-> obj collide-info trans) (camera-pos)) + ) + (or + (logtest? (-> obj draw status) 8) + (!= (-> obj next-state name) 'nav-enemy-idle) + ) + ) + ) + (and + (nonzero? (-> obj skel)) + (!= (-> obj skel root-channel 0) (-> obj skel channel)) + ) + (and (nonzero? (-> obj draw)) (nonzero? (logand (-> obj draw status) 16))) + ) + ) + ) + +;; failed to figure out what this is: +(let + ((gp-0 + (new 'static 'state + :name 'nav-enemy-idle + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 28 (the-as function gp-0)) + (set! (-> gp-0 event) nav-enemy-default-event-handler) + (set! + (-> gp-0 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (nav-enemy-neck-control-inactive) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (when (-> self nav-info move-to-ground) + (let ((t9-1 (method-of-object (-> self collide-info) dummy-60))) + 40960.0 + 40960.0 + #t + (-> self nav-info gnd-collide-with) + (t9-1) + ) + ) + (set! (-> self nav-enemy-flags) (logand -7 (-> self nav-enemy-flags))) + (let ((v0-2 300)) + (set! (-> self state-timeout) (the-as uint v0-2)) + v0-2 + ) + ) + ) + ) + (set! + (-> gp-0 trans) + (lambda :behavior nav-enemy + () + (when + (and + (and + *target* + (>= + (-> self enemy-info idle-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + (the-as int (-> self state-timeout)) + ) + (nonzero? (-> self draw)) + (nonzero? (logand (-> self draw status) 8)) + ) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-1) + ) + ) + ) + ) + (set! + (-> gp-0 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 22) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + ) + (let ((v1-5 (-> self skel root-channel 0))) + (set! (-> v1-5 num-func) num-func-identity) + (set! (-> v1-5 frame-num) 0.0) + ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) + (while #t + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) f30-0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-0 post) ja-post) + ) + +;; failed to figure out what this is: +(let + ((gp-1 + (new 'static 'state + :name 'nav-enemy-patrol + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 30 (the-as function gp-1)) + (set! (-> gp-1 event) nav-enemy-default-event-handler) + (set! + (-> gp-1 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! + (-> self nav flags) + (the-as + nav-control-flags + (the-as int (logior #x80000 (-> self nav flags))) + ) + ) + (set! (-> self nav-enemy-flags) (logand -5 (-> self nav-enemy-flags))) + (logior! (-> self nav-enemy-flags) 8) + (set! (-> self state-timeout) (the-as uint 300)) + (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) + (set! (-> self acceleration) (-> self nav-info walk-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info walk-rotate-speed)) + (let ((v0-0 (-> self nav-info walk-turn-time))) + (set! (-> self turn-time) (the-as uint v0-0)) + (the-as uint v0-0) + ) + ) + ) + ) + (set! + (-> gp-1 exit) + (lambda :behavior nav-enemy + () + (let ((v0-0 (logior (-> self nav-enemy-flags) 8))) + (set! (-> self nav-enemy-flags) v0-0) + v0-0 + ) + ) + ) + (set! + (-> gp-1 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 30 + ) + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + (the-as int (-> self state-timeout)) + ) + (if + (and + (nonzero? (-> self draw)) + (nonzero? (logand (-> self draw status) 8)) + ) + (set! (-> self free-time) (-> *display* base-frame-counter)) + ) + (when + (or + (or + (not *target*) + (< + (-> self enemy-info idle-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (>= + (the-as int (- (-> *display* base-frame-counter) (-> self free-time))) + 600 + ) + ) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-idle)) + ) + (t9-1) + ) + ) + ) + (when + (and + (-> self nav-info use-flee) + (and + (and + *target* + (>= + (-> self nav-info notice-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (let ((gp-0 'racer) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) 'query) + (set! (-> a1-2 param 0) (the-as uint 'mode)) + (= gp-0 (send-event-function *target* a1-2)) + ) + ) + ) + (let ((t9-4 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self dummy-22)) + ) + (t9-4) + ) + ) + (when (nav-enemy-notice-player?) + (let ((t9-6 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-notice)) + ) + (t9-6) + ) + ) + ) + ) + ) + (set! + (-> gp-1 code) + (lambda :behavior nav-enemy + () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (while #t + (let ((a0-1 (-> self skel root-channel 0))) + (set! + (-> a0-1 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + ) + (set! + (-> a0-1 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-1 param 1) f30-0) + (set! (-> a0-1 frame-num) 0.0) + (joint-control-channel-group! + a0-1 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 param 0) + (the float (+ (-> a0-2 frame-group data 0 length) -1)) + ) + (set! (-> a0-2 param 1) f30-0) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + (when (nav-enemy-rnd-go-idle? 0.2) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 param 0) 1.0) + (joint-control-channel-group! + a0-5 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 180) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (let ((a0-8 (-> self skel root-channel 0))) + (set! + (-> a0-8 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + (set! + (-> a0-8 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-8 param 1) f30-0) + (set! (-> a0-8 frame-num) 0.0) + (joint-control-channel-group! + a0-8 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (ja-blend-eval) + (suspend) + (let ((a0-9 (-> self skel root-channel 0))) + (set! + (-> a0-9 param 0) + (the float (+ (-> a0-9 frame-group data 0 length) -1)) + ) + (set! (-> a0-9 param 1) f30-0) + (joint-control-channel-group-eval! + a0-9 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + (until (begin + (not (nav-enemy-rnd-go-idle? 0.2)) + ) + (let ((a0-11 (-> self skel root-channel 0))) + (set! + (-> a0-11 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + (set! + (-> a0-11 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-11 param 1) f30-0) + (set! (-> a0-11 frame-num) 0.0) + (joint-control-channel-group! + a0-11 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-12 (-> self skel root-channel 0))) + (set! + (-> a0-12 param 0) + (the float (+ (-> a0-12 frame-group data 0 length) -1)) + ) + (set! (-> a0-12 param 1) f30-0) + (joint-control-channel-group-eval! + a0-12 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + (logior! (-> self nav-enemy-flags) 8) + (let ((a0-15 (-> self skel root-channel 0))) + (set! (-> a0-15 param 0) 1.0) + (joint-control-channel-group! + a0-15 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 180) + (let ((a0-17 (-> self skel root-channel 0))) + (set! + (-> a0-17 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + ) + (set! + (-> a0-17 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-17 param 1) f30-0) + (set! (-> a0-17 frame-num) 0.0) + (joint-control-channel-group! + a0-17 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (ja-blend-eval) + (suspend) + (let ((a0-18 (-> self skel root-channel 0))) + (set! + (-> a0-18 param 0) + (the float (+ (-> a0-18 frame-group data 0 length) -1)) + ) + (set! (-> a0-18 param 1) f30-0) + (joint-control-channel-group-eval! + a0-18 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-1 post) nav-enemy-patrol-post) + ) + +;; failed to figure out what this is: +(let + ((gp-2 + (new 'static 'state + :name 'nav-enemy-notice + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 29 (the-as function gp-2)) + (set! (-> gp-2 event) nav-enemy-default-event-handler) + (set! + (-> gp-2 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (logior! (-> self nav-enemy-flags) 4) + (nav-enemy-neck-control-look-at) + (when (logtest? (-> self nav-enemy-flags) 2) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-1) + ) + ) + (logior! (-> self nav-enemy-flags) 2) + (let ((gp-0 (-> self nav)) + (v1-10 (target-pos 0)) + ) + (set! (-> gp-0 target-pos quad) (-> v1-10 quad)) + ) + (let ((t9-3 (method-of-object (-> self nav) dummy-11))) + (-> self nav target-pos) + (t9-3) + ) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (let ((v0-4 (-> self nav-info run-turn-time))) + (set! (-> self turn-time) (the-as uint v0-4)) + (the-as uint v0-4) + ) + ) + ) + ) + (set! + (-> gp-2 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 22) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) f30-0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (seek-toward-heading-vec! + (-> self collide-info) + (-> self nav travel) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + (suspend) + (let ((a0-4 (-> self skel root-channel 0))) + (set! + (-> a0-4 param 0) + (the float (+ (-> a0-4 frame-group data 0 length) -1)) + ) + (set! (-> a0-4 param 1) f30-0) + (joint-control-channel-group-eval! + a0-4 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + (let ((t9-6 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-6) + ) + ) + ) + (set! (-> gp-2 post) nav-enemy-simple-post) + ) + +;; definition for function ja-group-index? +(defbehavior ja-group-index? nav-enemy ((arg0 int)) + (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data arg0) + ) + ) + +;; failed to figure out what this is: +(let + ((gp-3 + (new 'static 'state + :name 'nav-enemy-flee + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 22 (the-as function gp-3)) + (set! (-> gp-3 event) nav-enemy-default-event-handler) + (set! + (-> gp-3 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (let ((v0-0 (-> *display* base-frame-counter))) + (set! (-> self state-time) v0-0) + v0-0 + ) + ) + ) + ) + (set! + (-> gp-3 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + (the-as int (-> self reaction-time)) + ) + (when + (or + (or + (not *target*) + (< + (-> self nav-info stop-chase-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (let ((gp-0 'racer) + (a1-1 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 1) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'mode)) + (!= gp-0 (send-event-function *target* a1-1)) + ) + ) + (let ((t9-2 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-2) + ) + ) + ) + ) + ) + (set! + (-> gp-3 code) + (lambda :behavior nav-enemy + () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (ja-channel-push! 1 60) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) f30-0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info notice-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) f30-0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + (ja-channel-push! 1 60) + (while #t + (let ((a0-6 (-> self skel root-channel 0))) + (set! + (-> a0-6 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + (set! + (-> a0-6 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-6 param 1) f30-0) + (set! (-> a0-6 frame-num) 0.0) + (joint-control-channel-group! + a0-6 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-7 (-> self skel root-channel 0))) + (set! + (-> a0-7 param 0) + (the float (+ (-> a0-7 frame-group data 0 length) -1)) + ) + (set! (-> a0-7 param 1) f30-0) + (joint-control-channel-group-eval! + a0-7 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-3 post) nav-enemy-face-player-post) + ) + +;; definition for function nav-enemy-reset-frustration +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-reset-frustration nav-enemy () + (set! (-> self nav-enemy-flags) (logand -8193 (-> self nav-enemy-flags))) + (if *target* + (set! (-> self frustration-point quad) (-> *target* control shadow-pos quad)) + ) + (set! (-> self frustration-time) (-> *display* base-frame-counter)) + 0 + (none) + ) + +;; definition for function nav-enemy-player-at-frustration-point? +(defbehavior nav-enemy-player-at-frustration-point? nav-enemy () + (if *target* + (< + (vector-vector-distance + (-> *target* control shadow-pos) + (-> self frustration-point) + ) + 6144.0 + ) + ) + ) + +;; definition for function nav-enemy-frustrated? +(defbehavior nav-enemy-frustrated? nav-enemy () + (and + (logtest? (-> self nav-enemy-flags) 8192) + (nav-enemy-player-at-frustration-point?) + ) + ) + +;; failed to figure out what this is: +(let + ((gp-4 + (new 'static 'state + :name 'nav-enemy-chase + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 21 (the-as function gp-4)) + (set! (-> gp-4 event) nav-enemy-default-event-handler) + (set! + (-> gp-4 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (nav-enemy-neck-control-look-at) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self free-time) (-> *display* base-frame-counter)) + (logior! (-> self nav-enemy-flags) 4) + (set! (-> self target-speed) (-> self nav-info run-travel-speed)) + (set! (-> self acceleration) (-> self nav-info run-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (the-as uint (-> self nav-info run-turn-time))) + (nav-enemy-reset-frustration) + (none) + ) + ) + ) + (set! + (-> gp-4 trans) + (lambda :behavior nav-enemy () (when (logtest? (-> *target* state-flags) 128) + (let + ((t9-0 + (the-as (function object) enter-state) + ) + ) + (set! + (-> self next-state) + (the-as + state + (method-of-object self nav-enemy-patrol) + ) + ) + (t9-0) + ) + ) + (when (logtest? (-> self nav-enemy-flags) 256) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-victory)) + ) + (t9-1) + ) + ) + (if + (or + (not (nav-enemy-player-at-frustration-point?)) + (< + (-> self nav-info frustration-distance) + (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans)) + ) + ) + (nav-enemy-reset-frustration) + ) + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + (the-as int (-> self reaction-time)) + ) + (if + (>= + (the-as + int + (- (-> *display* base-frame-counter) (-> self frustration-time)) + ) + (the-as + int + (+ (-> self reaction-time) (-> self nav-info frustration-time)) + ) + ) + (logior! (-> self nav-enemy-flags) 8192) + ) + (when + (or + (not (TODO-RENAME-46 self (-> self nav-info stop-chase-distance))) + (nonzero? (logand (-> self nav-enemy-flags) 8192)) + ) + (let ((t9-7 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-stop-chase)) + ) + (t9-7) + ) + ) + (cond + ((logtest? #x20000 (-> self nav flags)) + (when + (>= + (the-as int (- (-> *display* base-frame-counter) (-> self free-time))) + 300 + ) + (let ((t9-8 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-8) + ) + ) + ) + (else + (let ((v0-6 (the-as object (-> *display* base-frame-counter)))) + (set! (-> self free-time) (the-as uint v0-6)) + v0-6 + ) + ) + ) + ) + ) + ) + (set! + (-> gp-4 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 60) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info run-anim)) + ) + ) + ) + (let ((v1-5 (-> self skel root-channel 0))) + (set! (-> v1-5 num-func) num-func-identity) + (set! (-> v1-5 frame-num) 0.0) + ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (while #t + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) f30-0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-4 post) nav-enemy-chase-post) + ) + +;; failed to figure out what this is: +(let + ((gp-5 + (new 'static 'state + :name 'nav-enemy-stop-chase + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 32 (the-as function gp-5)) + (set! (-> gp-5 event) nav-enemy-default-event-handler) + (set! + (-> gp-5 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let* + ((f30-0 + (vector-vector-distance (-> self collide-info trans) (target-pos 0)) + ) + (gp-1 + (the + int + (+ + (lerp-scale 600.0 1800.0 f30-0 32768.0 122880.0) + (nav-enemy-rnd-float-range 0.0 30.0) + ) + ) + ) + ) + (when (< f30-0 40960.0) + (let ((t9-4 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-stare)) + ) + (t9-4) + ) + ) + (set! (-> self state-timeout) (the-as uint gp-1)) + ) + (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) + (set! (-> self acceleration) (-> self nav-info walk-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info walk-rotate-speed)) + (let ((v0-5 (-> self nav-info walk-turn-time))) + (set! (-> self turn-time) (the-as uint v0-5)) + (the-as uint v0-5) + ) + ) + ) + ) + (set! + (-> gp-5 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 30 + ) + (when (logtest? (-> *target* state-flags) 128) + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-0) + ) + ) + (when + (and + (TODO-RENAME-46 self (-> self nav-info notice-distance)) + (not (nav-enemy-frustrated?)) + ) + (let ((t9-3 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-3) + ) + ) + (when + (or + (or + (not *target*) + (< + (-> self enemy-info idle-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (logtest? #x20000 (-> self nav flags)) + (>= + (the-as + int + (- + (-> *display* base-frame-counter) + (the-as uint (-> self state-time)) + ) + ) + (the-as int (-> self state-timeout)) + ) + ) + (let ((t9-5 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-stare)) + ) + (t9-5) + ) + ) + ) + ) + ) + (set! + (-> gp-5 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 30) + (let ((v1-2 (-> self skel root-channel 0))) + (set! + (-> v1-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info walk-anim)) + ) + ) + ) + (let ((v1-5 (-> self skel root-channel 0))) + (set! (-> v1-5 num-func) num-func-identity) + (set! (-> v1-5 frame-num) 0.0) + ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (while #t + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) f30-0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-5 post) nav-enemy-chase-post) + ) + +;; failed to figure out what this is: +(let + ((gp-6 + (new 'static 'state + :name 'nav-enemy-stare + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 31 (the-as function gp-6)) + (set! (-> gp-6 event) nav-enemy-default-event-handler) + (set! + (-> gp-6 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + (let + ((f0-0 + (vector-vector-distance (-> self collide-info trans) (target-pos 0)) + ) + ) + (set! + (-> self state-timeout) + (the-as + uint + (the + int + (+ + (lerp-scale 3000.0 0.0 f0-0 12288.0 122880.0) + (nav-enemy-rnd-float-range 0.0 900.0) + ) + ) + ) + ) + ) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (the-as uint (-> self nav-info run-turn-time))) + (let ((v0-4 (-> self collide-info transv))) + (set! (-> v0-4 quad) (-> *null-vector* quad)) + v0-4 + ) + ) + ) + ) + (set! + (-> gp-6 exit) + (lambda :behavior nav-enemy + () + (let ((v0-0 (logior (-> self nav-enemy-flags) 16))) + (set! (-> self nav-enemy-flags) v0-0) + v0-0 + ) + ) + ) + (set! + (-> gp-6 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 30 + ) + (when (logtest? (-> *target* state-flags) 128) + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-0) + ) + ) + (cond + ((TODO-RENAME-46 self (-> self nav-info notice-distance)) + (when + (and + (>= + (the-as + int + (- (-> *display* base-frame-counter) (-> self notice-time)) + ) + (the-as int (-> self reaction-time)) + ) + (not (nav-enemy-frustrated?)) + ) + (let ((t9-3 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-3) + ) + ) + ) + (else + (set! (-> self notice-time) (-> *display* base-frame-counter)) + ) + ) + (when + (not + (or + (and + *target* + (>= + 40960.0 + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (and + (-> self nav-info use-proximity-notice) + *target* + (>= + (-> self nav-info proximity-notice-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + ) + ) + (set! (-> self nav-enemy-flags) (logand -5 (-> self nav-enemy-flags))) + (when + (>= + (the-as + int + (- + (-> *display* base-frame-counter) + (the-as uint (-> self state-time)) + ) + ) + (the-as int (-> self state-timeout)) + ) + (let ((t9-6 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-give-up)) + ) + (t9-6) + ) + ) + ) + (when + (or + (or + (not *target*) + (< + (-> self enemy-info idle-distance) + (vector-vector-distance + (-> self collide-info trans) + (-> *target* control trans) + ) + ) + ) + (nonzero? (logand #x20000 (-> self nav flags))) + ) + (let ((t9-8 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-give-up)) + ) + (t9-8) + ) + ) + ) + ) + ) + (set! + (-> gp-6 code) + (lambda :behavior nav-enemy + () + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-give-up)) + ) + (t9-0) + ) + ) + ) + (set! (-> gp-6 post) nav-enemy-face-player-post) + ) + +;; failed to figure out what this is: +(let + ((gp-7 + (new 'static 'state + :name 'nav-enemy-give-up + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 25 (the-as function gp-7)) + (set! (-> gp-7 event) nav-enemy-default-event-handler) + (set! + (-> gp-7 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (nav-enemy-neck-control-inactive) + (let ((v0-1 (logand -5 (-> self nav-enemy-flags)))) + (set! (-> self nav-enemy-flags) v0-1) + v0-1 + ) + ) + ) + ) + (set! + (-> gp-7 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 30 + ) + (when (TODO-RENAME-46 self (-> self nav-info notice-distance)) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-1) + ) + ) + ) + ) + ) + (set! + (-> gp-7 code) + (lambda :behavior nav-enemy + () + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-patrol)) + ) + (t9-0) + ) + ) + ) + (set! (-> gp-7 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-8 + (new 'static 'state + :name 'nav-enemy-attack + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 20 (the-as function gp-8)) + (set! (-> gp-8 event) nav-enemy-default-event-handler) + (set! + (-> gp-8 code) + (lambda :behavior nav-enemy + () + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-victory)) + ) + (t9-0) + ) + ) + ) + (set! (-> gp-8 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-9 + (new 'static 'state + :name 'nav-enemy-victory + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 33 (the-as function gp-9)) + (set! (-> gp-9 event) nav-enemy-default-event-handler) + (set! + (-> gp-9 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy () (let ((v0-0 (-> self collide-info transv))) + (set! + (-> v0-0 quad) + (-> *null-vector* quad) + ) + v0-0 + ) + ) + ) + ) + (set! + (-> gp-9 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 22) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info victory-anim)) + ) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info victory-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) f30-0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info victory-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) f30-0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + (let ((t9-5 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-stare)) + ) + (t9-5) + ) + ) + ) + (set! (-> gp-9 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-10 + (new 'static 'state + :name 'nav-enemy-die + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 23 (the-as function gp-10)) + (set! (-> gp-10 event) process-drawable-death-event-handler) + (set! + (-> gp-10 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 0) + (set! (-> a1-0 message) 'child-die) + (let ((t9-0 send-event-function) + (v1-1 (-> self parent)) + ) + (t9-0 (the-as process (if v1-1 + (-> v1-1 0 self) + ) + ) + a1-0 + ) + ) + ) + ) + ) + ) + (set! + (-> gp-10 code) + (lambda :behavior nav-enemy + () + (ja-channel-push! 1 22) + (dummy-48 (-> self collide-info)) + (let ((t9-2 nav-enemy-fall-and-play-death-anim) + (a0-4 (-> self draw art-group data (-> self nav-info die-anim))) + (a1-1 1.0) + (a2-0 1.0) + ) + 1000000000000000.0 + 600 + (t9-2 (the-as art-joint-anim a0-4) (the-as int a1-1) a2-0) + ) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'death-end) + (send-event-function self a1-2) + ) + (when (logtest? (-> self enemy-info options) 2) + (let ((t9-4 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-fuel-cell)) + ) + (t9-4) + ) + ) + (while (-> self child) + (suspend) + ) + (dummy-18 self) + ) + ) + (set! (-> gp-10 post) nav-enemy-death-post) + ) + +;; failed to figure out what this is: +(let + ((gp-11 + (new 'static 'state + :name 'nav-enemy-fuel-cell + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 24 (the-as function gp-11)) + (set! + (-> gp-11 event) + (the-as + (function process int symbol event-message-block object) + process-drawable-fuel-cell-handler + ) + ) + (set! + (-> gp-11 code) + (lambda :behavior nav-enemy + () + (ja-channel-set! 0) + (dummy-48 (-> self collide-info)) + (ja-post) + (process-entity-status! self (entity-perm-status complete) #t) + (when (not (task-complete? *game-info* (-> self entity extra perm task))) + (label cfg-1) + (let ((t9-5 birth-pickup-at-point) + (a0-4 (-> self collide-info trans)) + (a1-2 6) + (a2-1 (the float (the-as int (-> self entity extra perm task)))) + (a3-0 #f) + (t1-0 #f) + ) + (t9-5 a0-4 a1-2 a2-1 a3-0 self t1-0) + ) + (when (not (-> self child)) + (suspend) + (goto cfg-1) + ) + (while (-> self child) + (suspend) + ) + ) + (dummy-18 self) + ) + ) + ) + +;; definition for function nav-enemy-jump-post +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior nav-enemy-jump-post nav-enemy () + (if (logtest? (-> self nav-enemy-flags) 16) + (seek-to-point-toward-point! + (-> self collide-info) + (-> self jump-dest) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + ) + (when (logtest? (-> self nav-enemy-flags) 8) + (let + ((f30-0 + (the float (- (-> *display* base-frame-counter) (-> self jump-time))) + ) + ) + (let + ((v1-12 + (eval-position! + (-> self jump-trajectory) + f30-0 + (new 'stack-no-clear 'vector) + ) + ) + ) + (set! (-> self collide-info trans quad) (-> v1-12 quad)) + ) + (eval-velocity! + (-> self jump-trajectory) + f30-0 + (-> self collide-info transv) + ) + ) + ) + (nav-enemy-simple-post) + 0 + (none) + ) + +;; definition for function nav-enemy-initialize-custom-jump +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior + nav-enemy-initialize-custom-jump nav-enemy + ((arg0 vector) (arg1 symbol) (arg2 float) (arg3 float) (arg4 float)) + (set! (-> self jump-dest quad) (-> arg0 quad)) + (let* ((s4-0 (-> self collide-info trans)) + (f28-0 (vector-vector-xz-distance s4-0 arg0)) + (f30-0 (fmax arg2 (* arg3 f28-0))) + ) + (let ((f26-0 (- (-> arg0 y) (-> s4-0 y)))) + (let ((f24-0 (vector-length (-> self collide-info transv))) + (s1-1 + (vector-z-quaternion! + (new 'stack-no-clear 'vector) + (-> self collide-info quat) + ) + ) + (s2-2 (vector-! (new 'stack-no-clear 'vector) arg0 s4-0)) + ) + (set! (-> s1-1 y) 0.0) + (set! (-> s2-2 y) 0.0) + (vector-xz-normalize! s1-1 1.0) + (vector-xz-normalize! s2-2 1.0) + (set! (-> self nav-enemy-flags) (logand -1537 (-> self nav-enemy-flags))) + (if + (or + (>= (* 0.5 (-> self nav-info run-travel-speed)) f24-0) + (>= (cos 3640.889) (vector-dot s1-1 s2-2)) + ) + (logior! (-> self nav-enemy-flags) 512) + ) + ) + (if + (or + (and (< f26-0 0.0) (< f28-0 (fabs f26-0))) + (and (< (fabs f26-0) 12288.0) (< f28-0 20480.0)) + ) + (logior! (-> self nav-enemy-flags) 1024) + ) + ) + (when (and arg1 (nonzero? (logand (-> self nav-enemy-flags) 1024))) + (set! (-> self nav-enemy-flags) (logand -513 (-> self nav-enemy-flags))) + (set! f30-0 2048.0) + ) + (setup-from-to-height! + (-> self jump-trajectory) + s4-0 + arg0 + f30-0 + (* 0.000011111111 arg4) + ) + ) + (set! (-> self nav extra-nav-sphere quad) (-> arg0 quad)) + (set! (-> self nav extra-nav-sphere w) (-> self collide-info nav-radius)) + (logior! (-> self collide-info nav-flags) 2) + 0 + (none) + ) + +;; definition for function nav-enemy-initialize-jump +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-initialize-jump nav-enemy ((arg0 vector)) + (nav-enemy-initialize-custom-jump + arg0 + #t + (-> self nav-info jump-height-min) + (-> self nav-info jump-height-factor) + -409600.0 + ) + 0 + (none) + ) + +;; definition for function nav-enemy-execute-custom-jump +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior + nav-enemy-execute-custom-jump nav-enemy + ((arg0 int) (arg1 float) (arg2 float)) + (when (logtest? (-> self nav-enemy-flags) 512) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) 1.0) + (joint-control-channel-group! + a0-1 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 30) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (let ((s3-0 (-> self skel root-channel 0))) + (set! + (-> s3-0 frame-group) + (the-as art-joint-anim (-> self draw art-group data arg0)) + ) + (set! (-> s3-0 param 0) (ja-aframe arg1 0)) + (set! (-> s3-0 param 1) arg2) + (set! (-> s3-0 frame-num) 0.0) + (joint-control-channel-group! + s3-0 + (the-as art-joint-anim (-> self draw art-group data arg0)) + num-func-seek! + ) + ) + (until (begin + (ja-blend-eval) + (suspend) + (let ((s3-1 (-> self skel root-channel 0))) + (set! (-> s3-1 param 0) (ja-aframe arg1 0)) + (set! (-> s3-1 param 1) arg2) + (joint-control-channel-group-eval! + s3-1 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + ) + (set! (-> self collide-info status) (logand -8 (-> self collide-info status))) + (set! (-> self jump-time) (-> *display* base-frame-counter)) + (logior! (-> self nav-enemy-flags) 8) + (cond + ((logtest? (-> self nav-enemy-flags) 1024) + (cond + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data (-> self nav-info run-anim)) + ) + ) + (else + (let ((a0-22 (-> self skel root-channel 0))) + (set! (-> a0-22 param 0) 1.0) + (joint-control-channel-group! + a0-22 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 30) + (let ((v1-39 (-> self skel root-channel 0))) + (set! + (-> v1-39 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info run-anim)) + ) + ) + ) + (let ((v1-42 (-> self skel root-channel 0))) + (set! (-> v1-42 num-func) num-func-identity) + (set! (-> v1-42 frame-num) 0.0) + ) + ) + ) + ) + (else + (let ((a0-30 (-> self skel root-channel 0))) + (set! (-> a0-30 param 0) 1.0) + (joint-control-channel-group! + a0-30 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (ja-channel-push! 1 30) + (let ((v1-49 (-> self skel root-channel 0))) + (set! + (-> v1-49 frame-group) + (the-as art-joint-anim (-> self draw art-group data arg0)) + ) + ) + (let ((s5-1 (-> self skel root-channel 0))) + (set! (-> s5-1 num-func) num-func-identity) + (set! (-> s5-1 frame-num) (ja-aframe arg1 0)) + ) + ) + ) + (while + (< + (the float (- (-> *display* base-frame-counter) (-> self jump-time))) + (-> self jump-trajectory time) + ) + (suspend) + (let ((a0-36 (-> self skel root-channel 0))) + (set! + (-> a0-36 param 0) + (the float (+ (-> a0-36 frame-group data 0 length) -1)) + ) + (set! (-> a0-36 param 1) 1.0) + (joint-control-channel-group-eval! + a0-36 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-blend-eval) + ) + (set! (-> self collide-info trans quad) (-> self jump-dest quad)) + (set! (-> self collide-info transv y) 0.0) + (set! + (-> self collide-info nav-flags) + (logand -3 (-> self collide-info nav-flags)) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-execute-jump +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-execute-jump nav-enemy () + (nav-enemy-execute-custom-jump + (-> self nav-info jump-anim) + (-> self nav-info jump-anim-start-frame) + (-> self nav-info jump-start-anim-speed) + ) + 0 + (none) + ) + +;; definition for function nav-enemy-jump-land-anim +;; INFO: Return type mismatch int vs none. +(defbehavior nav-enemy-jump-land-anim nav-enemy () + (let ((a0-0 (-> self skel root-channel 0))) + (set! + (-> a0-0 param 0) + (the float (+ (-> a0-0 frame-group data 0 length) -1)) + ) + (set! (-> a0-0 param 1) 1.0) + (joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!) + ) + (ja-channel-push! 1 22) + (let ((a0-2 (-> self skel root-channel 0))) + (set! + (-> a0-2 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info jump-land-anim)) + ) + ) + (set! + (-> a0-2 param 0) + (the + float + (+ + (-> + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info jump-land-anim)) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info jump-land-anim)) + ) + num-func-seek! + ) + ) + (until (begin + (ja-blend-eval) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! + (-> a0-3 param 0) + (the float (+ (-> a0-3 frame-group data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! + a0-3 + (the-as art-joint-anim #f) + num-func-seek! + ) + ) + (ja-done? 0) + ) + (empty) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +(let + ((gp-12 + (new 'static 'state + :name 'nav-enemy-jump + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 26 (the-as function gp-12)) + (set! (-> gp-12 event) nav-enemy-jump-event-handler) + (set! + (-> gp-12 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (when + (and + (-> self nav-info use-jump-blocked) + (TODO-RENAME-50 self (-> self event-param-point)) + ) + (let ((t9-1 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self dummy-74)) + ) + (t9-1) + ) + ) + (nav-enemy-initialize-jump (-> self event-param-point)) + (none) + ) + ) + ) + (set! + (-> gp-12 exit) + (lambda :behavior nav-enemy + () + (let ((v0-0 (logior (-> self nav-enemy-flags) 24))) + (set! (-> self nav-enemy-flags) v0-0) + v0-0 + ) + ) + ) + (set! + (-> gp-12 code) + (lambda :behavior nav-enemy + () + (nav-enemy-execute-jump) + (let ((a1-0 (the-as structure (-> self nav user-poly)))) + (if (not (the-as nav-poly a1-0)) + (set! a1-0 (dummy-16 (-> self nav) (-> self jump-dest))) + ) + (if a1-0 + ((method-of-object (-> self nav) dummy-14)) + ) + ) + (let ((t9-3 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-jump-land)) + ) + (t9-3) + ) + ) + ) + (set! (-> gp-12 post) nav-enemy-jump-post) + ) + +;; definition for function nav-enemy-jump-land-post +;; Used lq/sq +(defbehavior nav-enemy-jump-land-post nav-enemy () + (TODO-RENAME-9 (-> self align)) + (let ((t9-1 (method-of-object (-> self nav) dummy-11))) + (-> self nav target-pos) + (t9-1) + ) + (set! + (-> self target-speed) + (seek (-> self target-speed) (-> self nav-info run-travel-speed) 2048.0) + ) + (set! (-> self momentum-speed) (-> self target-speed)) + (let* + ((f0-7 + (fmin + (* (-> self speed-scale) (-> self momentum-speed)) + (* (vector-length (-> self nav travel)) (-> *display* frames-per-second)) + ) + ) + (v1-9 + (vector-normalize-copy! + (new 'stack-no-clear 'vector) + (-> self nav travel) + f0-7 + ) + ) + ) + (set! (-> self collide-info transv x) (-> v1-9 x)) + (set! (-> self collide-info transv z) (-> v1-9 z)) + ) + (if + (or + (logtest? (-> self nav-enemy-flags) 128) + (nonzero? (logand #x80000 (-> self nav flags))) + ) + (seek-to-point-toward-point! + (-> self collide-info) + (-> self nav target-pos) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + (seek-toward-heading-vec! + (-> self collide-info) + (-> self nav travel) + (-> self rotate-speed) + (the-as int (-> self turn-time)) + ) + ) + (let ((gp-0 vector-v++!) + (s5-0 (-> self collide-info transv)) + (t9-7 (method-of-object (-> self collide-info) dummy-62)) + ) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + 0.0 + (gp-0 s5-0 (the-as vector (t9-7))) + ) + (let ((t9-9 (method-of-object (-> self collide-info) dummy-59))) + (-> self collide-info transv) + (-> self nav-info gnd-collide-with) + 8192.0 + (-> self nav-info hover-if-no-ground) + (t9-9) + ) + (nav-enemy-common-post) + (none) + ) + +;; failed to figure out what this is: +(let + ((gp-13 + (new 'static 'state + :name 'nav-enemy-jump-land + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 27 (the-as function gp-13)) + (set! (-> gp-13 event) nav-enemy-default-event-handler) + (set! + (-> gp-13 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self nav flags) (nav-control-flags bit19)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self collide-info transv quad)) + (set! (-> gp-0 y) 0.0) + (set! (-> self target-speed) (vector-length gp-0)) + (set! (-> self momentum-speed) (-> self target-speed)) + (vector-xz-normalize! gp-0 16384.0) + (vector+! (-> self nav target-pos) (-> self collide-info trans) gp-0) + ) + ) + ) + ) + (set! + (-> gp-13 trans) + (lambda :behavior nav-enemy + () + (when + (or + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 150 + ) + (nonzero? (logand #x80000 (-> self nav flags))) + ) + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> self next-state) + (the-as state (method-of-object self nav-enemy-chase)) + ) + (t9-0) + ) + ) + ) + ) + (set! + (-> gp-13 code) + (lambda :behavior nav-enemy + () + (nav-enemy-jump-land-anim) + (let ((t9-1 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (-> self jump-return-state))) + (t9-1) + ) + ) + ) + (set! (-> gp-13 post) nav-enemy-jump-land-post) + ) + +;; failed to figure out what this is: +(let + ((gp-14 + (new 'static 'state + :name 'nav-enemy-jump-blocked + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 74 (the-as function gp-14)) + (set! (-> gp-14 event) nav-enemy-default-event-handler) + (set! + (-> gp-14 enter) + (the-as + (function object object object object object object object) + (lambda :behavior nav-enemy + () + (let ((v0-0 (-> *display* base-frame-counter))) + (set! (-> self state-time) v0-0) + v0-0 + ) + ) + ) + ) + (set! + (-> gp-14 trans) + (lambda :behavior nav-enemy + () + (when + (>= + (the-as + int + (- (-> *display* base-frame-counter) (the-as uint (-> self state-time))) + ) + 150 + ) + (let ((t9-0 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (-> self jump-return-state))) + (t9-0) + ) + ) + ) + ) + (set! + (-> gp-14 code) + (lambda :behavior nav-enemy + () + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + (ja-channel-push! 1 60) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + num-func-identity + ) + (set! + (-> gp-0 frame-num) + (rand-vu-float-range + 0.0 + (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + ) + ) + ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) + (while #t + (suspend) + (let ((a0-10 (-> self skel root-channel 0))) + (set! (-> a0-10 param 0) f30-0) + (joint-control-channel-group-eval! + a0-10 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + (none) + ) + ) + (set! (-> gp-14 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-15 + (new 'static 'state + :name 'nav-enemy-wait-for-cue + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 35 (the-as function gp-15)) + (set! (-> gp-15 event) nav-enemy-default-event-handler) + (set! + (-> gp-15 code) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logior! (-> self nav-enemy-flags) 2048) + (ja-channel-push! 1 30) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (let ((v1-6 (-> self skel root-channel 0))) + (set! + (-> v1-6 frame-group) + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info idle-anim)) + ) + ) + ) + (let ((v1-9 (-> self skel root-channel 0))) + (set! (-> v1-9 num-func) num-func-identity) + (set! (-> v1-9 frame-num) 0.0) + ) + (while (logtest? (-> self nav-enemy-flags) 2048) + (suspend) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) f30-0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + (ja-channel-push! 1 30) + (nav-enemy-turn-to-face-point (-> self event-param-point) 910.2222) + (let ((gp-0 (nav-enemy-rnd-int-range 0 150)) + (s5-0 (-> *display* base-frame-counter)) + ) + (until (begin + (let ((a0-12 (-> self skel root-channel 0))) + (set! (-> a0-12 param 0) f30-0) + (joint-control-channel-group-eval! + a0-12 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (suspend) + (>= (the-as int (- (-> *display* base-frame-counter) s5-0)) gp-0) + ) + (empty) + ) + ) + ) + (let ((t9-7 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (method-of-object self dummy-36))) + (t9-7) + ) + ) + ) + (set! (-> gp-15 post) nav-enemy-simple-post) + ) + +;; failed to figure out what this is: +(let + ((gp-16 + (new 'static 'state + :name 'nav-enemy-jump-to-point + :next #f + :exit #f + :code #f + :trans #f + :post #f + :enter #f + :event #f + ) + ) + ) + (method-set! nav-enemy 36 (the-as function gp-16)) + (set! (-> gp-16 event) nav-enemy-jump-event-handler) + (set! + (-> gp-16 exit) + (lambda :behavior nav-enemy + () + (let ((v0-0 (logior (-> self nav-enemy-flags) 24))) + (set! (-> self nav-enemy-flags) v0-0) + v0-0 + ) + ) + ) + (set! (-> gp-16 trans) (the-as (function object) (lambda () + 0 + (none) + ) + ) + ) + (set! + (-> gp-16 code) + (lambda :behavior nav-enemy + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (nav-enemy-initialize-jump (-> self event-param-point)) + (nav-enemy-neck-control-look-at) + (logior! (-> self nav-enemy-flags) 16) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) + (ja-channel-push! 1 60) + (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445) + ) + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + (nav-enemy-execute-jump) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (nav-enemy-jump-land-anim) + (let ((t9-7 (the-as (function object) enter-state))) + (set! (-> self next-state) (the-as state (method-of-object self dummy-35))) + (t9-7) + ) + (none) + ) + ) + (set! (-> gp-16 post) nav-enemy-jump-post) + ) + +;; definition for symbol *nav-enemy-dummy-shadow-control*, type shadow-control +(define + *nav-enemy-dummy-shadow-control* + (new 'static 'shadow-control + :settings + (new 'static 'shadow-settings + :center + (new 'static 'vector :w 0.000000000000000000000000000000000000000000056) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane (new 'static 'plane :y 1.0 :w 4096.0) + :top-plane (new 'static 'plane :y 1.0 :w -4096.0) + ) + ) + ) + +;; definition for method 45 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-45 nav-enemy ((obj nav-enemy) (arg0 nav-enemy-info)) + (set! (-> obj rand-gen) (new 'process 'random-generator)) + (set! (-> obj rand-gen seed) (the-as uint #x666edd1e)) + (set! (-> obj mask) (the-as process-mask (logior #x20000 (-> obj mask)))) + (TODO-RENAME-49 obj arg0) + (if (-> obj draw shadow) + (set! + (-> obj draw shadow-ctrl) + (new + 'process + 'shadow-control + (-> obj nav-info shadow-min-y) + (-> obj nav-info shadow-max-y) + (-> obj nav-info shadow-locus-dist) + (the-as float 17) + 245760.0 + ) + ) + (set! (-> obj draw shadow-ctrl) *nav-enemy-dummy-shadow-control*) + ) + (set! (-> obj align) (new 'process 'align-control obj)) + (set! + (-> obj nav) + (new + 'process + 'nav-control + (-> obj collide-info) + 16 + (-> arg0 nav-nearest-y-threshold) + ) + ) + (logior! + (-> obj nav flags) + (nav-control-flags display-marks bit0 bit3 bit5 bit6 bit7) + ) + (set! (-> obj nav gap-event) 'jump) + ((method-of-object (-> obj nav) dummy-26)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0)) + (logior! + (-> obj path flags) + (path-control-flag display draw-line draw-point draw-text) + ) + (set! + (-> obj enemy-info) + (new + 'process + 'fact-info-enemy + obj + (pickup-type eco-pill-random) + (-> *FACT-bank* default-pill-inc) + ) + ) + (set! (-> obj reaction-time) (the-as uint (nav-enemy-rnd-int-range 30 240))) + (set! (-> obj speed-scale) 1.0) + (logior! (-> obj nav-enemy-flags) 4216) + 0 + (none) + ) + +;; definition for method 49 of type nav-enemy +(defmethod TODO-RENAME-49 nav-enemy ((obj nav-enemy) (arg0 nav-enemy-info)) + (set! (-> obj nav-info) arg0) + (set! (-> obj rotate-speed) (-> obj nav-info walk-rotate-speed)) + (set! (-> obj turn-time) (the-as uint (-> obj nav-info walk-turn-time))) + (when (and (!= (-> obj nav-info neck-joint) -1) (zero? (-> obj neck))) + (set! + (-> obj neck) + (new + 'process + 'joint-mod + (joint-mod-handler-mode flex-blend) + obj + (-> obj nav-info neck-joint) + ) + ) + (set-vector! (-> obj neck twist-max) 8192.0 8192.0 0.0 1.0) + (set! (-> obj neck up) (the-as uint 1)) + (set! (-> obj neck nose) (the-as uint 2)) + (set! (-> obj neck ear) (the-as uint 0)) + (set! (-> obj neck max-dist) 102400.0) + (let ((f0-6 16384.0)) + (set! (-> obj neck ignore-angle) f0-6) + f0-6 + ) + ) + ) + +;; definition for function nav-enemy-init-by-other +;; INFO: Return type mismatch object vs nav-enemy. +;; Used lq/sq +(defbehavior + nav-enemy-init-by-other nav-enemy + ((arg0 nav-enemy) (arg1 vector) (arg2 vector)) + (TODO-RENAME-47 self) + (logior! (-> self mask) (process-mask actor-pause)) + (set! (-> self collide-info trans quad) (-> arg1 quad)) + (set! (-> self event-param-point quad) (-> arg2 quad)) + (let ((s3-1 (vector-! (new 'stack-no-clear 'vector) arg2 arg1))) + (set! (-> s3-1 y) 0.0) + (vector-normalize! s3-1 1.0) + (forward-up->quaternion (-> self collide-info quat) s3-1 *up-vector*) + ) + (vector-identity! (-> self collide-info scale)) + (set! (-> self entity) (-> arg0 entity)) + (TODO-RENAME-48 self) + (let ((v1-13 -4097) + (a0-10 (-> self nav-enemy-flags)) + ) + (set! (-> self nav-enemy-flags) (logand v1-13 a0-10)) + (logior! (-> self nav-enemy-flags) 2) + (let ((t9-5 (the-as (function object object) enter-state))) + (set! (-> self next-state) (the-as state (method-of-object self dummy-35))) + (the-as nav-enemy (t9-5 a0-10)) + ) + ) + ) + +;; definition for method 47 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-47 nav-enemy ((obj nav-enemy)) + 0 + (none) + ) + +;; definition for method 48 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-48 nav-enemy ((obj nav-enemy)) + 0 + (none) + ) + +;; definition for method 59 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-59 nav-enemy ((obj nav-enemy)) + (with-pp + (let ((t9-0 (the-as (function object) enter-state))) + (set! + (-> pp next-state) + (the-as state (method-of-object obj nav-enemy-idle)) + ) + (t9-0) + ) + 0 + (none) + ) + ) + +;; definition for method 11 of type nav-enemy +;; INFO: Return type mismatch int vs none. +(defmethod copy-defaults! nav-enemy ((obj nav-enemy) (arg0 res-lump)) + (TODO-RENAME-47 obj) + (process-drawable-from-entity! obj arg0) + (TODO-RENAME-48 obj) + (TODO-RENAME-59 obj) + 0 + (none) + ) + +;; definition for method 50 of type nav-enemy +;; Used lq/sq +(defmethod TODO-RENAME-50 nav-enemy ((obj nav-enemy) (arg0 vector)) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> s4-0 quad) (-> obj collide-info trans quad)) + (set! (-> obj collide-info trans quad) (-> arg0 quad)) + (let ((gp-0 (-> obj nav))) + (let ((t9-0 (method-of-object gp-0 dummy-28))) + -1 + (t9-0) + ) + (set! (-> obj collide-info trans quad) (-> s4-0 quad)) + (let* ((v1-8 (-> gp-0 mesh origin)) + (f0-1 (- (-> arg0 x) (-> v1-8 x))) + (f1-2 (- (-> arg0 z) (-> v1-8 z))) + ) + (countdown (v1-9 (-> gp-0 num-spheres)) + (let* ((a0-10 (-> gp-0 sphere v1-9)) + (f2-2 (- (-> a0-10 x) f0-1)) + (f3-1 (- (-> a0-10 z) f1-2)) + (f4-0 (-> a0-10 w)) + ) + (if (>= (* f4-0 f4-0) (+ (* f2-2 f2-2) (* f3-1 f3-1))) + (return #t) + ) + ) + ) + ) + ) + ) + #f + ) diff --git a/goal_src/levels/misty/misty-teetertotter.gc b/goal_src/levels/misty/misty-teetertotter.gc index c131706d88..36cef3972a 100644 --- a/goal_src/levels/misty/misty-teetertotter.gc +++ b/goal_src/levels/misty/misty-teetertotter.gc @@ -164,52 +164,54 @@ (lambda :behavior teetertotter ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (when (= arg2 'touch) - (-> arg3 param 0) - (let ((t9-0 (method-of-type touching-shapes-entry dummy-12))) - (-> self root) - 1 - (when (and (t9-0) (-> self rock-is-dangerous)) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'attack) - (set! (-> a1-2 param 0) (-> arg3 param 0)) - (let ((a0-2 (new 'static 'attack-info :mask #x20))) - (set! (-> a0-2 mode) 'deadly) - (set! (-> a1-2 param 1) (the-as uint a0-2)) - ) - (send-event-function arg0 a1-2) + (when + (and + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1) ) + (-> self rock-is-dangerous) + ) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'attack) + (set! (-> a1-2 param 0) (-> arg3 param 0)) + (let ((a0-2 (new 'static 'attack-info :mask #x20))) + (set! (-> a0-2 mode) 'deadly) + (set! (-> a1-2 param 1) (the-as uint a0-2)) + ) + (send-event-function arg0 a1-2) ) ) - (-> arg3 param 0) - (let ((t9-2 (method-of-type touching-shapes-entry dummy-12))) - (-> self root) - 2 - (when - (and - (t9-2) - (target-on-end-of-teetertotter? self) - (not (-> self launched-player)) - (-> self in-launch-window) + (when + (and + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 2) ) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 2) - (set! (-> a1-4 message) 'shove) - (set! (-> a1-4 param 0) (the-as uint #f)) - (let ((v1-16 (new 'static 'attack-info :mask #xcc0))) - (set! (-> v1-16 shove-back) 0.0) - (set! (-> v1-16 shove-up) 53248.0) - (set! (-> v1-16 angle) 'jump) - (set! (-> v1-16 control) 1.0) - (set! (-> a1-4 param 1) (the-as uint v1-16)) - ) - (when (send-event-function arg0 a1-4) - (let ((v0-0 #t)) - (set! (-> self launched-player) v0-0) - v0-0 - ) + (target-on-end-of-teetertotter? self) + (not (-> self launched-player)) + (-> self in-launch-window) + ) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 2) + (set! (-> a1-4 message) 'shove) + (set! (-> a1-4 param 0) (the-as uint #f)) + (let ((v1-16 (new 'static 'attack-info :mask #xcc0))) + (set! (-> v1-16 shove-back) 0.0) + (set! (-> v1-16 shove-up) 53248.0) + (set! (-> v1-16 angle) 'jump) + (set! (-> v1-16 control) 1.0) + (set! (-> a1-4 param 1) (the-as uint v1-16)) + ) + (when (send-event-function arg0 a1-4) + (let ((v0-0 #t)) + (set! (-> self launched-player) v0-0) + v0-0 ) ) ) diff --git a/test/decompiler/reference/levels/common/nav-enemy_REF.gc b/test/decompiler/reference/levels/common/nav-enemy_REF.gc index 6af3f94f9c..aaf1ad0897 100644 --- a/test/decompiler/reference/levels/common/nav-enemy_REF.gc +++ b/test/decompiler/reference/levels/common/nav-enemy_REF.gc @@ -3930,7 +3930,7 @@ nav-enemy-default-event-handler ;; definition for method 11 of type nav-enemy ;; INFO: Return type mismatch int vs none. -(defmethod dummy-method-11 nav-enemy ((obj nav-enemy) (arg0 object)) +(defmethod copy-defaults! nav-enemy ((obj nav-enemy) (arg0 res-lump)) (TODO-RENAME-47 obj) (process-drawable-from-entity! obj arg0) (TODO-RENAME-48 obj) diff --git a/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc b/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc index c7d81e6dcd..40d17f66c2 100644 --- a/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc @@ -166,52 +166,54 @@ (lambda :behavior teetertotter ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (when (= arg2 'touch) - (-> arg3 param 0) - (let ((t9-0 (method-of-type touching-shapes-entry dummy-12))) - (-> self root) - 1 - (when (and (t9-0) (-> self rock-is-dangerous)) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'attack) - (set! (-> a1-2 param 0) (-> arg3 param 0)) - (let ((a0-2 (new 'static 'attack-info :mask #x20))) - (set! (-> a0-2 mode) 'deadly) - (set! (-> a1-2 param 1) (the-as uint a0-2)) - ) - (send-event-function arg0 a1-2) + (when + (and + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1) ) + (-> self rock-is-dangerous) + ) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'attack) + (set! (-> a1-2 param 0) (-> arg3 param 0)) + (let ((a0-2 (new 'static 'attack-info :mask #x20))) + (set! (-> a0-2 mode) 'deadly) + (set! (-> a1-2 param 1) (the-as uint a0-2)) + ) + (send-event-function arg0 a1-2) ) ) - (-> arg3 param 0) - (let ((t9-2 (method-of-type touching-shapes-entry dummy-12))) - (-> self root) - 2 - (when - (and - (t9-2) - (target-on-end-of-teetertotter? self) - (not (-> self launched-player)) - (-> self in-launch-window) + (when + (and + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 2) ) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 2) - (set! (-> a1-4 message) 'shove) - (set! (-> a1-4 param 0) (the-as uint #f)) - (let ((v1-16 (new 'static 'attack-info :mask #xcc0))) - (set! (-> v1-16 shove-back) 0.0) - (set! (-> v1-16 shove-up) 53248.0) - (set! (-> v1-16 angle) 'jump) - (set! (-> v1-16 control) 1.0) - (set! (-> a1-4 param 1) (the-as uint v1-16)) - ) - (when (send-event-function arg0 a1-4) - (let ((v0-0 #t)) - (set! (-> self launched-player) v0-0) - v0-0 - ) + (target-on-end-of-teetertotter? self) + (not (-> self launched-player)) + (-> self in-launch-window) + ) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 2) + (set! (-> a1-4 message) 'shove) + (set! (-> a1-4 param 0) (the-as uint #f)) + (let ((v1-16 (new 'static 'attack-info :mask #xcc0))) + (set! (-> v1-16 shove-back) 0.0) + (set! (-> v1-16 shove-up) 53248.0) + (set! (-> v1-16 angle) 'jump) + (set! (-> v1-16 control) 1.0) + (set! (-> a1-4 param 1) (the-as uint v1-16)) + ) + (when (send-event-function arg0 a1-4) + (let ((v0-0 #t)) + (set! (-> self launched-player) v0-0) + v0-0 ) ) ) @@ -479,3 +481,7 @@ (go teetertotter-idle) (none) ) + + + + From b3dc755f06c4613a5aa4164f2670f897218d5597 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Sat, 14 Aug 2021 12:45:25 -0400 Subject: [PATCH 11/12] address _almost_ all feedback --- common/goos/TextDB.cpp | 2 +- decompiler/config/all-types.gc | 50 ++--- decompiler/config/jak1_ntsc_black_label.jsonc | 2 +- .../jak1_ntsc_black_label/type_casts.jsonc | 13 -- goal_src/engine/collide/collide-shape-h.gc | 14 +- goal_src/engine/game/fact-h.gc | 2 +- goal_src/engine/nav/navigate-h.gc | 10 +- goal_src/levels/common/nav-enemy-h.gc | 22 +- goal_src/levels/common/nav-enemy.gc | 192 ++++++------------ .../engine/collide/collide-shape-h_REF.gc | 14 +- .../reference/engine/game/fact-h_REF.gc | 2 +- .../reference/engine/nav/navigate-h_REF.gc | 10 +- .../levels/common/nav-enemy-h_REF.gc | 22 +- .../reference/levels/common/nav-enemy_REF.gc | 192 ++++++------------ 14 files changed, 209 insertions(+), 338 deletions(-) diff --git a/common/goos/TextDB.cpp b/common/goos/TextDB.cpp index d3213d286e..3a274741df 100644 --- a/common/goos/TextDB.cpp +++ b/common/goos/TextDB.cpp @@ -135,7 +135,7 @@ std::string TextDb::get_info_for(const Object& o, bool* terminate_compiler_error */ std::string TextDb::get_info_for(const std::shared_ptr& frag, int offset) const { std::string result = "text from " + frag->get_description() + - ", line: " + std::to_string(frag->get_line_idx(offset)) + "\n"; + ", line: " + std::to_string(frag->get_line_idx(offset) + 1) + "\n"; result += frag->get_line_containing_offset(offset) + "\n"; return result; } diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index d3df994e2f..5521e41dc8 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -9710,7 +9710,7 @@ :flag-assert #xc00000028 (:methods (new (symbol type process pickup-type float) _type_ 0) - (dummy-9 () uint 9) ;; See nav-enemy::process-drawable-death-event-handler + (TODO-RENAME-9 (_type_ symbol process-tree fact-info int) uint 9) ;; See nav-enemy::process-drawable-death-event-handler (reset! (_type_ symbol) none 10) (dummy-11 (_type_) float 11) ) @@ -10856,7 +10856,7 @@ (dummy-30 () none 30) (dummy-31 () none 31) (dummy-32 () none 32) - (dummy-33 () none 33) + (dummy-33 (_type_ vector uint) none 33) (dummy-34 () none 34) (dummy-35 (_type_) none 35) (dummy-36 () none 36) @@ -10877,7 +10877,7 @@ (dummy-51 () none 51) (dummy-52 () none 52) (dummy-53 () none 53) - (dummy-54 () none 54) + (dummy-54 (_type_ int int) none 54) (dummy-55 () none 55) ) ) @@ -10914,12 +10914,12 @@ :flag-assert #x41000001bc (:methods (dummy-56 () none 56) - (dummy-57 () none 57) - (dummy-58 () none 58) - (dummy-59 () none 59) - (dummy-60 () none 60) + (dummy-57 (_type_ vector) none 57) + (dummy-58 (_type_ vector) none 58) + (dummy-59 (_type_ vector uint float symbol symbol symbol) none 59) + (dummy-60 (_type_ float float symbol uint) none 60) (dummy-61 () none 61) - (dummy-62 () none 62) + (dummy-62 (_type_ vector float) vector 62) (dummy-63 () none 63) (dummy-64 () none 64) ) @@ -14412,7 +14412,7 @@ (new (symbol type collide-shape int float) _type_) (dummy-9 () none 9) (point-in-bounds? (_type_ vector) symbol 10) - (dummy-11 () none 11) + (dummy-11 (_type_ vector) none 11) (dummy-12 () none 12) (dummy-13 () none 13) (dummy-14 () none 14) @@ -14420,16 +14420,16 @@ (dummy-16 (_type_ vector) symbol 16) ; see - nav-enemy-test-point-in-nav-mesh? (dummy-17 () none 17) (dummy-18 () none 18) - (dummy-19 () none 19) + (dummy-19 (_type_ vector collide-shape-moving vector float) none 19) (dummy-20 () none 20) (dummy-21 () none 21) (dummy-22 () none 22) (dummy-23 () none 23) - (dummy-24 () none 24) + (dummy-24 (_type_ float symbol) none 24) (dummy-25 (_type_ vector float) symbol 25) ; see - nav-enemy-test-point-near-nav-mesh? - (dummy-26 () none 26) + (dummy-26 (_type_) none 26) (dummy-27 () none 27) - (dummy-28 () none 28) + (dummy-28 (_type_ int) none 28) (should-display? (_type_) symbol 29) (dummy-30 () none 30) (dummy-31 () none 31) @@ -21986,18 +21986,18 @@ (shadow-max-y meters :offset-assert 168) (shadow-min-y meters :offset-assert 172) (shadow-locus-dist meters :offset-assert 176) - (use-align basic :offset-assert 180) - (draw-shadow basic :offset-assert 184) - (move-to-ground basic :offset-assert 188) - (hover-if-no-ground basic :offset-assert 192) - (use-momentum basic :offset-assert 196) - (use-flee basic :offset-assert 200) - (use-proximity-notice basic :offset-assert 204) - (use-jump-blocked basic :offset-assert 208) - (use-jump-patrol basic :offset-assert 212) + (use-align symbol :offset-assert 180) + (draw-shadow symbol :offset-assert 184) + (move-to-ground symbol :offset-assert 188) + (hover-if-no-ground symbol :offset-assert 192) + (use-momentum symbol :offset-assert 196) + (use-flee symbol :offset-assert 200) + (use-proximity-notice symbol :offset-assert 204) + (use-jump-blocked symbol :offset-assert 208) + (use-jump-patrol symbol :offset-assert 212) (gnd-collide-with uint64 :offset-assert 216) - (debug-draw-neck basic :offset-assert 224) - (debug-draw-jump basic :offset-assert 228) + (debug-draw-neck symbol :offset-assert 224) + (debug-draw-jump symbol :offset-assert 228) ) :method-count-assert 9 :size-assert #xe8 @@ -22118,7 +22118,7 @@ (define-extern nav-enemy-execute-custom-jump (function int float float none :behavior nav-enemy)) (define-extern nav-enemy-initialize-custom-jump (function vector symbol float float float none :behavior nav-enemy)) (define-extern nav-enemy-simple-post (function none :behavior nav-enemy)) ;; TODO not confirmed -(define-extern nav-enemy-fall-and-play-death-anim (function art-joint-anim int float none :behavior nav-enemy)) ;; second arg is whatever is passed to align-control::11 +(define-extern nav-enemy-fall-and-play-death-anim (function art-joint-anim float float float int none :behavior nav-enemy)) ;; second arg is whatever is passed to align-control::11 (define-extern nav-enemy-neck-control-inactive (function none :behavior nav-enemy)) (define-extern nav-enemy-frustrated? (function symbol :behavior nav-enemy)) (define-extern nav-enemy-player-at-frustration-point? (function symbol :behavior nav-enemy)) diff --git a/decompiler/config/jak1_ntsc_black_label.jsonc b/decompiler/config/jak1_ntsc_black_label.jsonc index b157978891..b346771a87 100644 --- a/decompiler/config/jak1_ntsc_black_label.jsonc +++ b/decompiler/config/jak1_ntsc_black_label.jsonc @@ -3,7 +3,7 @@ // if you want to filter to only some object names. // it will make the decompiler much faster. - "allowed_objects": [], + "allowed_objects": ["nav-enemy"], //////////////////////////// // CODE ANALYSIS OPTIONS diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 0d61a2bb49..cbc865b79e 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -1990,21 +1990,8 @@ "(method 27 sunken-elevator)": [ [37, "v1", "art-joint-anim"] ], - - "(method 42 nav-enemy)": [ - [[5, 9], "t9", "(function object object)"] - ], - - "nav-enemy-test-point-near-nav-mesh?": [ - [[0, 999], "s6", "nav-enemy"] - ], - - "nav-enemy-get-new-patrol-point": [ - [[0, 999], "s6", "nav-enemy"] - ], "nav-enemy-set-base-collide-sphere-collide-with": [ - [[0, 999], "s6", "nav-enemy"], [19, "v1", "collide-shape-prim-group"], [23, "s2", "collide-shape-prim"], [32, "v1", "collide-shape-prim-sphere"], diff --git a/goal_src/engine/collide/collide-shape-h.gc b/goal_src/engine/collide/collide-shape-h.gc index a0c6e970be..5dc98c35ef 100644 --- a/goal_src/engine/collide/collide-shape-h.gc +++ b/goal_src/engine/collide/collide-shape-h.gc @@ -253,7 +253,7 @@ (dummy-30 () none 30) (dummy-31 () none 31) (dummy-32 () none 32) - (dummy-33 () none 33) + (dummy-33 (_type_ vector uint) none 33) (dummy-34 () none 34) (dummy-35 (_type_) none 35) (dummy-36 () none 36) @@ -274,7 +274,7 @@ (dummy-51 () none 51) (dummy-52 () none 52) (dummy-53 () none 53) - (dummy-54 () none 54) + (dummy-54 (_type_ int int) none 54) (dummy-55 () none 55) ) ) @@ -312,12 +312,12 @@ :flag-assert #x41000001bc (:methods (dummy-56 () none 56) - (dummy-57 () none 57) - (dummy-58 () none 58) - (dummy-59 () none 59) - (dummy-60 () none 60) + (dummy-57 (_type_ vector) none 57) + (dummy-58 (_type_ vector) none 58) + (dummy-59 (_type_ vector uint float symbol symbol symbol) none 59) + (dummy-60 (_type_ float float symbol uint) none 60) (dummy-61 () none 61) - (dummy-62 () none 62) + (dummy-62 (_type_ vector float) vector 62) (dummy-63 () none 63) (dummy-64 () none 64) ) diff --git a/goal_src/engine/game/fact-h.gc b/goal_src/engine/game/fact-h.gc index 78c546e637..291c42786f 100644 --- a/goal_src/engine/game/fact-h.gc +++ b/goal_src/engine/game/fact-h.gc @@ -82,7 +82,7 @@ :flag-assert #xc00000028 (:methods (new (symbol type process pickup-type float) _type_ 0) - (dummy-9 () uint 9) ;; See nav-enemy::process-drawable-death-event-handler + (TODO-RENAME-9 (_type_ symbol process-tree fact-info int) uint 9) ;; See nav-enemy::process-drawable-death-event-handler (reset! (_type_ symbol) none 10) (dummy-11 (_type_) float 11) ) diff --git a/goal_src/engine/nav/navigate-h.gc b/goal_src/engine/nav/navigate-h.gc index 3b252ecbd3..b84e8b7cbc 100644 --- a/goal_src/engine/nav/navigate-h.gc +++ b/goal_src/engine/nav/navigate-h.gc @@ -238,7 +238,7 @@ (new (symbol type collide-shape int float) _type_) (dummy-9 () none 9) (point-in-bounds? (_type_ vector) symbol 10) - (dummy-11 () none 11) + (dummy-11 (_type_ vector) none 11) (dummy-12 () none 12) (dummy-13 () none 13) (dummy-14 () none 14) @@ -246,16 +246,16 @@ (dummy-16 (_type_ vector) symbol 16) ; see - nav-enemy-test-point-in-nav-mesh? (dummy-17 () none 17) (dummy-18 () none 18) - (dummy-19 () none 19) + (dummy-19 (_type_ vector collide-shape-moving vector float) none 19) (dummy-20 () none 20) (dummy-21 () none 21) (dummy-22 () none 22) (dummy-23 () none 23) - (dummy-24 () none 24) + (dummy-24 (_type_ float symbol) none 24) (dummy-25 (_type_ vector float) symbol 25) ; see - nav-enemy-test-point-near-nav-mesh? - (dummy-26 () none 26) + (dummy-26 (_type_) none 26) (dummy-27 () none 27) - (dummy-28 () none 28) + (dummy-28 (_type_ int) none 28) (should-display? (_type_) symbol 29) (dummy-30 () none 30) (dummy-31 () none 31) diff --git a/goal_src/levels/common/nav-enemy-h.gc b/goal_src/levels/common/nav-enemy-h.gc index e450263abd..b7c806eefe 100644 --- a/goal_src/levels/common/nav-enemy-h.gc +++ b/goal_src/levels/common/nav-enemy-h.gc @@ -45,18 +45,18 @@ (shadow-max-y meters :offset-assert 168) (shadow-min-y meters :offset-assert 172) (shadow-locus-dist meters :offset-assert 176) - (use-align basic :offset-assert 180) - (draw-shadow basic :offset-assert 184) - (move-to-ground basic :offset-assert 188) - (hover-if-no-ground basic :offset-assert 192) - (use-momentum basic :offset-assert 196) - (use-flee basic :offset-assert 200) - (use-proximity-notice basic :offset-assert 204) - (use-jump-blocked basic :offset-assert 208) - (use-jump-patrol basic :offset-assert 212) + (use-align symbol :offset-assert 180) + (draw-shadow symbol :offset-assert 184) + (move-to-ground symbol :offset-assert 188) + (hover-if-no-ground symbol :offset-assert 192) + (use-momentum symbol :offset-assert 196) + (use-flee symbol :offset-assert 200) + (use-proximity-notice symbol :offset-assert 204) + (use-jump-blocked symbol :offset-assert 208) + (use-jump-patrol symbol :offset-assert 212) (gnd-collide-with uint64 :offset-assert 216) - (debug-draw-neck basic :offset-assert 224) - (debug-draw-jump basic :offset-assert 228) + (debug-draw-neck symbol :offset-assert 224) + (debug-draw-jump symbol :offset-assert 228) ) :method-count-assert 9 :size-assert #xe8 diff --git a/goal_src/levels/common/nav-enemy.gc b/goal_src/levels/common/nav-enemy.gc index f005ad816d..9461aa5140 100644 --- a/goal_src/levels/common/nav-enemy.gc +++ b/goal_src/levels/common/nav-enemy.gc @@ -82,32 +82,25 @@ ;; definition for method 42 of type nav-enemy (defmethod TODO-RENAME-42 nav-enemy ((obj nav-enemy)) (local-vars (v1-11 symbol)) - (with-pp - (when (<= (-> obj path curve num-cverts) 0) - (let ((t9-0 (the-as (function object object) enter-state)) - (a0-1 "no path") - ) - (set! (-> pp next-state) process-drawable-art-error) - (t9-0 a0-1) - ) - ) - (let ((s5-0 3)) - 0 - (let ((s4-0 (-> obj nav destination-pos))) - (until (or v1-11 (<= s5-0 0)) - (let ((v1-8 (nav-enemy-rnd-int-count (-> obj path curve num-cverts)))) - (eval-path-curve-div! (-> obj path) s4-0 (the float v1-8) 'interp) - ) - (+! s5-0 -1) - (set! - v1-11 - (< 4096.0 (vector-vector-xz-distance s4-0 (-> obj collide-info trans))) - ) + (if (<= (-> obj path curve num-cverts) 0) + (go process-drawable-art-error "no path") + ) + (let ((s5-0 3)) + 0 + (let ((s4-0 (-> obj nav destination-pos))) + (until (or v1-11 (<= s5-0 0)) + (let ((v1-8 (nav-enemy-rnd-int-count (-> obj path curve num-cverts)))) + (eval-path-curve-div! (-> obj path) s4-0 (the float v1-8) 'interp) + ) + (+! s5-0 -1) + (set! + v1-11 + (< 4096.0 (vector-vector-xz-distance s4-0 (-> obj collide-info trans))) ) ) ) - 0 ) + 0 ) ;; definition for method 39 of type nav-enemy @@ -127,11 +120,7 @@ ) ) ) - (let ((t9-0 (method-of-object (-> obj collide-info) dummy-54))) - 2 - 1 - (t9-0) - ) + (dummy-54 (-> obj collide-info) 2 1) (set! (-> obj nav-enemy-flags) (logand -257 (-> obj nav-enemy-flags))) ) ((method-of-object (-> obj draw shadow-ctrl) dummy-14)) @@ -281,11 +270,7 @@ (set! (-> v1-0 param 1) (the-as uint a1-1)) ) (when (send-event-function arg0 v1-0) - (let ((t9-1 (method-of-object (-> self collide-info) dummy-54))) - 2 - 0 - (t9-1) - ) + (dummy-54 (-> self collide-info) 2 0) (logior! (-> self nav-enemy-flags) 256) #t ) @@ -399,13 +384,7 @@ ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('death-start) - (let ((t9-0 (method-of-object (-> self fact) dummy-9))) - #t - *entity-pool* - (-> self fact) - 0 - (t9-0) - ) + (TODO-RENAME-9 (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) (let ((v0-0 (logior (-> self draw status) 2))) @@ -438,10 +417,7 @@ nav-enemy-default-event-handler ;; definition for method 40 of type nav-enemy ;; INFO: Return type mismatch int vs none. (defmethod dummy-40 nav-enemy ((obj nav-enemy)) - (let ((t9-0 (method-of-object (-> obj nav) dummy-11))) - (-> obj nav target-pos) - (t9-0) - ) + (dummy-11 (-> obj nav) (-> obj nav target-pos)) 0 (none) ) @@ -502,14 +478,10 @@ nav-enemy-default-event-handler ) ) ) - (when (-> obj nav-info move-to-ground) - (let ((s5-0 vector-v++!) - (s4-0 (-> obj collide-info transv)) - (t9-3 (method-of-object (-> obj collide-info) dummy-62)) - ) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - 0.0 - (s5-0 s4-0 (the-as vector (t9-3))) + (if (-> obj nav-info move-to-ground) + (vector-v++! + (-> obj collide-info transv) + (dummy-62 (-> obj collide-info) (new-stack-vector0) 0.0) ) ) 0 @@ -546,23 +518,17 @@ nav-enemy-default-event-handler ;; definition for method 38 of type nav-enemy ;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-38 nav-enemy ((obj nav-enemy)) - (cond - ((-> obj nav-info move-to-ground) - (let ((t9-0 (method-of-object (-> obj collide-info) dummy-59))) - (-> obj collide-info transv) - (-> obj nav-info gnd-collide-with) - 8192.0 - (-> obj nav-info hover-if-no-ground) - (nonzero? (logand (-> obj nav-enemy-flags) #x8000)) - (t9-0) - ) - ) - (else - (let ((t9-1 (method-of-object (-> obj collide-info) dummy-58))) - (-> obj collide-info transv) - (t9-1) - ) + (if (-> obj nav-info move-to-ground) + (dummy-59 + (-> obj collide-info) + (-> obj collide-info transv) + (-> obj nav-info gnd-collide-with) + 8192.0 + #f + (-> obj nav-info hover-if-no-ground) + (nonzero? (logand (-> obj nav-enemy-flags) #x8000)) ) + (dummy-58 (-> obj collide-info) (-> obj collide-info transv)) ) 0 (none) @@ -611,12 +577,12 @@ nav-enemy-default-event-handler (logior! (-> self nav flags) (nav-control-flags bit10)) (nav-enemy-get-new-patrol-point) ) - (let ((t9-1 (method-of-object (-> self nav) dummy-19))) + (dummy-19 + (-> self nav) (-> self nav target-pos) (-> self collide-info) (-> self nav destination-pos) (-> self rotate-speed) - (t9-1) ) (if (logtest? #x200000 (-> self nav flags)) (logclear! (-> self nav flags) (nav-control-flags bit10)) @@ -659,10 +625,7 @@ nav-enemy-default-event-handler (set! (-> self nav travel quad) (-> gp-1 quad)) ) (vector-normalize! (-> self nav travel) 409600.0) - (let ((t9-3 (method-of-object (-> self nav) dummy-24))) - 204.8 - (t9-3) - ) + (dummy-24 (-> self nav) 204.8 #f) (vector+! (-> self nav target-pos) (-> self collide-info trans) @@ -693,18 +656,14 @@ nav-enemy-default-event-handler ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defbehavior nav-enemy-falling-post nav-enemy () - (let ((gp-0 vector-v++!) - (s5-0 (-> self collide-info transv)) - (t9-0 (method-of-object (-> self collide-info) dummy-62)) - ) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - 0.0 - (gp-0 s5-0 (the-as vector (t9-0))) + (vector-v++! + (-> self collide-info transv) + (dummy-62 (-> self collide-info) (new-stack-vector0) 0.0) ) - (let ((t9-2 (method-of-object (-> self collide-info) dummy-33))) + (dummy-33 + (-> self collide-info) (-> self collide-info transv) (-> self collide-info root-prim collide-with) - (t9-2) ) (nav-enemy-common-post) 0 @@ -715,18 +674,11 @@ nav-enemy-default-event-handler ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defbehavior nav-enemy-death-post nav-enemy () - (let ((gp-0 vector-v++!) - (s5-0 (-> self collide-info transv)) - (t9-0 (method-of-object (-> self collide-info) dummy-62)) - ) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - 0.0 - (gp-0 s5-0 (the-as vector (t9-0))) - ) - (let ((t9-2 (method-of-object (-> self collide-info) dummy-57))) + (vector-v++! (-> self collide-info transv) - (t9-2) + (dummy-62 (-> self collide-info) (new-stack-vector0) 0.0) ) + (dummy-57 (-> self collide-info) (-> self collide-info transv)) (nav-enemy-common-post) 0 (none) @@ -1002,7 +954,7 @@ nav-enemy-default-event-handler ;; INFO: Return type mismatch int vs none. (defbehavior nav-enemy-fall-and-play-death-anim nav-enemy - ((arg0 art-joint-anim) (arg1 int) (arg2 float)) + ((arg0 art-joint-anim) (arg1 float) (arg2 float) (arg3 float) (arg4 int)) (nav-enemy-neck-control-inactive) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self skel root-channel 0 frame-group) arg0) @@ -1049,7 +1001,7 @@ nav-enemy-default-event-handler ((nonzero? (-> self align)) (when (not s4-1) (TODO-RENAME-9 (-> self align)) - (TODO-RENAME-10 (-> self align) 4098 1.0 (the-as float arg1) 1.0) + (TODO-RENAME-10 (-> self align) 4098 1.0 arg1 1.0) (when (zero? (logand (-> self align flags) 1)) (let ((f0-6 @@ -1206,13 +1158,13 @@ nav-enemy-default-event-handler () (nav-enemy-neck-control-inactive) (set! (-> self state-time) (-> *display* base-frame-counter)) - (when (-> self nav-info move-to-ground) - (let ((t9-1 (method-of-object (-> self collide-info) dummy-60))) + (if (-> self nav-info move-to-ground) + (dummy-60 + (-> self collide-info) 40960.0 40960.0 #t (-> self nav-info gnd-collide-with) - (t9-1) ) ) (set! (-> self nav-enemy-flags) (logand -7 (-> self nav-enemy-flags))) @@ -1750,10 +1702,7 @@ nav-enemy-default-event-handler ) (set! (-> gp-0 target-pos quad) (-> v1-10 quad)) ) - (let ((t9-3 (method-of-object (-> self nav) dummy-11))) - (-> self nav target-pos) - (t9-3) - ) + (dummy-11 (-> self nav) (-> self nav target-pos)) (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) (let ((v0-4 (-> self nav-info run-turn-time))) (set! (-> self turn-time) (the-as uint v0-4)) @@ -2876,14 +2825,15 @@ nav-enemy-default-event-handler () (ja-channel-push! 1 22) (dummy-48 (-> self collide-info)) - (let ((t9-2 nav-enemy-fall-and-play-death-anim) - (a0-4 (-> self draw art-group data (-> self nav-info die-anim))) - (a1-1 1.0) - (a2-0 1.0) - ) + (nav-enemy-fall-and-play-death-anim + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info die-anim)) + ) + 1.0 + 1.0 1000000000000000.0 600 - (t9-2 (the-as art-joint-anim a0-4) (the-as int a1-1) a2-0) ) (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) @@ -3383,10 +3333,7 @@ nav-enemy-default-event-handler ;; Used lq/sq (defbehavior nav-enemy-jump-land-post nav-enemy () (TODO-RENAME-9 (-> self align)) - (let ((t9-1 (method-of-object (-> self nav) dummy-11))) - (-> self nav target-pos) - (t9-1) - ) + (dummy-11 (-> self nav) (-> self nav target-pos)) (set! (-> self target-speed) (seek (-> self target-speed) (-> self nav-info run-travel-speed) 2048.0) @@ -3428,20 +3375,18 @@ nav-enemy-default-event-handler (the-as int (-> self turn-time)) ) ) - (let ((gp-0 vector-v++!) - (s5-0 (-> self collide-info transv)) - (t9-7 (method-of-object (-> self collide-info) dummy-62)) - ) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - 0.0 - (gp-0 s5-0 (the-as vector (t9-7))) + (vector-v++! + (-> self collide-info transv) + (dummy-62 (-> self collide-info) (new-stack-vector0) 0.0) ) - (let ((t9-9 (method-of-object (-> self collide-info) dummy-59))) + (dummy-59 + (-> self collide-info) (-> self collide-info transv) (-> self nav-info gnd-collide-with) 8192.0 + #f (-> self nav-info hover-if-no-ground) - (t9-9) + #f ) (nav-enemy-common-post) (none) @@ -3821,7 +3766,7 @@ nav-enemy-default-event-handler (nav-control-flags display-marks bit0 bit3 bit5 bit6 bit7) ) (set! (-> obj nav gap-event) 'jump) - ((method-of-object (-> obj nav) dummy-26)) + (dummy-26 (-> obj nav)) (set! (-> obj path) (new 'process 'path-control obj 'path 0.0)) (logior! (-> obj path flags) @@ -3950,10 +3895,7 @@ nav-enemy-default-event-handler (set! (-> s4-0 quad) (-> obj collide-info trans quad)) (set! (-> obj collide-info trans quad) (-> arg0 quad)) (let ((gp-0 (-> obj nav))) - (let ((t9-0 (method-of-object gp-0 dummy-28))) - -1 - (t9-0) - ) + (dummy-28 gp-0 -1) (set! (-> obj collide-info trans quad) (-> s4-0 quad)) (let* ((v1-8 (-> gp-0 mesh origin)) (f0-1 (- (-> arg0 x) (-> v1-8 x))) diff --git a/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc b/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc index 9bc41ace7d..4c04fafe39 100644 --- a/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc @@ -411,7 +411,7 @@ (dummy-30 () none 30) (dummy-31 () none 31) (dummy-32 () none 32) - (dummy-33 () none 33) + (dummy-33 (_type_ vector uint) none 33) (dummy-34 () none 34) (dummy-35 (_type_) none 35) (dummy-36 () none 36) @@ -432,7 +432,7 @@ (dummy-51 () none 51) (dummy-52 () none 52) (dummy-53 () none 53) - (dummy-54 () none 54) + (dummy-54 (_type_ int int) none 54) (dummy-55 () none 55) ) ) @@ -503,12 +503,12 @@ :flag-assert #x41000001bc (:methods (dummy-56 () none 56) - (dummy-57 () none 57) - (dummy-58 () none 58) - (dummy-59 () none 59) - (dummy-60 () none 60) + (dummy-57 (_type_ vector) none 57) + (dummy-58 (_type_ vector) none 58) + (dummy-59 (_type_ vector uint float symbol symbol symbol) none 59) + (dummy-60 (_type_ float float symbol uint) none 60) (dummy-61 () none 61) - (dummy-62 () none 62) + (dummy-62 (_type_ vector float) vector 62) (dummy-63 () none 63) (dummy-64 () none 64) ) diff --git a/test/decompiler/reference/engine/game/fact-h_REF.gc b/test/decompiler/reference/engine/game/fact-h_REF.gc index 5abe8f8a6d..7bf5d72900 100644 --- a/test/decompiler/reference/engine/game/fact-h_REF.gc +++ b/test/decompiler/reference/engine/game/fact-h_REF.gc @@ -119,7 +119,7 @@ :flag-assert #xc00000028 (:methods (new (symbol type process pickup-type float) _type_ 0) - (dummy-9 () uint 9) + (TODO-RENAME-9 (_type_ symbol process-tree fact-info int) uint 9) (reset! (_type_ symbol) none 10) (dummy-11 (_type_) float 11) ) diff --git a/test/decompiler/reference/engine/nav/navigate-h_REF.gc b/test/decompiler/reference/engine/nav/navigate-h_REF.gc index 2f98cd91fd..e75a2bad6f 100644 --- a/test/decompiler/reference/engine/nav/navigate-h_REF.gc +++ b/test/decompiler/reference/engine/nav/navigate-h_REF.gc @@ -381,7 +381,7 @@ (new (symbol type collide-shape int float) _type_ 0) (dummy-9 () none 9) (point-in-bounds? (_type_ vector) symbol 10) - (dummy-11 () none 11) + (dummy-11 (_type_ vector) none 11) (dummy-12 () none 12) (dummy-13 () none 13) (dummy-14 () none 14) @@ -389,16 +389,16 @@ (dummy-16 (_type_ vector) symbol 16) (dummy-17 () none 17) (dummy-18 () none 18) - (dummy-19 () none 19) + (dummy-19 (_type_ vector collide-shape-moving vector float) none 19) (dummy-20 () none 20) (dummy-21 () none 21) (dummy-22 () none 22) (dummy-23 () none 23) - (dummy-24 () none 24) + (dummy-24 (_type_ float symbol) none 24) (dummy-25 (_type_ vector float) symbol 25) - (dummy-26 () none 26) + (dummy-26 (_type_) none 26) (dummy-27 () none 27) - (dummy-28 () none 28) + (dummy-28 (_type_ int) none 28) (should-display? (_type_) symbol 29) (dummy-30 () none 30) (dummy-31 () none 31) diff --git a/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc b/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc index f92d088432..2eb6e32acf 100644 --- a/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc +++ b/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc @@ -42,18 +42,18 @@ (shadow-max-y meters :offset-assert 168) (shadow-min-y meters :offset-assert 172) (shadow-locus-dist meters :offset-assert 176) - (use-align basic :offset-assert 180) - (draw-shadow basic :offset-assert 184) - (move-to-ground basic :offset-assert 188) - (hover-if-no-ground basic :offset-assert 192) - (use-momentum basic :offset-assert 196) - (use-flee basic :offset-assert 200) - (use-proximity-notice basic :offset-assert 204) - (use-jump-blocked basic :offset-assert 208) - (use-jump-patrol basic :offset-assert 212) + (use-align symbol :offset-assert 180) + (draw-shadow symbol :offset-assert 184) + (move-to-ground symbol :offset-assert 188) + (hover-if-no-ground symbol :offset-assert 192) + (use-momentum symbol :offset-assert 196) + (use-flee symbol :offset-assert 200) + (use-proximity-notice symbol :offset-assert 204) + (use-jump-blocked symbol :offset-assert 208) + (use-jump-patrol symbol :offset-assert 212) (gnd-collide-with uint64 :offset-assert 216) - (debug-draw-neck basic :offset-assert 224) - (debug-draw-jump basic :offset-assert 228) + (debug-draw-neck symbol :offset-assert 224) + (debug-draw-jump symbol :offset-assert 228) ) :method-count-assert 9 :size-assert #xe8 diff --git a/test/decompiler/reference/levels/common/nav-enemy_REF.gc b/test/decompiler/reference/levels/common/nav-enemy_REF.gc index aaf1ad0897..40f53811d2 100644 --- a/test/decompiler/reference/levels/common/nav-enemy_REF.gc +++ b/test/decompiler/reference/levels/common/nav-enemy_REF.gc @@ -78,32 +78,25 @@ ;; definition for method 42 of type nav-enemy (defmethod TODO-RENAME-42 nav-enemy ((obj nav-enemy)) (local-vars (v1-11 symbol)) - (with-pp - (when (<= (-> obj path curve num-cverts) 0) - (let ((t9-0 (the-as (function object object) enter-state)) - (a0-1 "no path") - ) - (set! (-> pp next-state) process-drawable-art-error) - (t9-0 a0-1) - ) - ) - (let ((s5-0 3)) - 0 - (let ((s4-0 (-> obj nav destination-pos))) - (until (or v1-11 (<= s5-0 0)) - (let ((v1-8 (nav-enemy-rnd-int-count (-> obj path curve num-cverts)))) - (eval-path-curve-div! (-> obj path) s4-0 (the float v1-8) 'interp) - ) - (+! s5-0 -1) - (set! - v1-11 - (< 4096.0 (vector-vector-xz-distance s4-0 (-> obj collide-info trans))) - ) + (if (<= (-> obj path curve num-cverts) 0) + (go process-drawable-art-error "no path") + ) + (let ((s5-0 3)) + 0 + (let ((s4-0 (-> obj nav destination-pos))) + (until (or v1-11 (<= s5-0 0)) + (let ((v1-8 (nav-enemy-rnd-int-count (-> obj path curve num-cverts)))) + (eval-path-curve-div! (-> obj path) s4-0 (the float v1-8) 'interp) + ) + (+! s5-0 -1) + (set! + v1-11 + (< 4096.0 (vector-vector-xz-distance s4-0 (-> obj collide-info trans))) ) ) ) - 0 ) + 0 ) ;; definition for method 39 of type nav-enemy @@ -123,11 +116,7 @@ ) ) ) - (let ((t9-0 (method-of-object (-> obj collide-info) dummy-54))) - 2 - 1 - (t9-0) - ) + (dummy-54 (-> obj collide-info) 2 1) (set! (-> obj nav-enemy-flags) (logand -257 (-> obj nav-enemy-flags))) ) ((method-of-object (-> obj draw shadow-ctrl) dummy-14)) @@ -277,11 +266,7 @@ (set! (-> v1-0 param 1) (the-as uint a1-1)) ) (when (send-event-function arg0 v1-0) - (let ((t9-1 (method-of-object (-> self collide-info) dummy-54))) - 2 - 0 - (t9-1) - ) + (dummy-54 (-> self collide-info) 2 0) (logior! (-> self nav-enemy-flags) 256) #t ) @@ -395,13 +380,7 @@ ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('death-start) - (let ((t9-0 (method-of-object (-> self fact) dummy-9))) - #t - *entity-pool* - (-> self fact) - 0 - (t9-0) - ) + (TODO-RENAME-9 (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) (let ((v0-0 (logior (-> self draw status) 2))) @@ -434,10 +413,7 @@ nav-enemy-default-event-handler ;; definition for method 40 of type nav-enemy ;; INFO: Return type mismatch int vs none. (defmethod dummy-40 nav-enemy ((obj nav-enemy)) - (let ((t9-0 (method-of-object (-> obj nav) dummy-11))) - (-> obj nav target-pos) - (t9-0) - ) + (dummy-11 (-> obj nav) (-> obj nav target-pos)) 0 (none) ) @@ -498,14 +474,10 @@ nav-enemy-default-event-handler ) ) ) - (when (-> obj nav-info move-to-ground) - (let ((s5-0 vector-v++!) - (s4-0 (-> obj collide-info transv)) - (t9-3 (method-of-object (-> obj collide-info) dummy-62)) - ) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - 0.0 - (s5-0 s4-0 (the-as vector (t9-3))) + (if (-> obj nav-info move-to-ground) + (vector-v++! + (-> obj collide-info transv) + (dummy-62 (-> obj collide-info) (new-stack-vector0) 0.0) ) ) 0 @@ -542,23 +514,17 @@ nav-enemy-default-event-handler ;; definition for method 38 of type nav-enemy ;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-38 nav-enemy ((obj nav-enemy)) - (cond - ((-> obj nav-info move-to-ground) - (let ((t9-0 (method-of-object (-> obj collide-info) dummy-59))) - (-> obj collide-info transv) - (-> obj nav-info gnd-collide-with) - 8192.0 - (-> obj nav-info hover-if-no-ground) - (nonzero? (logand (-> obj nav-enemy-flags) #x8000)) - (t9-0) - ) - ) - (else - (let ((t9-1 (method-of-object (-> obj collide-info) dummy-58))) - (-> obj collide-info transv) - (t9-1) - ) + (if (-> obj nav-info move-to-ground) + (dummy-59 + (-> obj collide-info) + (-> obj collide-info transv) + (-> obj nav-info gnd-collide-with) + 8192.0 + #f + (-> obj nav-info hover-if-no-ground) + (nonzero? (logand (-> obj nav-enemy-flags) #x8000)) ) + (dummy-58 (-> obj collide-info) (-> obj collide-info transv)) ) 0 (none) @@ -607,12 +573,12 @@ nav-enemy-default-event-handler (logior! (-> self nav flags) (nav-control-flags bit10)) (nav-enemy-get-new-patrol-point) ) - (let ((t9-1 (method-of-object (-> self nav) dummy-19))) + (dummy-19 + (-> self nav) (-> self nav target-pos) (-> self collide-info) (-> self nav destination-pos) (-> self rotate-speed) - (t9-1) ) (if (logtest? #x200000 (-> self nav flags)) (logclear! (-> self nav flags) (nav-control-flags bit10)) @@ -655,10 +621,7 @@ nav-enemy-default-event-handler (set! (-> self nav travel quad) (-> gp-1 quad)) ) (vector-normalize! (-> self nav travel) 409600.0) - (let ((t9-3 (method-of-object (-> self nav) dummy-24))) - 204.8 - (t9-3) - ) + (dummy-24 (-> self nav) 204.8 #f) (vector+! (-> self nav target-pos) (-> self collide-info trans) @@ -689,18 +652,14 @@ nav-enemy-default-event-handler ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defbehavior nav-enemy-falling-post nav-enemy () - (let ((gp-0 vector-v++!) - (s5-0 (-> self collide-info transv)) - (t9-0 (method-of-object (-> self collide-info) dummy-62)) - ) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - 0.0 - (gp-0 s5-0 (the-as vector (t9-0))) + (vector-v++! + (-> self collide-info transv) + (dummy-62 (-> self collide-info) (new-stack-vector0) 0.0) ) - (let ((t9-2 (method-of-object (-> self collide-info) dummy-33))) + (dummy-33 + (-> self collide-info) (-> self collide-info transv) (-> self collide-info root-prim collide-with) - (t9-2) ) (nav-enemy-common-post) 0 @@ -711,18 +670,11 @@ nav-enemy-default-event-handler ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defbehavior nav-enemy-death-post nav-enemy () - (let ((gp-0 vector-v++!) - (s5-0 (-> self collide-info transv)) - (t9-0 (method-of-object (-> self collide-info) dummy-62)) - ) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - 0.0 - (gp-0 s5-0 (the-as vector (t9-0))) - ) - (let ((t9-2 (method-of-object (-> self collide-info) dummy-57))) + (vector-v++! (-> self collide-info transv) - (t9-2) + (dummy-62 (-> self collide-info) (new-stack-vector0) 0.0) ) + (dummy-57 (-> self collide-info) (-> self collide-info transv)) (nav-enemy-common-post) 0 (none) @@ -998,7 +950,7 @@ nav-enemy-default-event-handler ;; INFO: Return type mismatch int vs none. (defbehavior nav-enemy-fall-and-play-death-anim nav-enemy - ((arg0 art-joint-anim) (arg1 int) (arg2 float)) + ((arg0 art-joint-anim) (arg1 float) (arg2 float) (arg3 float) (arg4 int)) (nav-enemy-neck-control-inactive) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self skel root-channel 0 frame-group) arg0) @@ -1045,7 +997,7 @@ nav-enemy-default-event-handler ((nonzero? (-> self align)) (when (not s4-1) (TODO-RENAME-9 (-> self align)) - (TODO-RENAME-10 (-> self align) 4098 1.0 (the-as float arg1) 1.0) + (TODO-RENAME-10 (-> self align) 4098 1.0 arg1 1.0) (when (zero? (logand (-> self align flags) 1)) (let ((f0-6 @@ -1202,13 +1154,13 @@ nav-enemy-default-event-handler () (nav-enemy-neck-control-inactive) (set! (-> self state-time) (-> *display* base-frame-counter)) - (when (-> self nav-info move-to-ground) - (let ((t9-1 (method-of-object (-> self collide-info) dummy-60))) + (if (-> self nav-info move-to-ground) + (dummy-60 + (-> self collide-info) 40960.0 40960.0 #t (-> self nav-info gnd-collide-with) - (t9-1) ) ) (set! (-> self nav-enemy-flags) (logand -7 (-> self nav-enemy-flags))) @@ -1746,10 +1698,7 @@ nav-enemy-default-event-handler ) (set! (-> gp-0 target-pos quad) (-> v1-10 quad)) ) - (let ((t9-3 (method-of-object (-> self nav) dummy-11))) - (-> self nav target-pos) - (t9-3) - ) + (dummy-11 (-> self nav) (-> self nav target-pos)) (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) (let ((v0-4 (-> self nav-info run-turn-time))) (set! (-> self turn-time) (the-as uint v0-4)) @@ -2872,14 +2821,15 @@ nav-enemy-default-event-handler () (ja-channel-push! 1 22) (dummy-48 (-> self collide-info)) - (let ((t9-2 nav-enemy-fall-and-play-death-anim) - (a0-4 (-> self draw art-group data (-> self nav-info die-anim))) - (a1-1 1.0) - (a2-0 1.0) - ) + (nav-enemy-fall-and-play-death-anim + (the-as + art-joint-anim + (-> self draw art-group data (-> self nav-info die-anim)) + ) + 1.0 + 1.0 1000000000000000.0 600 - (t9-2 (the-as art-joint-anim a0-4) (the-as int a1-1) a2-0) ) (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) @@ -3379,10 +3329,7 @@ nav-enemy-default-event-handler ;; Used lq/sq (defbehavior nav-enemy-jump-land-post nav-enemy () (TODO-RENAME-9 (-> self align)) - (let ((t9-1 (method-of-object (-> self nav) dummy-11))) - (-> self nav target-pos) - (t9-1) - ) + (dummy-11 (-> self nav) (-> self nav target-pos)) (set! (-> self target-speed) (seek (-> self target-speed) (-> self nav-info run-travel-speed) 2048.0) @@ -3424,20 +3371,18 @@ nav-enemy-default-event-handler (the-as int (-> self turn-time)) ) ) - (let ((gp-0 vector-v++!) - (s5-0 (-> self collide-info transv)) - (t9-7 (method-of-object (-> self collide-info) dummy-62)) - ) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - 0.0 - (gp-0 s5-0 (the-as vector (t9-7))) + (vector-v++! + (-> self collide-info transv) + (dummy-62 (-> self collide-info) (new-stack-vector0) 0.0) ) - (let ((t9-9 (method-of-object (-> self collide-info) dummy-59))) + (dummy-59 + (-> self collide-info) (-> self collide-info transv) (-> self nav-info gnd-collide-with) 8192.0 + #f (-> self nav-info hover-if-no-ground) - (t9-9) + #f ) (nav-enemy-common-post) (none) @@ -3817,7 +3762,7 @@ nav-enemy-default-event-handler (nav-control-flags display-marks bit0 bit3 bit5 bit6 bit7) ) (set! (-> obj nav gap-event) 'jump) - ((method-of-object (-> obj nav) dummy-26)) + (dummy-26 (-> obj nav)) (set! (-> obj path) (new 'process 'path-control obj 'path 0.0)) (logior! (-> obj path flags) @@ -3946,10 +3891,7 @@ nav-enemy-default-event-handler (set! (-> s4-0 quad) (-> obj collide-info trans quad)) (set! (-> obj collide-info trans quad) (-> arg0 quad)) (let ((gp-0 (-> obj nav))) - (let ((t9-0 (method-of-object gp-0 dummy-28))) - -1 - (t9-0) - ) + (dummy-28 gp-0 -1) (set! (-> obj collide-info trans quad) (-> s4-0 quad)) (let* ((v1-8 (-> gp-0 mesh origin)) (f0-1 (- (-> arg0 x) (-> v1-8 x))) From 959638d5b68ec458e596ca306bd2bd81e155f34a Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 14 Aug 2021 17:06:10 +0000 Subject: [PATCH 12/12] Updated github pages site --- docs/gh-pages-proj/src/config/progress.json | 4 ++-- docs/index.html | 2 +- docs/js/{about.a4656f69.js => about.aa90f682.js} | 4 ++-- docs/js/{about.a4656f69.js.map => about.aa90f682.js.map} | 2 +- docs/js/{app.99fa3a4f.js => app.1f599053.js} | 4 ++-- docs/js/{app.99fa3a4f.js.map => app.1f599053.js.map} | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) rename docs/js/{about.a4656f69.js => about.aa90f682.js} (99%) rename docs/js/{about.a4656f69.js.map => about.aa90f682.js.map} (99%) rename docs/js/{app.99fa3a4f.js => app.1f599053.js} (97%) rename docs/js/{app.99fa3a4f.js.map => app.1f599053.js.map} (98%) diff --git a/docs/gh-pages-proj/src/config/progress.json b/docs/gh-pages-proj/src/config/progress.json index b65a4aaa13..6d50905163 100644 --- a/docs/gh-pages-proj/src/config/progress.json +++ b/docs/gh-pages-proj/src/config/progress.json @@ -2,8 +2,8 @@ "jak1": { "fileProgress": { "src_files_total": 514, - "src_files_finished": 73, - "src_files_started": 176, + "src_files_finished": 77, + "src_files_started": 174, "data_files_total": 584, "data_files_started": 4 } diff --git a/docs/index.html b/docs/index.html index f5b640eb59..a1e6c6a53f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -OpenGOAL Tooling
\ No newline at end of file +OpenGOAL Tooling
\ No newline at end of file diff --git a/docs/js/about.a4656f69.js b/docs/js/about.aa90f682.js similarity index 99% rename from docs/js/about.a4656f69.js rename to docs/js/about.aa90f682.js index b093113b0f..8838dd74d6 100644 --- a/docs/js/about.a4656f69.js +++ b/docs/js/about.aa90f682.js @@ -1,2 +1,2 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{"0481":function(t,e,i){"use strict";var n=i("23e7"),r=i("a2bf"),a=i("7b0b"),s=i("50c4"),o=i("a691"),c=i("65f0");n({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=a(this),i=s(e.length),n=c(e,0);return n.length=r(n,e,e,i,0,void 0===t?1:o(t)),n}})},"0bc6":function(t,e,i){},"20f6":function(t,e,i){},"25a8":function(t,e,i){},"36a7":function(t,e,i){},4804:function(t,e,i){},"4b85":function(t,e,i){},"4ec9":function(t,e,i){"use strict";var n=i("6d61"),r=i("6566");t.exports=n("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),r)},"615b":function(t,e,i){},6566:function(t,e,i){"use strict";var n=i("9bf2").f,r=i("7c73"),a=i("e2cc"),s=i("0366"),o=i("19aa"),c=i("2266"),l=i("7dd0"),u=i("2626"),h=i("83ab"),d=i("f183").fastKey,f=i("69f3"),p=f.set,v=f.getterFor;t.exports={getConstructor:function(t,e,i,l){var u=t((function(t,n){o(t,u,e),p(t,{type:e,index:r(null),first:void 0,last:void 0,size:0}),h||(t.size=0),void 0!=n&&c(n,t[l],{that:t,AS_ENTRIES:i})})),f=v(e),g=function(t,e,i){var n,r,a=f(t),s=m(t,e);return s?s.value=i:(a.last=s={index:r=d(e,!0),key:e,value:i,previous:n=a.last,next:void 0,removed:!1},a.first||(a.first=s),n&&(n.next=s),h?a.size++:t.size++,"F"!==r&&(a.index[r]=s)),t},m=function(t,e){var i,n=f(t),r=d(e);if("F"!==r)return n.index[r];for(i=n.first;i;i=i.next)if(i.key==e)return i};return a(u.prototype,{clear:function(){var t=this,e=f(t),i=e.index,n=e.first;while(n)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete i[n.index],n=n.next;e.first=e.last=void 0,h?e.size=0:t.size=0},delete:function(t){var e=this,i=f(e),n=m(e,t);if(n){var r=n.next,a=n.previous;delete i.index[n.index],n.removed=!0,a&&(a.next=r),r&&(r.previous=a),i.first==n&&(i.first=r),i.last==n&&(i.last=a),h?i.size--:e.size--}return!!n},forEach:function(t){var e,i=f(this),n=s(t,arguments.length>1?arguments[1]:void 0,3);while(e=e?e.next:i.first){n(e.value,e.key,this);while(e&&e.removed)e=e.previous}},has:function(t){return!!m(this,t)}}),a(u.prototype,i?{get:function(t){var e=m(this,t);return e&&e.value},set:function(t,e){return g(this,0===t?0:t,e)}}:{add:function(t){return g(this,t=0===t?0:t,t)}}),h&&n(u.prototype,"size",{get:function(){return f(this).size}}),u},setStrong:function(t,e,i){var n=e+" Iterator",r=v(e),a=v(n);l(t,e,(function(t,e){p(this,{type:n,target:t,state:r(t),kind:e,last:void 0})}),(function(){var t=a(this),e=t.kind,i=t.last;while(i&&i.removed)i=i.previous;return t.target&&(t.last=i=i?i.next:t.state.first)?"keys"==e?{value:i.key,done:!1}:"values"==e?{value:i.value,done:!1}:{value:[i.key,i.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),i?"entries":"values",!i,!0),u(e)}}},"6d61":function(t,e,i){"use strict";var n=i("23e7"),r=i("da84"),a=i("94ca"),s=i("6eeb"),o=i("f183"),c=i("2266"),l=i("19aa"),u=i("861d"),h=i("d039"),d=i("1c7e"),f=i("d44e"),p=i("7156");t.exports=function(t,e,i){var v=-1!==t.indexOf("Map"),g=-1!==t.indexOf("Weak"),m=v?"set":"add",b=r[t],y=b&&b.prototype,_=b,S={},x=function(t){var e=y[t];s(y,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(g&&!u(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!u(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(g&&!u(t))&&e.call(this,0===t?0:t)}:function(t,i){return e.call(this,0===t?0:t,i),this})},w=a(t,"function"!=typeof b||!(g||y.forEach&&!h((function(){(new b).entries().next()}))));if(w)_=i.getConstructor(e,t,v,m),o.enable();else if(a(t,!0)){var j=new _,O=j[m](g?{}:-0,1)!=j,k=h((function(){j.has(1)})),C=d((function(t){new b(t)})),L=!g&&h((function(){var t=new b,e=5;while(e--)t[m](e,e);return!t.has(-0)}));C||(_=e((function(e,i){l(e,_,t);var n=p(new b,e,_);return void 0!=i&&c(i,n[m],{that:n,AS_ENTRIES:v}),n})),_.prototype=y,y.constructor=_),(k||L)&&(x("delete"),x("has"),v&&x("get")),(L||O)&&x(m),g&&y.clear&&delete y.clear}return S[t]=_,n({global:!0,forced:_!=b},S),f(_,t),g||i.setStrong(_,t,v),_}},"6ece":function(t,e,i){},7435:function(t,e,i){},"7a34":function(t,e,i){},"86cc":function(t,e,i){},"87cf":function(t,e,i){t.exports=i.p+"img/logo-text-colored.5cda006b.png"},"8a79":function(t,e,i){"use strict";var n=i("23e7"),r=i("06cf").f,a=i("50c4"),s=i("577e"),o=i("5a34"),c=i("1d80"),l=i("ab13"),u=i("c430"),h="".endsWith,d=Math.min,f=l("endsWith"),p=!u&&!f&&!!function(){var t=r(String.prototype,"endsWith");return t&&!t.writable}();n({target:"String",proto:!0,forced:!p&&!f},{endsWith:function(t){var e=s(c(this));o(t);var i=arguments.length>1?arguments[1]:void 0,n=a(e.length),r=void 0===i?n:d(a(i),n),l=s(t);return h?h.call(e,l,r):e.slice(r-l.length,r)===l}})},"8d4f":function(t,e,i){},"8e4b":function(t,e,i){"use strict";i("7a34")},"8efc":function(t,e,i){},"96cf":function(t,e,i){var n=function(t){"use strict";var e,i=Object.prototype,n=i.hasOwnProperty,r="function"===typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",s=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function c(t,e,i){return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch($){c=function(t,e,i){return t[e]=i}}function l(t,e,i,n){var r=e&&e.prototype instanceof g?e:g,a=Object.create(r.prototype),s=new B(n||[]);return a._invoke=O(t,i,s),a}function u(t,e,i){try{return{type:"normal",arg:t.call(e,i)}}catch($){return{type:"throw",arg:$}}}t.wrap=l;var h="suspendedStart",d="suspendedYield",f="executing",p="completed",v={};function g(){}function m(){}function b(){}var y={};c(y,a,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(E([])));S&&S!==i&&n.call(S,a)&&(y=S);var x=b.prototype=g.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function j(t,e){function i(r,a,s,o){var c=u(t[r],t,a);if("throw"!==c.type){var l=c.arg,h=l.value;return h&&"object"===typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,s,o)}),(function(t){i("throw",t,s,o)})):e.resolve(h).then((function(t){l.value=t,s(l)}),(function(t){return i("throw",t,s,o)}))}o(c.arg)}var r;function a(t,n){function a(){return new e((function(e,r){i(t,n,e,r)}))}return r=r?r.then(a,a):a()}this._invoke=a}function O(t,e,i){var n=h;return function(r,a){if(n===f)throw new Error("Generator is already running");if(n===p){if("throw"===r)throw a;return z()}i.method=r,i.arg=a;while(1){var s=i.delegate;if(s){var o=k(s,i);if(o){if(o===v)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(n===h)throw n=p,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);n=f;var c=u(t,e,i);if("normal"===c.type){if(n=i.done?p:d,c.arg===v)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(n=p,i.method="throw",i.arg=c.arg)}}}function k(t,i){var n=t.iterator[i.method];if(n===e){if(i.delegate=null,"throw"===i.method){if(t.iterator["return"]&&(i.method="return",i.arg=e,k(t,i),"throw"===i.method))return v;i.method="throw",i.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var r=u(n,t.iterator,i.arg);if("throw"===r.type)return i.method="throw",i.arg=r.arg,i.delegate=null,v;var a=r.arg;return a?a.done?(i[t.resultName]=a.value,i.next=t.nextLoc,"return"!==i.method&&(i.method="next",i.arg=e),i.delegate=null,v):a:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,v)}function C(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function B(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function E(t){if(t){var i=t[a];if(i)return i.call(t);if("function"===typeof t.next)return t;if(!isNaN(t.length)){var r=-1,s=function i(){while(++r=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var c=n.call(s,"catchLoc"),l=n.call(s,"finallyLoc");if(c&&l){if(this.prev=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--e){var i=this.tryEntries[e];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),L(i),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var i=this.tryEntries[e];if(i.tryLoc===t){var n=i.completion;if("throw"===n.type){var r=n.arg;L(i)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,i,n){return this.delegate={iterator:E(t),resultName:i,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=n}catch(r){"object"===typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},9911:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("link")},{link:function(t){return r(this,"a","href",t)}})},a2bf:function(t,e,i){"use strict";var n=i("e8b5"),r=i("50c4"),a=i("0366"),s=function(t,e,i,o,c,l,u,h){var d,f=c,p=0,v=!!u&&a(u,h,3);while(p0&&n(d))f=s(t,e,d,r(d.length),f,l-1)-1;else{if(f>=9007199254740991)throw TypeError("Exceed the acceptable array length");t[f]=d}f++}p++}return f};t.exports=s},bb51:function(t,e,i){"use strict";i.r(e);var n=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-container",{attrs:{fluid:""}},[n("v-row",{staticClass:"bg-img",attrs:{justify:"center",align:"center"}},[n("v-col",{attrs:{cols:"12",align:"center"}},[n("v-img",{attrs:{"max-height":"150","max-width":"250",src:i("87cf")}}),n("br"),n("h4",[t._v(" Reviving the Language that Brought us the Jak & Daxter Series ")]),n("br"),n("v-row",{attrs:{justify:"center"}},[n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"#project-status",rounded:"",color:"primary"}},[n("v-icon",[t._v("mdi-calendar-check")]),t._v(" Project Status ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{rounded:"",color:"secondary",href:"#recent-updates"}},[n("v-icon",[t._v("mdi-update")]),t._v(" Recent Updates ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"/jak-project/api-docs.html",target:"_blank",rounded:"",color:"deep-purple"}},[n("v-icon",[t._v("mdi-file-document")]),t._v(" Documentation ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"https://github.com/water111/jak-project",target:"_blank",rounded:"",color:"accent"}},[n("v-icon",[t._v("mdi-git")]),t._v(" Contribute ")],1)],1)],1)],1)],1),n("v-row",[n("v-container",[n("v-row",{staticStyle:{"margin-top":"3em"},attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h1",{staticClass:"orange--text text--darken-1",attrs:{id:"project-status"}},[t._v(" Project Status ")])])],1),n("v-row",{attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h2",{staticClass:"orange--text text--lighten-3"},[t._v("Jak 1 - Black Label")])])],1),n("v-row",{attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{cols:"10"}},[n("v-subheader",[t._v("Decompilation")]),n("v-progress-linear",{attrs:{color:"green","buffer-value":"0",value:t.jak1BlackLabelStatus.srcFilesFinishedValue,stream:"",height:"25"}},[t._v(" Source Files Finished - "+t._s(t.jak1BlackLabelStatus.srcFilesFinished)+" / "+t._s(t.jak1BlackLabelStatus.srcFilesTotal)+" ")]),n("br"),n("v-progress-linear",{attrs:{color:"yellow","buffer-value":"0",value:t.jak1BlackLabelStatus.srcFilesStartedValue,stream:"",height:"25"}},[t._v(" Source Files Started - "+t._s(t.jak1BlackLabelStatus.srcFilesStarted)+" / "+t._s(t.jak1BlackLabelStatus.srcFilesTotal)+" ")]),n("br"),n("v-progress-linear",{attrs:{color:"teal","buffer-value":"0",value:t.jak1BlackLabelStatus.dataFilesStartedValue,stream:"",height:"25"}},[t._v(" Data Files Started - "+t._s(t.jak1BlackLabelStatus.dataFilesStarted)+" / "+t._s(t.jak1BlackLabelStatus.dataFilesTotal)+" ")])],1)],1),n("v-row",{staticStyle:{"margin-top":"5em"},attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h1",{staticClass:"orange--text text--darken-1",attrs:{id:"recent-updates"}},[t._v(" Recent Updates ")])])],1),n("v-row",{staticStyle:{"margin-bottom":"10em"},attrs:{justify:"center"}},t._l(t.recentPRs,(function(e,i){return n("v-col",{key:"pr"-i,attrs:{cols:"4"}},[n("v-card",[n("v-card-text",{staticStyle:{"overflow-y":"auto",height:"300px"}},[n("p",{staticClass:"text-h5 orange--text text--lighten-3"},[t._v(" "+t._s(e.title)+" ")]),n("p",[t._v(" "+t._s(e.user.login)+" ")]),n("div",{staticClass:"text--primary"},[n("pre",{staticClass:"wrapped-pre"},[t._v(t._s(e.body))])])]),n("v-card-actions",[n("v-btn",{attrs:{text:"",color:"accent",href:e.html_url,target:"_blank"}},[t._v(" View Change ")])],1)],1)],1)})),1)],1)],1)],1)},r=[];i("d3b7");function a(t,e,i,n,r,a,s){try{var o=t[a](s),c=o.value}catch(l){return void i(l)}o.done?e(c):Promise.resolve(c).then(n,r)}function s(t){return function(){var e=this,i=arguments;return new Promise((function(n,r){var s=t.apply(e,i);function o(t){a(s,n,r,o,c,"next",t)}function c(t){a(s,n,r,o,c,"throw",t)}o(void 0)}))}}i("fb6a"),i("96cf");var o=i("f5f2"),c=o,l={name:"Home",components:{},data:function(){return{recentPRs:[],jak1BlackLabelStatus:{srcFilesTotal:c.jak1.fileProgress.src_files_total,srcFilesFinished:c.jak1.fileProgress.src_files_finished,srcFilesFinishedValue:c.jak1.fileProgress.src_files_finished/c.jak1.fileProgress.src_files_total*100,srcFilesStarted:c.jak1.fileProgress.src_files_started,srcFilesStartedValue:c.jak1.fileProgress.src_files_started/c.jak1.fileProgress.src_files_total*100,dataFilesTotal:c.jak1.fileProgress.data_files_total,dataFilesStarted:c.jak1.fileProgress.data_files_started,dataFilesStartedValue:c.jak1.fileProgress.data_files_started/c.jak1.fileProgress.data_files_total*100}}},mounted:function(){var t=s(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,this.loadRecentPRs();case 2:case"end":return t.stop()}}),t,this)})));function e(){return t.apply(this,arguments)}return e}(),methods:{truncateString:function(t,e){return t.length<=e?t:t.slice(0,e)+"..."},loadRecentPRs:function(){var t=s(regeneratorRuntime.mark((function t(){var e,i,n,r,a;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,fetch("https://api.github.com/search/issues?q=repo:water111/jak-project+is:pr+is:merged&sort=updated");case 2:return e=t.sent,t.next=5,e.json();case 5:for(i=t.sent,n=9,r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return"string"===typeof e.style?(Object(S["b"])("style must be an object",this),e):"string"===typeof e.class?(Object(S["b"])("class must be an object",this),e):(Object(x["d"])(t)?e.style=Object(g["a"])(Object(g["a"])({},e.style),{},{"background-color":"".concat(t),"border-color":"".concat(t)}):t&&(e.class=Object(g["a"])(Object(g["a"])({},e.class),{},Object(_["a"])({},t,!0))),e)},setTextColor:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("string"===typeof e.style)return Object(S["b"])("style must be an object",this),e;if("string"===typeof e.class)return Object(S["b"])("class must be an object",this),e;if(Object(x["d"])(t))e.style=Object(g["a"])(Object(g["a"])({},e.style),{},{color:"".concat(t),"caret-color":"".concat(t)});else if(t){var i=t.toString().trim().split(" ",2),n=Object(v["a"])(i,2),r=n[0],a=n[1];e.class=Object(g["a"])(Object(g["a"])({},e.class),{},Object(_["a"])({},r+"--text",!0)),a&&(e.class["text--"+a]=!0)}return e}}}),j=m["a"].extend({name:"elevatable",props:{elevation:[Number,String]},computed:{computedElevation:function(){return this.elevation},elevationClasses:function(){var t=this.computedElevation;return null==t||isNaN(parseInt(t))?{}:Object(_["a"])({},"elevation-".concat(this.elevation),!0)}}}),O=i("80d2"),k=m["a"].extend({name:"measurable",props:{height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},computed:{measurableStyles:function(){var t={},e=Object(O["d"])(this.height),i=Object(O["d"])(this.minHeight),n=Object(O["d"])(this.minWidth),r=Object(O["d"])(this.maxHeight),a=Object(O["d"])(this.maxWidth),s=Object(O["d"])(this.width);return e&&(t.height=e),i&&(t.minHeight=i),n&&(t.minWidth=n),r&&(t.maxHeight=r),a&&(t.maxWidth=a),s&&(t.width=s),t}}}),C=(i("a4d3"),i("e01a"),i("d28b"),i("3ca3"),i("ddb0"),i("06c5"));function L(t,e){var i="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=Object(C["a"])(t))||e&&t&&"number"===typeof t.length){i&&(t=i);var n=0,r=function(){};return{s:r,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==i["return"]||i["return"]()}finally{if(o)throw a}}}}i("a15b");var B=m["a"].extend({name:"roundable",props:{rounded:[Boolean,String],tile:Boolean},computed:{roundedClasses:function(){var t=[],e="string"===typeof this.rounded?String(this.rounded):!0===this.rounded;if(this.tile)t.push("rounded-0");else if("string"===typeof e){var i,n=e.split(" "),r=L(n);try{for(r.s();!(i=r.n()).done;){var a=i.value;t.push("rounded-".concat(a))}}catch(s){r.e(s)}finally{r.f()}}else e&&t.push("rounded");return t.length>0?Object(_["a"])({},t.join(" "),!0):{}}}}),E=i("7560"),z=i("58df"),$=Object(z["a"])(y,w,j,k,B,E["a"]).extend({name:"v-sheet",props:{outlined:Boolean,shaped:Boolean,tag:{type:String,default:"div"}},computed:{classes:function(){return Object(g["a"])(Object(g["a"])(Object(g["a"])({"v-sheet":!0,"v-sheet--outlined":this.outlined,"v-sheet--shaped":this.shaped},this.themeClasses),this.elevationClasses),this.roundedClasses)},styles:function(){return this.measurableStyles}},render:function(t){var e={class:this.classes,style:this.styles,on:this.listeners$};return t(this.tag,this.setBackgroundColor(this.color,e),this.$slots.default)}}),T=$;i("99af"),i("8d4f");function P(t,e){if("undefined"!==typeof window&&"IntersectionObserver"in window){var i=e.modifiers||{},n=e.value,r="object"===Object(p["a"])(n)?n:{handler:n,options:{}},a=r.handler,s=r.options,o=new IntersectionObserver((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0;if(t._observe){var r=e.some((function(t){return t.isIntersecting}));!a||i.quiet&&!t._observe.init||i.once&&!r&&t._observe.init||a(e,n,r),r&&i.once?N(t):t._observe.init=!0}}),s);t._observe={init:!1,observer:o},o.observe(t)}}function N(t){t._observe&&(t._observe.observer.unobserve(t),delete t._observe)}var R={inserted:P,unbind:N},F=R,V=w.extend({name:"v-progress-circular",directives:{intersect:F},props:{button:Boolean,indeterminate:Boolean,rotate:{type:[Number,String],default:0},size:{type:[Number,String],default:32},width:{type:[Number,String],default:4},value:{type:[Number,String],default:0}},data:function(){return{radius:20,isVisible:!0}},computed:{calculatedSize:function(){return Number(this.size)+(this.button?8:0)},circumference:function(){return 2*Math.PI*this.radius},classes:function(){return{"v-progress-circular--visible":this.isVisible,"v-progress-circular--indeterminate":this.indeterminate,"v-progress-circular--button":this.button}},normalizedValue:function(){return this.value<0?0:this.value>100?100:parseFloat(this.value)},strokeDashArray:function(){return Math.round(1e3*this.circumference)/1e3},strokeDashOffset:function(){return(100-this.normalizedValue)/100*this.circumference+"px"},strokeWidth:function(){return Number(this.width)/+this.size*this.viewBoxSize*2},styles:function(){return{height:Object(O["d"])(this.calculatedSize),width:Object(O["d"])(this.calculatedSize)}},svgStyles:function(){return{transform:"rotate(".concat(Number(this.rotate),"deg)")}},viewBoxSize:function(){return this.radius/(1-Number(this.width)/+this.size)}},methods:{genCircle:function(t,e){return this.$createElement("circle",{class:"v-progress-circular__".concat(t),attrs:{fill:"transparent",cx:2*this.viewBoxSize,cy:2*this.viewBoxSize,r:this.radius,"stroke-width":this.strokeWidth,"stroke-dasharray":this.strokeDashArray,"stroke-dashoffset":e}})},genSvg:function(){var t=[this.indeterminate||this.genCircle("underlay",0),this.genCircle("overlay",this.strokeDashOffset)];return this.$createElement("svg",{style:this.svgStyles,attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"".concat(this.viewBoxSize," ").concat(this.viewBoxSize," ").concat(2*this.viewBoxSize," ").concat(2*this.viewBoxSize)}},t)},genInfo:function(){return this.$createElement("div",{staticClass:"v-progress-circular__info"},this.$slots.default)},onObserve:function(t,e,i){this.isVisible=i}},render:function(t){return t("div",this.setTextColor(this.color,{staticClass:"v-progress-circular",attrs:{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":this.indeterminate?void 0:this.normalizedValue},class:this.classes,directives:[{name:"intersect",value:this.onObserve}],style:this.styles,on:this.$listeners}),[this.genSvg(),this.genInfo()])}}),I=V;function A(t,e){return function(){return Object(S["c"])("The ".concat(t," component must be used inside a ").concat(e))}}function W(t,e,i){var n=e&&i?{register:A(e,i),unregister:A(e,i)}:null;return m["a"].extend({name:"registrable-inject",inject:Object(_["a"])({},t,{default:n})})}function D(t,e,i){return W(t,e,i).extend({name:"groupable",props:{activeClass:{type:String,default:function(){if(this[t])return this[t].activeClass}},disabled:Boolean},data:function(){return{isActive:!1}},computed:{groupClasses:function(){return this.activeClass?Object(_["a"])({},this.activeClass,this.isActive):{}}},created:function(){this[t]&&this[t].register(this)},beforeDestroy:function(){this[t]&&this[t].unregister(this)},methods:{toggle:function(){this.$emit("change")}}})}D("itemGroup");function H(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"value",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"input";return m["a"].extend({name:"toggleable",model:{prop:e,event:i},props:Object(_["a"])({},e,{required:!1}),data:function(){return{isActive:!!this[e]}},watch:(t={},Object(_["a"])(t,e,(function(t){this.isActive=!!t})),Object(_["a"])(t,"isActive",(function(t){!!t!==this[e]&&this.$emit(i,t)})),t)})}H();var M={absolute:Boolean,bottom:Boolean,fixed:Boolean,left:Boolean,right:Boolean,top:Boolean};function q(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return m["a"].extend({name:"positionable",props:t.length?Object(O["f"])(M,t):M})}var G=q(),J=(i("9911"),i("5319"),i("b0c0"),i("7435"),Symbol("rippleStop")),Y=80;function X(t,e){t.style.transform=e,t.style.webkitTransform=e}function K(t,e){t.style.opacity=e.toString()}function U(t){return"TouchEvent"===t.constructor.name}function Q(t){return"KeyboardEvent"===t.constructor.name}var Z=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=0,r=0;if(!Q(t)){var a=e.getBoundingClientRect(),s=U(t)?t.touches[t.touches.length-1]:t;n=s.clientX-a.left,r=s.clientY-a.top}var o=0,c=.3;e._ripple&&e._ripple.circle?(c=.15,o=e.clientWidth/2,o=i.center?o:o+Math.sqrt(Math.pow(n-o,2)+Math.pow(r-o,2))/4):o=Math.sqrt(Math.pow(e.clientWidth,2)+Math.pow(e.clientHeight,2))/2;var l="".concat((e.clientWidth-2*o)/2,"px"),u="".concat((e.clientHeight-2*o)/2,"px"),h=i.center?l:"".concat(n-o,"px"),d=i.center?u:"".concat(r-o,"px");return{radius:o,scale:c,x:h,y:d,centerX:l,centerY:u}},tt={show:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e._ripple&&e._ripple.enabled){var n=document.createElement("span"),r=document.createElement("span");n.appendChild(r),n.className="v-ripple__container",i.class&&(n.className+=" ".concat(i.class));var a=Z(t,e,i),s=a.radius,o=a.scale,c=a.x,l=a.y,u=a.centerX,h=a.centerY,d="".concat(2*s,"px");r.className="v-ripple__animation",r.style.width=d,r.style.height=d,e.appendChild(n);var f=window.getComputedStyle(e);f&&"static"===f.position&&(e.style.position="relative",e.dataset.previousPosition="static"),r.classList.add("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--visible"),X(r,"translate(".concat(c,", ").concat(l,") scale3d(").concat(o,",").concat(o,",").concat(o,")")),K(r,0),r.dataset.activated=String(performance.now()),setTimeout((function(){r.classList.remove("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--in"),X(r,"translate(".concat(u,", ").concat(h,") scale3d(1,1,1)")),K(r,.25)}),0)}},hide:function(t){if(t&&t._ripple&&t._ripple.enabled){var e=t.getElementsByClassName("v-ripple__animation");if(0!==e.length){var i=e[e.length-1];if(!i.dataset.isHiding){i.dataset.isHiding="true";var n=performance.now()-Number(i.dataset.activated),r=Math.max(250-n,0);setTimeout((function(){i.classList.remove("v-ripple__animation--in"),i.classList.add("v-ripple__animation--out"),K(i,0),setTimeout((function(){var e=t.getElementsByClassName("v-ripple__animation");1===e.length&&t.dataset.previousPosition&&(t.style.position=t.dataset.previousPosition,delete t.dataset.previousPosition),i.parentNode&&t.removeChild(i.parentNode)}),300)}),r)}}}}};function et(t){return"undefined"===typeof t||!!t}function it(t){var e={},i=t.currentTarget;if(i&&i._ripple&&!i._ripple.touched&&!t[J]){if(t[J]=!0,U(t))i._ripple.touched=!0,i._ripple.isTouch=!0;else if(i._ripple.isTouch)return;if(e.center=i._ripple.centered||Q(t),i._ripple.class&&(e.class=i._ripple.class),U(t)){if(i._ripple.showTimerCommit)return;i._ripple.showTimerCommit=function(){tt.show(t,i,e)},i._ripple.showTimer=window.setTimeout((function(){i&&i._ripple&&i._ripple.showTimerCommit&&(i._ripple.showTimerCommit(),i._ripple.showTimerCommit=null)}),Y)}else tt.show(t,i,e)}}function nt(t){var e=t.currentTarget;if(e&&e._ripple){if(window.clearTimeout(e._ripple.showTimer),"touchend"===t.type&&e._ripple.showTimerCommit)return e._ripple.showTimerCommit(),e._ripple.showTimerCommit=null,void(e._ripple.showTimer=setTimeout((function(){nt(t)})));window.setTimeout((function(){e._ripple&&(e._ripple.touched=!1)})),tt.hide(e)}}function rt(t){var e=t.currentTarget;e&&e._ripple&&(e._ripple.showTimerCommit&&(e._ripple.showTimerCommit=null),window.clearTimeout(e._ripple.showTimer))}var at=!1;function st(t){at||t.keyCode!==O["j"].enter&&t.keyCode!==O["j"].space||(at=!0,it(t))}function ot(t){at=!1,nt(t)}function ct(t){!0===at&&(at=!1,nt(t))}function lt(t,e,i){var n=et(e.value);n||tt.hide(t),t._ripple=t._ripple||{},t._ripple.enabled=n;var r=e.value||{};r.center&&(t._ripple.centered=!0),r.class&&(t._ripple.class=e.value.class),r.circle&&(t._ripple.circle=r.circle),n&&!i?(t.addEventListener("touchstart",it,{passive:!0}),t.addEventListener("touchend",nt,{passive:!0}),t.addEventListener("touchmove",rt,{passive:!0}),t.addEventListener("touchcancel",nt),t.addEventListener("mousedown",it),t.addEventListener("mouseup",nt),t.addEventListener("mouseleave",nt),t.addEventListener("keydown",st),t.addEventListener("keyup",ot),t.addEventListener("blur",ct),t.addEventListener("dragstart",nt,{passive:!0})):!n&&i&&ut(t)}function ut(t){t.removeEventListener("mousedown",it),t.removeEventListener("touchstart",it),t.removeEventListener("touchend",nt),t.removeEventListener("touchmove",rt),t.removeEventListener("touchcancel",nt),t.removeEventListener("mouseup",nt),t.removeEventListener("mouseleave",nt),t.removeEventListener("keydown",st),t.removeEventListener("keyup",ot),t.removeEventListener("dragstart",nt),t.removeEventListener("blur",ct)}function ht(t,e,i){lt(t,e,!1)}function dt(t){delete t._ripple,ut(t)}function ft(t,e){if(e.value!==e.oldValue){var i=et(e.oldValue);lt(t,e,i)}}var pt={bind:ht,unbind:dt,update:ft},vt=pt,gt=m["a"].extend({name:"routable",directives:{Ripple:vt},props:{activeClass:String,append:Boolean,disabled:Boolean,exact:{type:Boolean,default:void 0},exactPath:Boolean,exactActiveClass:String,link:Boolean,href:[String,Object],to:[String,Object],nuxt:Boolean,replace:Boolean,ripple:{type:[Boolean,Object],default:null},tag:String,target:String},data:function(){return{isActive:!1,proxyClass:""}},computed:{classes:function(){var t={};return this.to||(this.activeClass&&(t[this.activeClass]=this.isActive),this.proxyClass&&(t[this.proxyClass]=this.isActive)),t},computedRipple:function(){var t;return null!=(t=this.ripple)?t:!this.disabled&&this.isClickable},isClickable:function(){return!this.disabled&&Boolean(this.isLink||this.$listeners.click||this.$listeners["!click"]||this.$attrs.tabindex)},isLink:function(){return this.to||this.href||this.link},styles:function(){return{}}},watch:{$route:"onRouteChange"},methods:{click:function(t){this.$emit("click",t)},generateRouteLink:function(){var t,e,i=this.exact,n=(t={attrs:{tabindex:"tabindex"in this.$attrs?this.$attrs.tabindex:void 0},class:this.classes,style:this.styles,props:{},directives:[{name:"ripple",value:this.computedRipple}]},Object(_["a"])(t,this.to?"nativeOn":"on",Object(g["a"])(Object(g["a"])({},this.$listeners),{},{click:this.click})),Object(_["a"])(t,"ref","link"),t);if("undefined"===typeof this.exact&&(i="/"===this.to||this.to===Object(this.to)&&"/"===this.to.path),this.to){var r=this.activeClass,a=this.exactActiveClass||r;this.proxyClass&&(r="".concat(r," ").concat(this.proxyClass).trim(),a="".concat(a," ").concat(this.proxyClass).trim()),e=this.nuxt?"nuxt-link":"router-link",Object.assign(n.props,{to:this.to,exact:i,exactPath:this.exactPath,activeClass:r,exactActiveClass:a,append:this.append,replace:this.replace})}else e=(this.href?"a":this.tag)||"div","a"===e&&this.href&&(n.attrs.href=this.href);return this.target&&(n.attrs.target=this.target),{tag:e,data:n}},onRouteChange:function(){var t=this;if(this.to&&this.$refs.link&&this.$route){var e="".concat(this.activeClass," ").concat(this.proxyClass||"").trim(),i="_vnode.data.class.".concat(e);this.$nextTick((function(){Object(O["h"])(t.$refs.link,i)&&t.toggle()}))}},toggle:function(){}}}),mt=(i("c96a"),m["a"].extend({name:"sizeable",props:{large:Boolean,small:Boolean,xLarge:Boolean,xSmall:Boolean},computed:{medium:function(){return Boolean(!this.xSmall&&!this.small&&!this.large&&!this.xLarge)},sizeableClasses:function(){return{"v-size--x-small":this.xSmall,"v-size--small":this.small,"v-size--default":this.medium,"v-size--large":this.large,"v-size--x-large":this.xLarge}}}})),bt=Object(z["a"])(T,gt,G,mt,D("btnToggle"),H("inputValue")),yt=bt.extend().extend({name:"v-btn",props:{activeClass:{type:String,default:function(){return this.btnToggle?this.btnToggle.activeClass:""}},block:Boolean,depressed:Boolean,fab:Boolean,icon:Boolean,loading:Boolean,outlined:Boolean,plain:Boolean,retainFocusOnClick:Boolean,rounded:Boolean,tag:{type:String,default:"button"},text:Boolean,tile:Boolean,type:{type:String,default:"button"},value:null},data:function(){return{proxyClass:"v-btn--active"}},computed:{classes:function(){return Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])({"v-btn":!0},gt.options.computed.classes.call(this)),{},{"v-btn--absolute":this.absolute,"v-btn--block":this.block,"v-btn--bottom":this.bottom,"v-btn--disabled":this.disabled,"v-btn--is-elevated":this.isElevated,"v-btn--fab":this.fab,"v-btn--fixed":this.fixed,"v-btn--has-bg":this.hasBg,"v-btn--icon":this.icon,"v-btn--left":this.left,"v-btn--loading":this.loading,"v-btn--outlined":this.outlined,"v-btn--plain":this.plain,"v-btn--right":this.right,"v-btn--round":this.isRound,"v-btn--rounded":this.rounded,"v-btn--router":this.to,"v-btn--text":this.text,"v-btn--tile":this.tile,"v-btn--top":this.top},this.themeClasses),this.groupClasses),this.elevationClasses),this.sizeableClasses)},computedElevation:function(){if(!this.disabled)return j.options.computed.computedElevation.call(this)},computedRipple:function(){var t,e=!this.icon&&!this.fab||{circle:!0};return!this.disabled&&(null!=(t=this.ripple)?t:e)},hasBg:function(){return!this.text&&!this.plain&&!this.outlined&&!this.icon},isElevated:function(){return Boolean(!this.icon&&!this.text&&!this.outlined&&!this.depressed&&!this.disabled&&!this.plain&&(null==this.elevation||Number(this.elevation)>0))},isRound:function(){return Boolean(this.icon||this.fab)},styles:function(){return Object(g["a"])({},this.measurableStyles)}},created:function(){var t=this,e=[["flat","text"],["outline","outlined"],["round","rounded"]];e.forEach((function(e){var i=Object(v["a"])(e,2),n=i[0],r=i[1];t.$attrs.hasOwnProperty(n)&&Object(S["a"])(n,r,t)}))},methods:{click:function(t){!this.retainFocusOnClick&&!this.fab&&t.detail&&this.$el.blur(),this.$emit("click",t),this.btnToggle&&this.toggle()},genContent:function(){return this.$createElement("span",{staticClass:"v-btn__content"},this.$slots.default)},genLoader:function(){return this.$createElement("span",{class:"v-btn__loader"},this.$slots.loader||[this.$createElement(I,{props:{indeterminate:!0,size:23,width:2}})])}},render:function(t){var e=[this.genContent(),this.loading&&this.genLoader()],i=this.generateRouteLink(),n=i.tag,r=i.data,a=this.hasBg?this.setBackgroundColor:this.setTextColor;return"button"===n&&(r.attrs.type=this.type,r.attrs.disabled=this.disabled),r.attrs.value=["string","number"].includes(Object(p["a"])(this.value))?this.value:JSON.stringify(this.value),t(n,this.disabled?r:a(this.color,r),e)}}),_t=(i("0481"),i("615b"),i("6ece"),i("b64b"),{styleList:/;(?![^(]*\))/g,styleProp:/:(.*)/});function St(t){var e,i={},n=L(t.split(_t.styleList));try{for(n.s();!(e=n.n()).done;){var r=e.value,a=r.split(_t.styleProp),s=Object(v["a"])(a,2),o=s[0],c=s[1];o=o.trim(),o&&("string"===typeof c&&(c=c.trim()),i[Object(O["a"])(o)]=c)}}catch(l){n.e(l)}finally{n.f()}return i}function xt(){var t,e={},i=arguments.length;while(i--)for(var n=0,r=Object.keys(arguments[i]);n0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length,n=new Array(i>1?i-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:"top center 0",i=arguments.length>2?arguments[2]:void 0;return{name:t,functional:!0,props:{group:{type:Boolean,default:!1},hideOnLeave:{type:Boolean,default:!1},leaveAbsolute:{type:Boolean,default:!1},mode:{type:String,default:i},origin:{type:String,default:e}},render:function(e,i){var n="transition".concat(i.props.group?"-group":""),r={props:{name:t,mode:i.props.mode},on:{beforeEnter:function(t){t.style.transformOrigin=i.props.origin,t.style.webkitTransformOrigin=i.props.origin}}};return i.props.leaveAbsolute&&(r.on.leave=kt(r.on.leave,(function(t){var e=t.offsetTop,i=t.offsetLeft,n=t.offsetWidth,r=t.offsetHeight;t._transitionInitialStyles={position:t.style.position,top:t.style.top,left:t.style.left,width:t.style.width,height:t.style.height},t.style.position="absolute",t.style.top=e+"px",t.style.left=i+"px",t.style.width=n+"px",t.style.height=r+"px"})),r.on.afterLeave=kt(r.on.afterLeave,(function(t){if(t&&t._transitionInitialStyles){var e=t._transitionInitialStyles,i=e.position,n=e.top,r=e.left,a=e.width,s=e.height;delete t._transitionInitialStyles,t.style.position=i||"",t.style.top=n||"",t.style.left=r||"",t.style.width=a||"",t.style.height=s||""}}))),i.props.hideOnLeave&&(r.on.leave=kt(r.on.leave,(function(t){t._initialDisplay=t.style.display,t.style.display="none"})),r.on.afterLeave=kt(r.on.afterLeave,(function(t){t&&(t.style.display=t._initialDisplay||"")}))),e(n,xt(i.data,r),i.children)}}}function Lt(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"in-out";return{name:t,functional:!0,props:{mode:{type:String,default:i}},render:function(i,n){return i("transition",xt(n.data,{props:{name:t},on:e}),n.children)}}}var Bt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=e?"width":"height",n="offset".concat(Object(O["o"])(i));return{beforeEnter:function(t){t._parent=t.parentNode,t._initialStyle=Object(_["a"])({transition:t.style.transition,overflow:t.style.overflow},i,t.style[i])},enter:function(e){var r=e._initialStyle;e.style.setProperty("transition","none","important"),e.style.overflow="hidden";var a="".concat(e[n],"px");e.style[i]="0",e.offsetHeight,e.style.transition=r.transition,t&&e._parent&&e._parent.classList.add(t),requestAnimationFrame((function(){e.style[i]=a}))},afterEnter:a,enterCancelled:a,leave:function(t){t._initialStyle=Object(_["a"])({transition:"",overflow:t.style.overflow},i,t.style[i]),t.style.overflow="hidden",t.style[i]="".concat(t[n],"px"),t.offsetHeight,requestAnimationFrame((function(){return t.style[i]="0"}))},afterLeave:r,leaveCancelled:r};function r(e){t&&e._parent&&e._parent.classList.remove(t),a(e)}function a(t){var e=t._initialStyle[i];t.style.overflow=t._initialStyle.overflow,null!=e&&(t.style[i]=e),delete t._initialStyle}},Et=(Ct("carousel-transition"),Ct("carousel-reverse-transition"),Ct("tab-transition"),Ct("tab-reverse-transition"),Ct("menu-transition"),Ct("fab-transition","center center","out-in"),Ct("dialog-transition"),Ct("dialog-bottom-transition"),Ct("dialog-top-transition"),Ct("fade-transition")),zt=(Ct("scale-transition"),Ct("scroll-x-transition"),Ct("scroll-x-reverse-transition"),Ct("scroll-y-transition"),Ct("scroll-y-reverse-transition"),Ct("slide-x-transition"));Ct("slide-x-reverse-transition"),Ct("slide-y-transition"),Ct("slide-y-reverse-transition"),Lt("expand-transition",Bt()),Lt("expand-x-transition",Bt("",!0));function $t(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"value",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"change";return m["a"].extend({name:"proxyable",model:{prop:t,event:e},props:Object(_["a"])({},t,{required:!1}),data:function(){return{internalLazyValue:this[t]}},computed:{internalValue:{get:function(){return this.internalLazyValue},set:function(t){t!==this.internalLazyValue&&(this.internalLazyValue=t,this.$emit(e,t))}}},watch:Object(_["a"])({},t,(function(t){this.internalLazyValue=t}))})}var Tt=$t(),Pt=Tt,Nt=Object(z["a"])(w,q(["absolute","fixed","top","bottom"]),Pt,E["a"]),Rt=Nt.extend({name:"v-progress-linear",directives:{intersect:F},props:{active:{type:Boolean,default:!0},backgroundColor:{type:String,default:null},backgroundOpacity:{type:[Number,String],default:null},bufferValue:{type:[Number,String],default:100},color:{type:String,default:"primary"},height:{type:[Number,String],default:4},indeterminate:Boolean,query:Boolean,reverse:Boolean,rounded:Boolean,stream:Boolean,striped:Boolean,value:{type:[Number,String],default:0}},data:function(){return{internalLazyValue:this.value||0,isVisible:!0}},computed:{__cachedBackground:function(){return this.$createElement("div",this.setBackgroundColor(this.backgroundColor||this.color,{staticClass:"v-progress-linear__background",style:this.backgroundStyle}))},__cachedBar:function(){return this.$createElement(this.computedTransition,[this.__cachedBarType])},__cachedBarType:function(){return this.indeterminate?this.__cachedIndeterminate:this.__cachedDeterminate},__cachedBuffer:function(){return this.$createElement("div",{staticClass:"v-progress-linear__buffer",style:this.styles})},__cachedDeterminate:function(){return this.$createElement("div",this.setBackgroundColor(this.color,{staticClass:"v-progress-linear__determinate",style:{width:Object(O["d"])(this.normalizedValue,"%")}}))},__cachedIndeterminate:function(){return this.$createElement("div",{staticClass:"v-progress-linear__indeterminate",class:{"v-progress-linear__indeterminate--active":this.active}},[this.genProgressBar("long"),this.genProgressBar("short")])},__cachedStream:function(){return this.stream?this.$createElement("div",this.setTextColor(this.color,{staticClass:"v-progress-linear__stream",style:{width:Object(O["d"])(100-this.normalizedBuffer,"%")}})):null},backgroundStyle:function(){var t,e=null==this.backgroundOpacity?this.backgroundColor?1:.3:parseFloat(this.backgroundOpacity);return t={opacity:e},Object(_["a"])(t,this.isReversed?"right":"left",Object(O["d"])(this.normalizedValue,"%")),Object(_["a"])(t,"width",Object(O["d"])(Math.max(0,this.normalizedBuffer-this.normalizedValue),"%")),t},classes:function(){return Object(g["a"])({"v-progress-linear--absolute":this.absolute,"v-progress-linear--fixed":this.fixed,"v-progress-linear--query":this.query,"v-progress-linear--reactive":this.reactive,"v-progress-linear--reverse":this.isReversed,"v-progress-linear--rounded":this.rounded,"v-progress-linear--striped":this.striped,"v-progress-linear--visible":this.isVisible},this.themeClasses)},computedTransition:function(){return this.indeterminate?Et:zt},isReversed:function(){return this.$vuetify.rtl!==this.reverse},normalizedBuffer:function(){return this.normalize(this.bufferValue)},normalizedValue:function(){return this.normalize(this.internalLazyValue)},reactive:function(){return Boolean(this.$listeners.change)},styles:function(){var t={};return this.active||(t.height=0),this.indeterminate||100===parseFloat(this.normalizedBuffer)||(t.width=Object(O["d"])(this.normalizedBuffer,"%")),t}},methods:{genContent:function(){var t=Object(O["i"])(this,"default",{value:this.internalLazyValue});return t?this.$createElement("div",{staticClass:"v-progress-linear__content"},t):null},genListeners:function(){var t=this.$listeners;return this.reactive&&(t.click=this.onClick),t},genProgressBar:function(t){return this.$createElement("div",this.setBackgroundColor(this.color,{staticClass:"v-progress-linear__indeterminate",class:Object(_["a"])({},t,!0)}))},onClick:function(t){if(this.reactive){var e=this.$el.getBoundingClientRect(),i=e.width;this.internalValue=t.offsetX/i*100}},onObserve:function(t,e,i){this.isVisible=i},normalize:function(t){return t<0?0:t>100?100:parseFloat(t)}},render:function(t){var e={staticClass:"v-progress-linear",attrs:{role:"progressbar","aria-valuemin":0,"aria-valuemax":this.normalizedBuffer,"aria-valuenow":this.indeterminate?void 0:this.normalizedValue},class:this.classes,directives:[{name:"intersect",value:this.onObserve}],style:{bottom:this.bottom?0:void 0,height:this.active?Object(O["d"])(this.height):0,top:this.top?0:void 0},on:this.genListeners()};return t("div",e,[this.__cachedStream,this.__cachedBackground,this.__cachedBuffer,this.__cachedBar,this.genContent()])}}),Ft=Rt,Vt=m["a"].extend().extend({name:"loadable",props:{loading:{type:[Boolean,String],default:!1},loaderHeight:{type:[Number,String],default:2}},methods:{genProgress:function(){return!1===this.loading?null:this.$slots.progress||this.$createElement(Ft,{props:{absolute:!0,color:!0===this.loading||""===this.loading?this.color||"primary":this.loading,height:this.loaderHeight,indeterminate:!0}})}}}),It=Object(z["a"])(Vt,gt,T).extend({name:"v-card",props:{flat:Boolean,hover:Boolean,img:String,link:Boolean,loaderHeight:{type:[Number,String],default:4},raised:Boolean},computed:{classes:function(){return Object(g["a"])(Object(g["a"])({"v-card":!0},gt.options.computed.classes.call(this)),{},{"v-card--flat":this.flat,"v-card--hover":this.hover,"v-card--link":this.isClickable,"v-card--loading":this.loading,"v-card--disabled":this.disabled,"v-card--raised":this.raised},T.options.computed.classes.call(this))},styles:function(){var t=Object(g["a"])({},T.options.computed.styles.call(this));return this.img&&(t.background='url("'.concat(this.img,'") center center / cover no-repeat')),t}},methods:{genProgress:function(){var t=Vt.options.methods.genProgress.call(this);return t?this.$createElement("div",{staticClass:"v-card__progress",key:"progress"},[t]):null}},render:function(t){var e=this.generateRouteLink(),i=e.tag,n=e.data;return n.style=this.styles,this.isClickable&&(n.attrs=n.attrs||{},n.attrs.tabindex=0),t(i,this.setBackgroundColor(this.color,n),[this.genProgress(),this.$slots.default])}}),At=Object(O["e"])("v-card__actions"),Wt=(Object(O["e"])("v-card__subtitle"),Object(O["e"])("v-card__text")),Dt=(Object(O["e"])("v-card__title"),i("4ec9"),i("159b"),i("2ca0"),i("4b85"),["sm","md","lg","xl"]),Ht=function(){return Dt.reduce((function(t,e){return t[e]={type:[Boolean,String,Number],default:!1},t}),{})}(),Mt=function(){return Dt.reduce((function(t,e){return t["offset"+Object(O["o"])(e)]={type:[String,Number],default:null},t}),{})}(),qt=function(){return Dt.reduce((function(t,e){return t["order"+Object(O["o"])(e)]={type:[String,Number],default:null},t}),{})}(),Gt={col:Object.keys(Ht),offset:Object.keys(Mt),order:Object.keys(qt)};function Jt(t,e,i){var n=t;if(null!=i&&!1!==i){if(e){var r=e.replace(t,"");n+="-".concat(r)}return"col"!==t||""!==i&&!0!==i?(n+="-".concat(i),n.toLowerCase()):n.toLowerCase()}}var Yt=new Map,Xt=m["a"].extend({name:"v-col",functional:!0,props:Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])({cols:{type:[Boolean,String,Number],default:!1}},Ht),{},{offset:{type:[String,Number],default:null}},Mt),{},{order:{type:[String,Number],default:null}},qt),{},{alignSelf:{type:String,default:null,validator:function(t){return["auto","start","end","center","baseline","stretch"].includes(t)}},tag:{type:String,default:"div"}}),render:function(t,e){var i=e.props,n=e.data,r=e.children,a=(e.parent,"");for(var s in i)a+=String(i[s]);var o=Yt.get(a);return o||function(){var t,e;for(e in o=[],Gt)Gt[e].forEach((function(t){var n=i[t],r=Jt(e,t,n);r&&o.push(r)}));var n=o.some((function(t){return t.startsWith("col-")}));o.push((t={col:!n||!i.cols},Object(_["a"])(t,"col-".concat(i.cols),i.cols),Object(_["a"])(t,"offset-".concat(i.offset),i.offset),Object(_["a"])(t,"order-".concat(i.order),i.order),Object(_["a"])(t,"align-self-".concat(i.alignSelf),i.alignSelf),t)),Yt.set(a,o)}(),t(i.tag,xt(n,{class:o}),r)}});i("4de4"),i("20f6");function Kt(t){return m["a"].extend({name:"v-".concat(t),functional:!0,props:{id:String,tag:{type:String,default:"div"}},render:function(e,i){var n=i.props,r=i.data,a=i.children;r.staticClass="".concat(t," ").concat(r.staticClass||"").trim();var s=r.attrs;if(s){r.attrs={};var o=Object.keys(s).filter((function(t){if("slot"===t)return!1;var e=s[t];return t.startsWith("data-")?(r.attrs[t]=e,!1):e||"string"===typeof e}));o.length&&(r.staticClass+=" ".concat(o.join(" ")))}return n.id&&(r.domProps=r.domProps||{},r.domProps.id=n.id),e(n.tag,r,a)}})}var Ut,Qt=Kt("container").extend({name:"v-container",functional:!0,props:{id:String,tag:{type:String,default:"div"},fluid:{type:Boolean,default:!1}},render:function(t,e){var i,n=e.props,r=e.data,a=e.children,s=r.attrs;return s&&(r.attrs={},i=Object.keys(s).filter((function(t){if("slot"===t)return!1;var e=s[t];return t.startsWith("data-")?(r.attrs[t]=e,!1):e||"string"===typeof e}))),n.id&&(r.domProps=r.domProps||{},r.domProps.id=n.id),t(n.tag,xt(r,{staticClass:"container",class:Array({"container--fluid":n.fluid}).concat(i||[])}),a)}});i("2532"),i("7db0"),i("4804");function Zt(t){return["fas","far","fal","fab","fad","fak"].some((function(e){return t.includes(e)}))}function te(t){return/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4}(function(t){t["xSmall"]="12px",t["small"]="16px",t["default"]="24px",t["medium"]="28px",t["large"]="36px",t["xLarge"]="40px"})(Ut||(Ut={}));var ee=Object(z["a"])(y,w,mt,E["a"]).extend({name:"v-icon",props:{dense:Boolean,disabled:Boolean,left:Boolean,right:Boolean,size:[Number,String],tag:{type:String,required:!1,default:"i"}},computed:{medium:function(){return!1},hasClickListener:function(){return Boolean(this.listeners$.click||this.listeners$["!click"])}},methods:{getIcon:function(){var t="";return this.$slots.default&&(t=this.$slots.default[0].text.trim()),Object(O["n"])(this,t)},getSize:function(){var t={xSmall:this.xSmall,small:this.small,medium:this.medium,large:this.large,xLarge:this.xLarge},e=Object(O["k"])(t).find((function(e){return t[e]}));return e&&Ut[e]||Object(O["d"])(this.size)},getDefaultData:function(){return{staticClass:"v-icon notranslate",class:{"v-icon--disabled":this.disabled,"v-icon--left":this.left,"v-icon--link":this.hasClickListener,"v-icon--right":this.right,"v-icon--dense":this.dense},attrs:Object(g["a"])({"aria-hidden":!this.hasClickListener,disabled:this.hasClickListener&&this.disabled,type:this.hasClickListener?"button":void 0},this.attrs$),on:this.listeners$}},getSvgWrapperData:function(){var t=this.getSize(),e=Object(g["a"])(Object(g["a"])({},this.getDefaultData()),{},{style:t?{fontSize:t,height:t,width:t}:void 0});return this.applyColors(e),e},applyColors:function(t){t.class=Object(g["a"])(Object(g["a"])({},t.class),this.themeClasses),this.setTextColor(this.color,t)},renderFontIcon:function(t,e){var i=[],n=this.getDefaultData(),r="material-icons",a=t.indexOf("-"),s=a<=-1;s?i.push(t):(r=t.slice(0,a),Zt(r)&&(r="")),n.class[r]=!0,n.class[t]=!s;var o=this.getSize();return o&&(n.style={fontSize:o}),this.applyColors(n),e(this.hasClickListener?"button":this.tag,n,i)},renderSvgIcon:function(t,e){var i={class:"v-icon__svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":!0}},n=this.getSize();return n&&(i.style={fontSize:n,height:n,width:n}),e(this.hasClickListener?"button":"span",this.getSvgWrapperData(),[e("svg",i,[e("path",{attrs:{d:t}})])])},renderSvgIconComponent:function(t,e){var i={class:{"v-icon__component":!0}},n=this.getSize();n&&(i.style={fontSize:n,height:n,width:n}),this.applyColors(i);var r=t.component;return i.props=t.props,i.nativeOn=i.on,e(this.hasClickListener?"button":"span",this.getSvgWrapperData(),[e(r,i)])}},render:function(t){var e=this.getIcon();return"string"===typeof e?te(e)?this.renderSvgIcon(e,t):this.renderFontIcon(e,t):this.renderSvgIconComponent(e,t)}}),ie=m["a"].extend({name:"v-icon",$_wrapperFor:ee,functional:!0,render:function(t,e){var i=e.data,n=e.children,r="";return i.domProps&&(r=i.domProps.textContent||i.domProps.innerHTML||r,delete i.domProps.textContent,delete i.domProps.innerHTML),t(ee,i,r?[r]:n)}}),ne=(i("8a79"),i("8efc"),i("36a7"),Object(z["a"])(k).extend({name:"v-responsive",props:{aspectRatio:[String,Number],contentClass:String},computed:{computedAspectRatio:function(){return Number(this.aspectRatio)},aspectStyle:function(){return this.computedAspectRatio?{paddingBottom:1/this.computedAspectRatio*100+"%"}:void 0},__cachedSizer:function(){return this.aspectStyle?this.$createElement("div",{style:this.aspectStyle,staticClass:"v-responsive__sizer"}):[]}},methods:{genContent:function(){return this.$createElement("div",{staticClass:"v-responsive__content",class:this.contentClass},this.$slots.default)}},render:function(t){return t("div",{staticClass:"v-responsive",style:this.measurableStyles,on:this.$listeners},[this.__cachedSizer,this.genContent()])}})),re=ne,ae="undefined"!==typeof window&&"IntersectionObserver"in window,se=Object(z["a"])(re,E["a"]).extend({name:"v-img",directives:{intersect:F},props:{alt:String,contain:Boolean,eager:Boolean,gradient:String,lazySrc:String,options:{type:Object,default:function(){return{root:void 0,rootMargin:void 0,threshold:void 0}}},position:{type:String,default:"center center"},sizes:String,src:{type:[String,Object],default:""},srcset:String,transition:{type:[Boolean,String],default:"fade-transition"}},data:function(){return{currentSrc:"",image:null,isLoading:!0,calculatedAspectRatio:void 0,naturalWidth:void 0,hasError:!1}},computed:{computedAspectRatio:function(){return Number(this.normalisedSrc.aspect||this.calculatedAspectRatio)},normalisedSrc:function(){return this.src&&"object"===Object(p["a"])(this.src)?{src:this.src.src,srcset:this.srcset||this.src.srcset,lazySrc:this.lazySrc||this.src.lazySrc,aspect:Number(this.aspectRatio||this.src.aspect)}:{src:this.src,srcset:this.srcset,lazySrc:this.lazySrc,aspect:Number(this.aspectRatio||0)}},__cachedImage:function(){if(!(this.normalisedSrc.src||this.normalisedSrc.lazySrc||this.gradient))return[];var t=[],e=this.isLoading?this.normalisedSrc.lazySrc:this.currentSrc;this.gradient&&t.push("linear-gradient(".concat(this.gradient,")")),e&&t.push('url("'.concat(e,'")'));var i=this.$createElement("div",{staticClass:"v-image__image",class:{"v-image__image--preload":this.isLoading,"v-image__image--contain":this.contain,"v-image__image--cover":!this.contain},style:{backgroundImage:t.join(", "),backgroundPosition:this.position},key:+this.isLoading});return this.transition?this.$createElement("transition",{attrs:{name:this.transition,mode:"in-out"}},[i]):i}},watch:{src:function(){this.isLoading?this.loadImage():this.init(void 0,void 0,!0)},"$vuetify.breakpoint.width":"getSrc"},mounted:function(){this.init()},methods:{init:function(t,e,i){if(!ae||i||this.eager){if(this.normalisedSrc.lazySrc){var n=new Image;n.src=this.normalisedSrc.lazySrc,this.pollForSize(n,null)}this.normalisedSrc.src&&this.loadImage()}},onLoad:function(){this.getSrc(),this.isLoading=!1,this.$emit("load",this.src),this.image&&(this.normalisedSrc.src.endsWith(".svg")||this.normalisedSrc.src.startsWith("data:image/svg+xml"))&&(this.image.naturalHeight&&this.image.naturalWidth?(this.naturalWidth=this.image.naturalWidth,this.calculatedAspectRatio=this.image.naturalWidth/this.image.naturalHeight):this.calculatedAspectRatio=1)},onError:function(){this.hasError=!0,this.$emit("error",this.src)},getSrc:function(){this.image&&(this.currentSrc=this.image.currentSrc||this.image.src)},loadImage:function(){var t=this,e=new Image;this.image=e,e.onload=function(){e.decode?e.decode().catch((function(e){Object(S["c"])("Failed to decode image, trying to render anyway\n\n"+"src: ".concat(t.normalisedSrc.src)+(e.message?"\nOriginal error: ".concat(e.message):""),t)})).then(t.onLoad):t.onLoad()},e.onerror=this.onError,this.hasError=!1,this.sizes&&(e.sizes=this.sizes),this.normalisedSrc.srcset&&(e.srcset=this.normalisedSrc.srcset),e.src=this.normalisedSrc.src,this.$emit("loadstart",this.normalisedSrc.src),this.aspectRatio||this.pollForSize(e),this.getSrc()},pollForSize:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=function n(){var r=t.naturalHeight,a=t.naturalWidth;r||a?(e.naturalWidth=a,e.calculatedAspectRatio=a/r):t.complete||!e.isLoading||e.hasError||null==i||setTimeout(n,i)};n()},genContent:function(){var t=re.options.methods.genContent.call(this);return this.naturalWidth&&this._b(t.data,"div",{style:{width:"".concat(this.naturalWidth,"px")}}),t},__genPlaceholder:function(){if(this.$slots.placeholder){var t=this.isLoading?[this.$createElement("div",{staticClass:"v-image__placeholder"},this.$slots.placeholder)]:[];return this.transition?this.$createElement("transition",{props:{appear:!0,name:this.transition}},t):t[0]}}},render:function(t){var e=re.options.render.call(this,t),i=xt(e.data,{staticClass:"v-image",attrs:{"aria-label":this.alt,role:this.alt?"img":void 0},class:this.themeClasses,directives:ae?[{name:"intersect",modifiers:{once:!0},value:{handler:this.init,options:this.options}}]:void 0});return e.children=[this.__cachedSizer,this.__cachedImage,this.__genPlaceholder(),this.genContent()],t(e.tag,i,e.children)}}),oe=["sm","md","lg","xl"],ce=["start","end","center"];function le(t,e){return oe.reduce((function(i,n){return i[t+Object(O["o"])(n)]=e(),i}),{})}var ue=function(t){return[].concat(ce,["baseline","stretch"]).includes(t)},he=le("align",(function(){return{type:String,default:null,validator:ue}})),de=function(t){return[].concat(ce,["space-between","space-around"]).includes(t)},fe=le("justify",(function(){return{type:String,default:null,validator:de}})),pe=function(t){return[].concat(ce,["space-between","space-around","stretch"]).includes(t)},ve=le("alignContent",(function(){return{type:String,default:null,validator:pe}})),ge={align:Object.keys(he),justify:Object.keys(fe),alignContent:Object.keys(ve)},me={align:"align",justify:"justify",alignContent:"align-content"};function be(t,e,i){var n=me[t];if(null!=i){if(e){var r=e.replace(t,"");n+="-".concat(r)}return n+="-".concat(i),n.toLowerCase()}}var ye=new Map,_e=m["a"].extend({name:"v-row",functional:!0,props:Object(g["a"])(Object(g["a"])(Object(g["a"])({tag:{type:String,default:"div"},dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:ue}},he),{},{justify:{type:String,default:null,validator:de}},fe),{},{alignContent:{type:String,default:null,validator:pe}},ve),render:function(t,e){var i=e.props,n=e.data,r=e.children,a="";for(var s in i)a+=String(i[s]);var o=ye.get(a);return o||function(){var t,e;for(e in o=[],ge)ge[e].forEach((function(t){var n=i[t],r=be(e,t,n);r&&o.push(r)}));o.push((t={"no-gutters":i.noGutters,"row--dense":i.dense},Object(_["a"])(t,"align-".concat(i.align),i.align),Object(_["a"])(t,"justify-".concat(i.justify),i.justify),Object(_["a"])(t,"align-content-".concat(i.alignContent),i.alignContent),t)),ye.set(a,o)}(),t(i.tag,xt(n,{staticClass:"row",class:o}),r)}}),Se=(i("0bc6"),Object(z["a"])(E["a"]).extend({name:"v-subheader",props:{inset:Boolean},render:function(t){return t("div",{staticClass:"v-subheader",class:Object(g["a"])({"v-subheader--inset":this.inset},this.themeClasses),attrs:this.$attrs,on:this.$listeners},this.$slots.default)}})),xe=Object(h["a"])(u,n,r,!1,null,"6003c7cf",null);e["default"]=xe.exports;f()(xe,{VBtn:yt,VCard:It,VCardActions:At,VCardText:Wt,VCol:Xt,VContainer:Qt,VIcon:ie,VImg:se,VProgressLinear:Rt,VRow:_e,VSubheader:Se})},c7cd:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("fixed")},{fixed:function(){return r(this,"tt","","")}})},c96a:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("small")},{small:function(){return r(this,"small","","")}})},f5f2:function(t){t.exports=JSON.parse('{"jak1":{"fileProgress":{"src_files_total":514,"src_files_finished":73,"src_files_started":176,"data_files_total":584,"data_files_started":4}}}')}}]); -//# sourceMappingURL=about.a4656f69.js.map \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{"0481":function(t,e,i){"use strict";var n=i("23e7"),r=i("a2bf"),a=i("7b0b"),s=i("50c4"),o=i("a691"),c=i("65f0");n({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=a(this),i=s(e.length),n=c(e,0);return n.length=r(n,e,e,i,0,void 0===t?1:o(t)),n}})},"0bc6":function(t,e,i){},"20f6":function(t,e,i){},"25a8":function(t,e,i){},"36a7":function(t,e,i){},4804:function(t,e,i){},"4b85":function(t,e,i){},"4ec9":function(t,e,i){"use strict";var n=i("6d61"),r=i("6566");t.exports=n("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),r)},"615b":function(t,e,i){},6566:function(t,e,i){"use strict";var n=i("9bf2").f,r=i("7c73"),a=i("e2cc"),s=i("0366"),o=i("19aa"),c=i("2266"),l=i("7dd0"),u=i("2626"),h=i("83ab"),d=i("f183").fastKey,f=i("69f3"),p=f.set,v=f.getterFor;t.exports={getConstructor:function(t,e,i,l){var u=t((function(t,n){o(t,u,e),p(t,{type:e,index:r(null),first:void 0,last:void 0,size:0}),h||(t.size=0),void 0!=n&&c(n,t[l],{that:t,AS_ENTRIES:i})})),f=v(e),g=function(t,e,i){var n,r,a=f(t),s=m(t,e);return s?s.value=i:(a.last=s={index:r=d(e,!0),key:e,value:i,previous:n=a.last,next:void 0,removed:!1},a.first||(a.first=s),n&&(n.next=s),h?a.size++:t.size++,"F"!==r&&(a.index[r]=s)),t},m=function(t,e){var i,n=f(t),r=d(e);if("F"!==r)return n.index[r];for(i=n.first;i;i=i.next)if(i.key==e)return i};return a(u.prototype,{clear:function(){var t=this,e=f(t),i=e.index,n=e.first;while(n)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete i[n.index],n=n.next;e.first=e.last=void 0,h?e.size=0:t.size=0},delete:function(t){var e=this,i=f(e),n=m(e,t);if(n){var r=n.next,a=n.previous;delete i.index[n.index],n.removed=!0,a&&(a.next=r),r&&(r.previous=a),i.first==n&&(i.first=r),i.last==n&&(i.last=a),h?i.size--:e.size--}return!!n},forEach:function(t){var e,i=f(this),n=s(t,arguments.length>1?arguments[1]:void 0,3);while(e=e?e.next:i.first){n(e.value,e.key,this);while(e&&e.removed)e=e.previous}},has:function(t){return!!m(this,t)}}),a(u.prototype,i?{get:function(t){var e=m(this,t);return e&&e.value},set:function(t,e){return g(this,0===t?0:t,e)}}:{add:function(t){return g(this,t=0===t?0:t,t)}}),h&&n(u.prototype,"size",{get:function(){return f(this).size}}),u},setStrong:function(t,e,i){var n=e+" Iterator",r=v(e),a=v(n);l(t,e,(function(t,e){p(this,{type:n,target:t,state:r(t),kind:e,last:void 0})}),(function(){var t=a(this),e=t.kind,i=t.last;while(i&&i.removed)i=i.previous;return t.target&&(t.last=i=i?i.next:t.state.first)?"keys"==e?{value:i.key,done:!1}:"values"==e?{value:i.value,done:!1}:{value:[i.key,i.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),i?"entries":"values",!i,!0),u(e)}}},"6d61":function(t,e,i){"use strict";var n=i("23e7"),r=i("da84"),a=i("94ca"),s=i("6eeb"),o=i("f183"),c=i("2266"),l=i("19aa"),u=i("861d"),h=i("d039"),d=i("1c7e"),f=i("d44e"),p=i("7156");t.exports=function(t,e,i){var v=-1!==t.indexOf("Map"),g=-1!==t.indexOf("Weak"),m=v?"set":"add",b=r[t],y=b&&b.prototype,_=b,S={},x=function(t){var e=y[t];s(y,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(g&&!u(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!u(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(g&&!u(t))&&e.call(this,0===t?0:t)}:function(t,i){return e.call(this,0===t?0:t,i),this})},w=a(t,"function"!=typeof b||!(g||y.forEach&&!h((function(){(new b).entries().next()}))));if(w)_=i.getConstructor(e,t,v,m),o.enable();else if(a(t,!0)){var j=new _,O=j[m](g?{}:-0,1)!=j,k=h((function(){j.has(1)})),C=d((function(t){new b(t)})),L=!g&&h((function(){var t=new b,e=5;while(e--)t[m](e,e);return!t.has(-0)}));C||(_=e((function(e,i){l(e,_,t);var n=p(new b,e,_);return void 0!=i&&c(i,n[m],{that:n,AS_ENTRIES:v}),n})),_.prototype=y,y.constructor=_),(k||L)&&(x("delete"),x("has"),v&&x("get")),(L||O)&&x(m),g&&y.clear&&delete y.clear}return S[t]=_,n({global:!0,forced:_!=b},S),f(_,t),g||i.setStrong(_,t,v),_}},"6ece":function(t,e,i){},7435:function(t,e,i){},"7a34":function(t,e,i){},"86cc":function(t,e,i){},"87cf":function(t,e,i){t.exports=i.p+"img/logo-text-colored.5cda006b.png"},"8a79":function(t,e,i){"use strict";var n=i("23e7"),r=i("06cf").f,a=i("50c4"),s=i("577e"),o=i("5a34"),c=i("1d80"),l=i("ab13"),u=i("c430"),h="".endsWith,d=Math.min,f=l("endsWith"),p=!u&&!f&&!!function(){var t=r(String.prototype,"endsWith");return t&&!t.writable}();n({target:"String",proto:!0,forced:!p&&!f},{endsWith:function(t){var e=s(c(this));o(t);var i=arguments.length>1?arguments[1]:void 0,n=a(e.length),r=void 0===i?n:d(a(i),n),l=s(t);return h?h.call(e,l,r):e.slice(r-l.length,r)===l}})},"8d4f":function(t,e,i){},"8e4b":function(t,e,i){"use strict";i("7a34")},"8efc":function(t,e,i){},"96cf":function(t,e,i){var n=function(t){"use strict";var e,i=Object.prototype,n=i.hasOwnProperty,r="function"===typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",s=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function c(t,e,i){return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch($){c=function(t,e,i){return t[e]=i}}function l(t,e,i,n){var r=e&&e.prototype instanceof g?e:g,a=Object.create(r.prototype),s=new B(n||[]);return a._invoke=O(t,i,s),a}function u(t,e,i){try{return{type:"normal",arg:t.call(e,i)}}catch($){return{type:"throw",arg:$}}}t.wrap=l;var h="suspendedStart",d="suspendedYield",f="executing",p="completed",v={};function g(){}function m(){}function b(){}var y={};c(y,a,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(E([])));S&&S!==i&&n.call(S,a)&&(y=S);var x=b.prototype=g.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function j(t,e){function i(r,a,s,o){var c=u(t[r],t,a);if("throw"!==c.type){var l=c.arg,h=l.value;return h&&"object"===typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){i("next",t,s,o)}),(function(t){i("throw",t,s,o)})):e.resolve(h).then((function(t){l.value=t,s(l)}),(function(t){return i("throw",t,s,o)}))}o(c.arg)}var r;function a(t,n){function a(){return new e((function(e,r){i(t,n,e,r)}))}return r=r?r.then(a,a):a()}this._invoke=a}function O(t,e,i){var n=h;return function(r,a){if(n===f)throw new Error("Generator is already running");if(n===p){if("throw"===r)throw a;return z()}i.method=r,i.arg=a;while(1){var s=i.delegate;if(s){var o=k(s,i);if(o){if(o===v)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(n===h)throw n=p,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);n=f;var c=u(t,e,i);if("normal"===c.type){if(n=i.done?p:d,c.arg===v)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(n=p,i.method="throw",i.arg=c.arg)}}}function k(t,i){var n=t.iterator[i.method];if(n===e){if(i.delegate=null,"throw"===i.method){if(t.iterator["return"]&&(i.method="return",i.arg=e,k(t,i),"throw"===i.method))return v;i.method="throw",i.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var r=u(n,t.iterator,i.arg);if("throw"===r.type)return i.method="throw",i.arg=r.arg,i.delegate=null,v;var a=r.arg;return a?a.done?(i[t.resultName]=a.value,i.next=t.nextLoc,"return"!==i.method&&(i.method="next",i.arg=e),i.delegate=null,v):a:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,v)}function C(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function B(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function E(t){if(t){var i=t[a];if(i)return i.call(t);if("function"===typeof t.next)return t;if(!isNaN(t.length)){var r=-1,s=function i(){while(++r=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var c=n.call(s,"catchLoc"),l=n.call(s,"finallyLoc");if(c&&l){if(this.prev=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--e){var i=this.tryEntries[e];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),L(i),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var i=this.tryEntries[e];if(i.tryLoc===t){var n=i.completion;if("throw"===n.type){var r=n.arg;L(i)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,i,n){return this.delegate={iterator:E(t),resultName:i,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=n}catch(r){"object"===typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},9911:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("link")},{link:function(t){return r(this,"a","href",t)}})},a2bf:function(t,e,i){"use strict";var n=i("e8b5"),r=i("50c4"),a=i("0366"),s=function(t,e,i,o,c,l,u,h){var d,f=c,p=0,v=!!u&&a(u,h,3);while(p0&&n(d))f=s(t,e,d,r(d.length),f,l-1)-1;else{if(f>=9007199254740991)throw TypeError("Exceed the acceptable array length");t[f]=d}f++}p++}return f};t.exports=s},bb51:function(t,e,i){"use strict";i.r(e);var n=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-container",{attrs:{fluid:""}},[n("v-row",{staticClass:"bg-img",attrs:{justify:"center",align:"center"}},[n("v-col",{attrs:{cols:"12",align:"center"}},[n("v-img",{attrs:{"max-height":"150","max-width":"250",src:i("87cf")}}),n("br"),n("h4",[t._v(" Reviving the Language that Brought us the Jak & Daxter Series ")]),n("br"),n("v-row",{attrs:{justify:"center"}},[n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"#project-status",rounded:"",color:"primary"}},[n("v-icon",[t._v("mdi-calendar-check")]),t._v(" Project Status ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{rounded:"",color:"secondary",href:"#recent-updates"}},[n("v-icon",[t._v("mdi-update")]),t._v(" Recent Updates ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"/jak-project/api-docs.html",target:"_blank",rounded:"",color:"deep-purple"}},[n("v-icon",[t._v("mdi-file-document")]),t._v(" Documentation ")],1)],1),n("v-col",{attrs:{cols:"auto"}},[n("v-btn",{attrs:{href:"https://github.com/water111/jak-project",target:"_blank",rounded:"",color:"accent"}},[n("v-icon",[t._v("mdi-git")]),t._v(" Contribute ")],1)],1)],1)],1)],1),n("v-row",[n("v-container",[n("v-row",{staticStyle:{"margin-top":"3em"},attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h1",{staticClass:"orange--text text--darken-1",attrs:{id:"project-status"}},[t._v(" Project Status ")])])],1),n("v-row",{attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h2",{staticClass:"orange--text text--lighten-3"},[t._v("Jak 1 - Black Label")])])],1),n("v-row",{attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{cols:"10"}},[n("v-subheader",[t._v("Decompilation")]),n("v-progress-linear",{attrs:{color:"green","buffer-value":"0",value:t.jak1BlackLabelStatus.srcFilesFinishedValue,stream:"",height:"25"}},[t._v(" Source Files Finished - "+t._s(t.jak1BlackLabelStatus.srcFilesFinished)+" / "+t._s(t.jak1BlackLabelStatus.srcFilesTotal)+" ")]),n("br"),n("v-progress-linear",{attrs:{color:"yellow","buffer-value":"0",value:t.jak1BlackLabelStatus.srcFilesStartedValue,stream:"",height:"25"}},[t._v(" Source Files Started - "+t._s(t.jak1BlackLabelStatus.srcFilesStarted)+" / "+t._s(t.jak1BlackLabelStatus.srcFilesTotal)+" ")]),n("br"),n("v-progress-linear",{attrs:{color:"teal","buffer-value":"0",value:t.jak1BlackLabelStatus.dataFilesStartedValue,stream:"",height:"25"}},[t._v(" Data Files Started - "+t._s(t.jak1BlackLabelStatus.dataFilesStarted)+" / "+t._s(t.jak1BlackLabelStatus.dataFilesTotal)+" ")])],1)],1),n("v-row",{staticStyle:{"margin-top":"5em"},attrs:{align:"center",justify:"center"}},[n("v-col",{attrs:{align:"center"}},[n("h1",{staticClass:"orange--text text--darken-1",attrs:{id:"recent-updates"}},[t._v(" Recent Updates ")])])],1),n("v-row",{staticStyle:{"margin-bottom":"10em"},attrs:{justify:"center"}},t._l(t.recentPRs,(function(e,i){return n("v-col",{key:"pr"-i,attrs:{cols:"4"}},[n("v-card",[n("v-card-text",{staticStyle:{"overflow-y":"auto",height:"300px"}},[n("p",{staticClass:"text-h5 orange--text text--lighten-3"},[t._v(" "+t._s(e.title)+" ")]),n("p",[t._v(" "+t._s(e.user.login)+" ")]),n("div",{staticClass:"text--primary"},[n("pre",{staticClass:"wrapped-pre"},[t._v(t._s(e.body))])])]),n("v-card-actions",[n("v-btn",{attrs:{text:"",color:"accent",href:e.html_url,target:"_blank"}},[t._v(" View Change ")])],1)],1)],1)})),1)],1)],1)],1)},r=[];i("d3b7");function a(t,e,i,n,r,a,s){try{var o=t[a](s),c=o.value}catch(l){return void i(l)}o.done?e(c):Promise.resolve(c).then(n,r)}function s(t){return function(){var e=this,i=arguments;return new Promise((function(n,r){var s=t.apply(e,i);function o(t){a(s,n,r,o,c,"next",t)}function c(t){a(s,n,r,o,c,"throw",t)}o(void 0)}))}}i("fb6a"),i("96cf");var o=i("f5f2"),c=o,l={name:"Home",components:{},data:function(){return{recentPRs:[],jak1BlackLabelStatus:{srcFilesTotal:c.jak1.fileProgress.src_files_total,srcFilesFinished:c.jak1.fileProgress.src_files_finished,srcFilesFinishedValue:c.jak1.fileProgress.src_files_finished/c.jak1.fileProgress.src_files_total*100,srcFilesStarted:c.jak1.fileProgress.src_files_started,srcFilesStartedValue:c.jak1.fileProgress.src_files_started/c.jak1.fileProgress.src_files_total*100,dataFilesTotal:c.jak1.fileProgress.data_files_total,dataFilesStarted:c.jak1.fileProgress.data_files_started,dataFilesStartedValue:c.jak1.fileProgress.data_files_started/c.jak1.fileProgress.data_files_total*100}}},mounted:function(){var t=s(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,this.loadRecentPRs();case 2:case"end":return t.stop()}}),t,this)})));function e(){return t.apply(this,arguments)}return e}(),methods:{truncateString:function(t,e){return t.length<=e?t:t.slice(0,e)+"..."},loadRecentPRs:function(){var t=s(regeneratorRuntime.mark((function t(){var e,i,n,r,a;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,fetch("https://api.github.com/search/issues?q=repo:water111/jak-project+is:pr+is:merged&sort=updated");case 2:return e=t.sent,t.next=5,e.json();case 5:for(i=t.sent,n=9,r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return"string"===typeof e.style?(Object(S["b"])("style must be an object",this),e):"string"===typeof e.class?(Object(S["b"])("class must be an object",this),e):(Object(x["d"])(t)?e.style=Object(g["a"])(Object(g["a"])({},e.style),{},{"background-color":"".concat(t),"border-color":"".concat(t)}):t&&(e.class=Object(g["a"])(Object(g["a"])({},e.class),{},Object(_["a"])({},t,!0))),e)},setTextColor:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("string"===typeof e.style)return Object(S["b"])("style must be an object",this),e;if("string"===typeof e.class)return Object(S["b"])("class must be an object",this),e;if(Object(x["d"])(t))e.style=Object(g["a"])(Object(g["a"])({},e.style),{},{color:"".concat(t),"caret-color":"".concat(t)});else if(t){var i=t.toString().trim().split(" ",2),n=Object(v["a"])(i,2),r=n[0],a=n[1];e.class=Object(g["a"])(Object(g["a"])({},e.class),{},Object(_["a"])({},r+"--text",!0)),a&&(e.class["text--"+a]=!0)}return e}}}),j=m["a"].extend({name:"elevatable",props:{elevation:[Number,String]},computed:{computedElevation:function(){return this.elevation},elevationClasses:function(){var t=this.computedElevation;return null==t||isNaN(parseInt(t))?{}:Object(_["a"])({},"elevation-".concat(this.elevation),!0)}}}),O=i("80d2"),k=m["a"].extend({name:"measurable",props:{height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},computed:{measurableStyles:function(){var t={},e=Object(O["d"])(this.height),i=Object(O["d"])(this.minHeight),n=Object(O["d"])(this.minWidth),r=Object(O["d"])(this.maxHeight),a=Object(O["d"])(this.maxWidth),s=Object(O["d"])(this.width);return e&&(t.height=e),i&&(t.minHeight=i),n&&(t.minWidth=n),r&&(t.maxHeight=r),a&&(t.maxWidth=a),s&&(t.width=s),t}}}),C=(i("a4d3"),i("e01a"),i("d28b"),i("3ca3"),i("ddb0"),i("06c5"));function L(t,e){var i="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=Object(C["a"])(t))||e&&t&&"number"===typeof t.length){i&&(t=i);var n=0,r=function(){};return{s:r,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==i["return"]||i["return"]()}finally{if(o)throw a}}}}i("a15b");var B=m["a"].extend({name:"roundable",props:{rounded:[Boolean,String],tile:Boolean},computed:{roundedClasses:function(){var t=[],e="string"===typeof this.rounded?String(this.rounded):!0===this.rounded;if(this.tile)t.push("rounded-0");else if("string"===typeof e){var i,n=e.split(" "),r=L(n);try{for(r.s();!(i=r.n()).done;){var a=i.value;t.push("rounded-".concat(a))}}catch(s){r.e(s)}finally{r.f()}}else e&&t.push("rounded");return t.length>0?Object(_["a"])({},t.join(" "),!0):{}}}}),E=i("7560"),z=i("58df"),$=Object(z["a"])(y,w,j,k,B,E["a"]).extend({name:"v-sheet",props:{outlined:Boolean,shaped:Boolean,tag:{type:String,default:"div"}},computed:{classes:function(){return Object(g["a"])(Object(g["a"])(Object(g["a"])({"v-sheet":!0,"v-sheet--outlined":this.outlined,"v-sheet--shaped":this.shaped},this.themeClasses),this.elevationClasses),this.roundedClasses)},styles:function(){return this.measurableStyles}},render:function(t){var e={class:this.classes,style:this.styles,on:this.listeners$};return t(this.tag,this.setBackgroundColor(this.color,e),this.$slots.default)}}),T=$;i("99af"),i("8d4f");function P(t,e){if("undefined"!==typeof window&&"IntersectionObserver"in window){var i=e.modifiers||{},n=e.value,r="object"===Object(p["a"])(n)?n:{handler:n,options:{}},a=r.handler,s=r.options,o=new IntersectionObserver((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0;if(t._observe){var r=e.some((function(t){return t.isIntersecting}));!a||i.quiet&&!t._observe.init||i.once&&!r&&t._observe.init||a(e,n,r),r&&i.once?N(t):t._observe.init=!0}}),s);t._observe={init:!1,observer:o},o.observe(t)}}function N(t){t._observe&&(t._observe.observer.unobserve(t),delete t._observe)}var R={inserted:P,unbind:N},F=R,V=w.extend({name:"v-progress-circular",directives:{intersect:F},props:{button:Boolean,indeterminate:Boolean,rotate:{type:[Number,String],default:0},size:{type:[Number,String],default:32},width:{type:[Number,String],default:4},value:{type:[Number,String],default:0}},data:function(){return{radius:20,isVisible:!0}},computed:{calculatedSize:function(){return Number(this.size)+(this.button?8:0)},circumference:function(){return 2*Math.PI*this.radius},classes:function(){return{"v-progress-circular--visible":this.isVisible,"v-progress-circular--indeterminate":this.indeterminate,"v-progress-circular--button":this.button}},normalizedValue:function(){return this.value<0?0:this.value>100?100:parseFloat(this.value)},strokeDashArray:function(){return Math.round(1e3*this.circumference)/1e3},strokeDashOffset:function(){return(100-this.normalizedValue)/100*this.circumference+"px"},strokeWidth:function(){return Number(this.width)/+this.size*this.viewBoxSize*2},styles:function(){return{height:Object(O["d"])(this.calculatedSize),width:Object(O["d"])(this.calculatedSize)}},svgStyles:function(){return{transform:"rotate(".concat(Number(this.rotate),"deg)")}},viewBoxSize:function(){return this.radius/(1-Number(this.width)/+this.size)}},methods:{genCircle:function(t,e){return this.$createElement("circle",{class:"v-progress-circular__".concat(t),attrs:{fill:"transparent",cx:2*this.viewBoxSize,cy:2*this.viewBoxSize,r:this.radius,"stroke-width":this.strokeWidth,"stroke-dasharray":this.strokeDashArray,"stroke-dashoffset":e}})},genSvg:function(){var t=[this.indeterminate||this.genCircle("underlay",0),this.genCircle("overlay",this.strokeDashOffset)];return this.$createElement("svg",{style:this.svgStyles,attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"".concat(this.viewBoxSize," ").concat(this.viewBoxSize," ").concat(2*this.viewBoxSize," ").concat(2*this.viewBoxSize)}},t)},genInfo:function(){return this.$createElement("div",{staticClass:"v-progress-circular__info"},this.$slots.default)},onObserve:function(t,e,i){this.isVisible=i}},render:function(t){return t("div",this.setTextColor(this.color,{staticClass:"v-progress-circular",attrs:{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":this.indeterminate?void 0:this.normalizedValue},class:this.classes,directives:[{name:"intersect",value:this.onObserve}],style:this.styles,on:this.$listeners}),[this.genSvg(),this.genInfo()])}}),I=V;function A(t,e){return function(){return Object(S["c"])("The ".concat(t," component must be used inside a ").concat(e))}}function W(t,e,i){var n=e&&i?{register:A(e,i),unregister:A(e,i)}:null;return m["a"].extend({name:"registrable-inject",inject:Object(_["a"])({},t,{default:n})})}function D(t,e,i){return W(t,e,i).extend({name:"groupable",props:{activeClass:{type:String,default:function(){if(this[t])return this[t].activeClass}},disabled:Boolean},data:function(){return{isActive:!1}},computed:{groupClasses:function(){return this.activeClass?Object(_["a"])({},this.activeClass,this.isActive):{}}},created:function(){this[t]&&this[t].register(this)},beforeDestroy:function(){this[t]&&this[t].unregister(this)},methods:{toggle:function(){this.$emit("change")}}})}D("itemGroup");function H(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"value",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"input";return m["a"].extend({name:"toggleable",model:{prop:e,event:i},props:Object(_["a"])({},e,{required:!1}),data:function(){return{isActive:!!this[e]}},watch:(t={},Object(_["a"])(t,e,(function(t){this.isActive=!!t})),Object(_["a"])(t,"isActive",(function(t){!!t!==this[e]&&this.$emit(i,t)})),t)})}H();var M={absolute:Boolean,bottom:Boolean,fixed:Boolean,left:Boolean,right:Boolean,top:Boolean};function q(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return m["a"].extend({name:"positionable",props:t.length?Object(O["f"])(M,t):M})}var G=q(),J=(i("9911"),i("5319"),i("b0c0"),i("7435"),Symbol("rippleStop")),Y=80;function X(t,e){t.style.transform=e,t.style.webkitTransform=e}function K(t,e){t.style.opacity=e.toString()}function U(t){return"TouchEvent"===t.constructor.name}function Q(t){return"KeyboardEvent"===t.constructor.name}var Z=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=0,r=0;if(!Q(t)){var a=e.getBoundingClientRect(),s=U(t)?t.touches[t.touches.length-1]:t;n=s.clientX-a.left,r=s.clientY-a.top}var o=0,c=.3;e._ripple&&e._ripple.circle?(c=.15,o=e.clientWidth/2,o=i.center?o:o+Math.sqrt(Math.pow(n-o,2)+Math.pow(r-o,2))/4):o=Math.sqrt(Math.pow(e.clientWidth,2)+Math.pow(e.clientHeight,2))/2;var l="".concat((e.clientWidth-2*o)/2,"px"),u="".concat((e.clientHeight-2*o)/2,"px"),h=i.center?l:"".concat(n-o,"px"),d=i.center?u:"".concat(r-o,"px");return{radius:o,scale:c,x:h,y:d,centerX:l,centerY:u}},tt={show:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e._ripple&&e._ripple.enabled){var n=document.createElement("span"),r=document.createElement("span");n.appendChild(r),n.className="v-ripple__container",i.class&&(n.className+=" ".concat(i.class));var a=Z(t,e,i),s=a.radius,o=a.scale,c=a.x,l=a.y,u=a.centerX,h=a.centerY,d="".concat(2*s,"px");r.className="v-ripple__animation",r.style.width=d,r.style.height=d,e.appendChild(n);var f=window.getComputedStyle(e);f&&"static"===f.position&&(e.style.position="relative",e.dataset.previousPosition="static"),r.classList.add("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--visible"),X(r,"translate(".concat(c,", ").concat(l,") scale3d(").concat(o,",").concat(o,",").concat(o,")")),K(r,0),r.dataset.activated=String(performance.now()),setTimeout((function(){r.classList.remove("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--in"),X(r,"translate(".concat(u,", ").concat(h,") scale3d(1,1,1)")),K(r,.25)}),0)}},hide:function(t){if(t&&t._ripple&&t._ripple.enabled){var e=t.getElementsByClassName("v-ripple__animation");if(0!==e.length){var i=e[e.length-1];if(!i.dataset.isHiding){i.dataset.isHiding="true";var n=performance.now()-Number(i.dataset.activated),r=Math.max(250-n,0);setTimeout((function(){i.classList.remove("v-ripple__animation--in"),i.classList.add("v-ripple__animation--out"),K(i,0),setTimeout((function(){var e=t.getElementsByClassName("v-ripple__animation");1===e.length&&t.dataset.previousPosition&&(t.style.position=t.dataset.previousPosition,delete t.dataset.previousPosition),i.parentNode&&t.removeChild(i.parentNode)}),300)}),r)}}}}};function et(t){return"undefined"===typeof t||!!t}function it(t){var e={},i=t.currentTarget;if(i&&i._ripple&&!i._ripple.touched&&!t[J]){if(t[J]=!0,U(t))i._ripple.touched=!0,i._ripple.isTouch=!0;else if(i._ripple.isTouch)return;if(e.center=i._ripple.centered||Q(t),i._ripple.class&&(e.class=i._ripple.class),U(t)){if(i._ripple.showTimerCommit)return;i._ripple.showTimerCommit=function(){tt.show(t,i,e)},i._ripple.showTimer=window.setTimeout((function(){i&&i._ripple&&i._ripple.showTimerCommit&&(i._ripple.showTimerCommit(),i._ripple.showTimerCommit=null)}),Y)}else tt.show(t,i,e)}}function nt(t){var e=t.currentTarget;if(e&&e._ripple){if(window.clearTimeout(e._ripple.showTimer),"touchend"===t.type&&e._ripple.showTimerCommit)return e._ripple.showTimerCommit(),e._ripple.showTimerCommit=null,void(e._ripple.showTimer=setTimeout((function(){nt(t)})));window.setTimeout((function(){e._ripple&&(e._ripple.touched=!1)})),tt.hide(e)}}function rt(t){var e=t.currentTarget;e&&e._ripple&&(e._ripple.showTimerCommit&&(e._ripple.showTimerCommit=null),window.clearTimeout(e._ripple.showTimer))}var at=!1;function st(t){at||t.keyCode!==O["j"].enter&&t.keyCode!==O["j"].space||(at=!0,it(t))}function ot(t){at=!1,nt(t)}function ct(t){!0===at&&(at=!1,nt(t))}function lt(t,e,i){var n=et(e.value);n||tt.hide(t),t._ripple=t._ripple||{},t._ripple.enabled=n;var r=e.value||{};r.center&&(t._ripple.centered=!0),r.class&&(t._ripple.class=e.value.class),r.circle&&(t._ripple.circle=r.circle),n&&!i?(t.addEventListener("touchstart",it,{passive:!0}),t.addEventListener("touchend",nt,{passive:!0}),t.addEventListener("touchmove",rt,{passive:!0}),t.addEventListener("touchcancel",nt),t.addEventListener("mousedown",it),t.addEventListener("mouseup",nt),t.addEventListener("mouseleave",nt),t.addEventListener("keydown",st),t.addEventListener("keyup",ot),t.addEventListener("blur",ct),t.addEventListener("dragstart",nt,{passive:!0})):!n&&i&&ut(t)}function ut(t){t.removeEventListener("mousedown",it),t.removeEventListener("touchstart",it),t.removeEventListener("touchend",nt),t.removeEventListener("touchmove",rt),t.removeEventListener("touchcancel",nt),t.removeEventListener("mouseup",nt),t.removeEventListener("mouseleave",nt),t.removeEventListener("keydown",st),t.removeEventListener("keyup",ot),t.removeEventListener("dragstart",nt),t.removeEventListener("blur",ct)}function ht(t,e,i){lt(t,e,!1)}function dt(t){delete t._ripple,ut(t)}function ft(t,e){if(e.value!==e.oldValue){var i=et(e.oldValue);lt(t,e,i)}}var pt={bind:ht,unbind:dt,update:ft},vt=pt,gt=m["a"].extend({name:"routable",directives:{Ripple:vt},props:{activeClass:String,append:Boolean,disabled:Boolean,exact:{type:Boolean,default:void 0},exactPath:Boolean,exactActiveClass:String,link:Boolean,href:[String,Object],to:[String,Object],nuxt:Boolean,replace:Boolean,ripple:{type:[Boolean,Object],default:null},tag:String,target:String},data:function(){return{isActive:!1,proxyClass:""}},computed:{classes:function(){var t={};return this.to||(this.activeClass&&(t[this.activeClass]=this.isActive),this.proxyClass&&(t[this.proxyClass]=this.isActive)),t},computedRipple:function(){var t;return null!=(t=this.ripple)?t:!this.disabled&&this.isClickable},isClickable:function(){return!this.disabled&&Boolean(this.isLink||this.$listeners.click||this.$listeners["!click"]||this.$attrs.tabindex)},isLink:function(){return this.to||this.href||this.link},styles:function(){return{}}},watch:{$route:"onRouteChange"},methods:{click:function(t){this.$emit("click",t)},generateRouteLink:function(){var t,e,i=this.exact,n=(t={attrs:{tabindex:"tabindex"in this.$attrs?this.$attrs.tabindex:void 0},class:this.classes,style:this.styles,props:{},directives:[{name:"ripple",value:this.computedRipple}]},Object(_["a"])(t,this.to?"nativeOn":"on",Object(g["a"])(Object(g["a"])({},this.$listeners),{},{click:this.click})),Object(_["a"])(t,"ref","link"),t);if("undefined"===typeof this.exact&&(i="/"===this.to||this.to===Object(this.to)&&"/"===this.to.path),this.to){var r=this.activeClass,a=this.exactActiveClass||r;this.proxyClass&&(r="".concat(r," ").concat(this.proxyClass).trim(),a="".concat(a," ").concat(this.proxyClass).trim()),e=this.nuxt?"nuxt-link":"router-link",Object.assign(n.props,{to:this.to,exact:i,exactPath:this.exactPath,activeClass:r,exactActiveClass:a,append:this.append,replace:this.replace})}else e=(this.href?"a":this.tag)||"div","a"===e&&this.href&&(n.attrs.href=this.href);return this.target&&(n.attrs.target=this.target),{tag:e,data:n}},onRouteChange:function(){var t=this;if(this.to&&this.$refs.link&&this.$route){var e="".concat(this.activeClass," ").concat(this.proxyClass||"").trim(),i="_vnode.data.class.".concat(e);this.$nextTick((function(){Object(O["h"])(t.$refs.link,i)&&t.toggle()}))}},toggle:function(){}}}),mt=(i("c96a"),m["a"].extend({name:"sizeable",props:{large:Boolean,small:Boolean,xLarge:Boolean,xSmall:Boolean},computed:{medium:function(){return Boolean(!this.xSmall&&!this.small&&!this.large&&!this.xLarge)},sizeableClasses:function(){return{"v-size--x-small":this.xSmall,"v-size--small":this.small,"v-size--default":this.medium,"v-size--large":this.large,"v-size--x-large":this.xLarge}}}})),bt=Object(z["a"])(T,gt,G,mt,D("btnToggle"),H("inputValue")),yt=bt.extend().extend({name:"v-btn",props:{activeClass:{type:String,default:function(){return this.btnToggle?this.btnToggle.activeClass:""}},block:Boolean,depressed:Boolean,fab:Boolean,icon:Boolean,loading:Boolean,outlined:Boolean,plain:Boolean,retainFocusOnClick:Boolean,rounded:Boolean,tag:{type:String,default:"button"},text:Boolean,tile:Boolean,type:{type:String,default:"button"},value:null},data:function(){return{proxyClass:"v-btn--active"}},computed:{classes:function(){return Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])({"v-btn":!0},gt.options.computed.classes.call(this)),{},{"v-btn--absolute":this.absolute,"v-btn--block":this.block,"v-btn--bottom":this.bottom,"v-btn--disabled":this.disabled,"v-btn--is-elevated":this.isElevated,"v-btn--fab":this.fab,"v-btn--fixed":this.fixed,"v-btn--has-bg":this.hasBg,"v-btn--icon":this.icon,"v-btn--left":this.left,"v-btn--loading":this.loading,"v-btn--outlined":this.outlined,"v-btn--plain":this.plain,"v-btn--right":this.right,"v-btn--round":this.isRound,"v-btn--rounded":this.rounded,"v-btn--router":this.to,"v-btn--text":this.text,"v-btn--tile":this.tile,"v-btn--top":this.top},this.themeClasses),this.groupClasses),this.elevationClasses),this.sizeableClasses)},computedElevation:function(){if(!this.disabled)return j.options.computed.computedElevation.call(this)},computedRipple:function(){var t,e=!this.icon&&!this.fab||{circle:!0};return!this.disabled&&(null!=(t=this.ripple)?t:e)},hasBg:function(){return!this.text&&!this.plain&&!this.outlined&&!this.icon},isElevated:function(){return Boolean(!this.icon&&!this.text&&!this.outlined&&!this.depressed&&!this.disabled&&!this.plain&&(null==this.elevation||Number(this.elevation)>0))},isRound:function(){return Boolean(this.icon||this.fab)},styles:function(){return Object(g["a"])({},this.measurableStyles)}},created:function(){var t=this,e=[["flat","text"],["outline","outlined"],["round","rounded"]];e.forEach((function(e){var i=Object(v["a"])(e,2),n=i[0],r=i[1];t.$attrs.hasOwnProperty(n)&&Object(S["a"])(n,r,t)}))},methods:{click:function(t){!this.retainFocusOnClick&&!this.fab&&t.detail&&this.$el.blur(),this.$emit("click",t),this.btnToggle&&this.toggle()},genContent:function(){return this.$createElement("span",{staticClass:"v-btn__content"},this.$slots.default)},genLoader:function(){return this.$createElement("span",{class:"v-btn__loader"},this.$slots.loader||[this.$createElement(I,{props:{indeterminate:!0,size:23,width:2}})])}},render:function(t){var e=[this.genContent(),this.loading&&this.genLoader()],i=this.generateRouteLink(),n=i.tag,r=i.data,a=this.hasBg?this.setBackgroundColor:this.setTextColor;return"button"===n&&(r.attrs.type=this.type,r.attrs.disabled=this.disabled),r.attrs.value=["string","number"].includes(Object(p["a"])(this.value))?this.value:JSON.stringify(this.value),t(n,this.disabled?r:a(this.color,r),e)}}),_t=(i("0481"),i("615b"),i("6ece"),i("b64b"),{styleList:/;(?![^(]*\))/g,styleProp:/:(.*)/});function St(t){var e,i={},n=L(t.split(_t.styleList));try{for(n.s();!(e=n.n()).done;){var r=e.value,a=r.split(_t.styleProp),s=Object(v["a"])(a,2),o=s[0],c=s[1];o=o.trim(),o&&("string"===typeof c&&(c=c.trim()),i[Object(O["a"])(o)]=c)}}catch(l){n.e(l)}finally{n.f()}return i}function xt(){var t,e={},i=arguments.length;while(i--)for(var n=0,r=Object.keys(arguments[i]);n0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length,n=new Array(i>1?i-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:"top center 0",i=arguments.length>2?arguments[2]:void 0;return{name:t,functional:!0,props:{group:{type:Boolean,default:!1},hideOnLeave:{type:Boolean,default:!1},leaveAbsolute:{type:Boolean,default:!1},mode:{type:String,default:i},origin:{type:String,default:e}},render:function(e,i){var n="transition".concat(i.props.group?"-group":""),r={props:{name:t,mode:i.props.mode},on:{beforeEnter:function(t){t.style.transformOrigin=i.props.origin,t.style.webkitTransformOrigin=i.props.origin}}};return i.props.leaveAbsolute&&(r.on.leave=kt(r.on.leave,(function(t){var e=t.offsetTop,i=t.offsetLeft,n=t.offsetWidth,r=t.offsetHeight;t._transitionInitialStyles={position:t.style.position,top:t.style.top,left:t.style.left,width:t.style.width,height:t.style.height},t.style.position="absolute",t.style.top=e+"px",t.style.left=i+"px",t.style.width=n+"px",t.style.height=r+"px"})),r.on.afterLeave=kt(r.on.afterLeave,(function(t){if(t&&t._transitionInitialStyles){var e=t._transitionInitialStyles,i=e.position,n=e.top,r=e.left,a=e.width,s=e.height;delete t._transitionInitialStyles,t.style.position=i||"",t.style.top=n||"",t.style.left=r||"",t.style.width=a||"",t.style.height=s||""}}))),i.props.hideOnLeave&&(r.on.leave=kt(r.on.leave,(function(t){t._initialDisplay=t.style.display,t.style.display="none"})),r.on.afterLeave=kt(r.on.afterLeave,(function(t){t&&(t.style.display=t._initialDisplay||"")}))),e(n,xt(i.data,r),i.children)}}}function Lt(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"in-out";return{name:t,functional:!0,props:{mode:{type:String,default:i}},render:function(i,n){return i("transition",xt(n.data,{props:{name:t},on:e}),n.children)}}}var Bt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=e?"width":"height",n="offset".concat(Object(O["o"])(i));return{beforeEnter:function(t){t._parent=t.parentNode,t._initialStyle=Object(_["a"])({transition:t.style.transition,overflow:t.style.overflow},i,t.style[i])},enter:function(e){var r=e._initialStyle;e.style.setProperty("transition","none","important"),e.style.overflow="hidden";var a="".concat(e[n],"px");e.style[i]="0",e.offsetHeight,e.style.transition=r.transition,t&&e._parent&&e._parent.classList.add(t),requestAnimationFrame((function(){e.style[i]=a}))},afterEnter:a,enterCancelled:a,leave:function(t){t._initialStyle=Object(_["a"])({transition:"",overflow:t.style.overflow},i,t.style[i]),t.style.overflow="hidden",t.style[i]="".concat(t[n],"px"),t.offsetHeight,requestAnimationFrame((function(){return t.style[i]="0"}))},afterLeave:r,leaveCancelled:r};function r(e){t&&e._parent&&e._parent.classList.remove(t),a(e)}function a(t){var e=t._initialStyle[i];t.style.overflow=t._initialStyle.overflow,null!=e&&(t.style[i]=e),delete t._initialStyle}},Et=(Ct("carousel-transition"),Ct("carousel-reverse-transition"),Ct("tab-transition"),Ct("tab-reverse-transition"),Ct("menu-transition"),Ct("fab-transition","center center","out-in"),Ct("dialog-transition"),Ct("dialog-bottom-transition"),Ct("dialog-top-transition"),Ct("fade-transition")),zt=(Ct("scale-transition"),Ct("scroll-x-transition"),Ct("scroll-x-reverse-transition"),Ct("scroll-y-transition"),Ct("scroll-y-reverse-transition"),Ct("slide-x-transition"));Ct("slide-x-reverse-transition"),Ct("slide-y-transition"),Ct("slide-y-reverse-transition"),Lt("expand-transition",Bt()),Lt("expand-x-transition",Bt("",!0));function $t(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"value",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"change";return m["a"].extend({name:"proxyable",model:{prop:t,event:e},props:Object(_["a"])({},t,{required:!1}),data:function(){return{internalLazyValue:this[t]}},computed:{internalValue:{get:function(){return this.internalLazyValue},set:function(t){t!==this.internalLazyValue&&(this.internalLazyValue=t,this.$emit(e,t))}}},watch:Object(_["a"])({},t,(function(t){this.internalLazyValue=t}))})}var Tt=$t(),Pt=Tt,Nt=Object(z["a"])(w,q(["absolute","fixed","top","bottom"]),Pt,E["a"]),Rt=Nt.extend({name:"v-progress-linear",directives:{intersect:F},props:{active:{type:Boolean,default:!0},backgroundColor:{type:String,default:null},backgroundOpacity:{type:[Number,String],default:null},bufferValue:{type:[Number,String],default:100},color:{type:String,default:"primary"},height:{type:[Number,String],default:4},indeterminate:Boolean,query:Boolean,reverse:Boolean,rounded:Boolean,stream:Boolean,striped:Boolean,value:{type:[Number,String],default:0}},data:function(){return{internalLazyValue:this.value||0,isVisible:!0}},computed:{__cachedBackground:function(){return this.$createElement("div",this.setBackgroundColor(this.backgroundColor||this.color,{staticClass:"v-progress-linear__background",style:this.backgroundStyle}))},__cachedBar:function(){return this.$createElement(this.computedTransition,[this.__cachedBarType])},__cachedBarType:function(){return this.indeterminate?this.__cachedIndeterminate:this.__cachedDeterminate},__cachedBuffer:function(){return this.$createElement("div",{staticClass:"v-progress-linear__buffer",style:this.styles})},__cachedDeterminate:function(){return this.$createElement("div",this.setBackgroundColor(this.color,{staticClass:"v-progress-linear__determinate",style:{width:Object(O["d"])(this.normalizedValue,"%")}}))},__cachedIndeterminate:function(){return this.$createElement("div",{staticClass:"v-progress-linear__indeterminate",class:{"v-progress-linear__indeterminate--active":this.active}},[this.genProgressBar("long"),this.genProgressBar("short")])},__cachedStream:function(){return this.stream?this.$createElement("div",this.setTextColor(this.color,{staticClass:"v-progress-linear__stream",style:{width:Object(O["d"])(100-this.normalizedBuffer,"%")}})):null},backgroundStyle:function(){var t,e=null==this.backgroundOpacity?this.backgroundColor?1:.3:parseFloat(this.backgroundOpacity);return t={opacity:e},Object(_["a"])(t,this.isReversed?"right":"left",Object(O["d"])(this.normalizedValue,"%")),Object(_["a"])(t,"width",Object(O["d"])(Math.max(0,this.normalizedBuffer-this.normalizedValue),"%")),t},classes:function(){return Object(g["a"])({"v-progress-linear--absolute":this.absolute,"v-progress-linear--fixed":this.fixed,"v-progress-linear--query":this.query,"v-progress-linear--reactive":this.reactive,"v-progress-linear--reverse":this.isReversed,"v-progress-linear--rounded":this.rounded,"v-progress-linear--striped":this.striped,"v-progress-linear--visible":this.isVisible},this.themeClasses)},computedTransition:function(){return this.indeterminate?Et:zt},isReversed:function(){return this.$vuetify.rtl!==this.reverse},normalizedBuffer:function(){return this.normalize(this.bufferValue)},normalizedValue:function(){return this.normalize(this.internalLazyValue)},reactive:function(){return Boolean(this.$listeners.change)},styles:function(){var t={};return this.active||(t.height=0),this.indeterminate||100===parseFloat(this.normalizedBuffer)||(t.width=Object(O["d"])(this.normalizedBuffer,"%")),t}},methods:{genContent:function(){var t=Object(O["i"])(this,"default",{value:this.internalLazyValue});return t?this.$createElement("div",{staticClass:"v-progress-linear__content"},t):null},genListeners:function(){var t=this.$listeners;return this.reactive&&(t.click=this.onClick),t},genProgressBar:function(t){return this.$createElement("div",this.setBackgroundColor(this.color,{staticClass:"v-progress-linear__indeterminate",class:Object(_["a"])({},t,!0)}))},onClick:function(t){if(this.reactive){var e=this.$el.getBoundingClientRect(),i=e.width;this.internalValue=t.offsetX/i*100}},onObserve:function(t,e,i){this.isVisible=i},normalize:function(t){return t<0?0:t>100?100:parseFloat(t)}},render:function(t){var e={staticClass:"v-progress-linear",attrs:{role:"progressbar","aria-valuemin":0,"aria-valuemax":this.normalizedBuffer,"aria-valuenow":this.indeterminate?void 0:this.normalizedValue},class:this.classes,directives:[{name:"intersect",value:this.onObserve}],style:{bottom:this.bottom?0:void 0,height:this.active?Object(O["d"])(this.height):0,top:this.top?0:void 0},on:this.genListeners()};return t("div",e,[this.__cachedStream,this.__cachedBackground,this.__cachedBuffer,this.__cachedBar,this.genContent()])}}),Ft=Rt,Vt=m["a"].extend().extend({name:"loadable",props:{loading:{type:[Boolean,String],default:!1},loaderHeight:{type:[Number,String],default:2}},methods:{genProgress:function(){return!1===this.loading?null:this.$slots.progress||this.$createElement(Ft,{props:{absolute:!0,color:!0===this.loading||""===this.loading?this.color||"primary":this.loading,height:this.loaderHeight,indeterminate:!0}})}}}),It=Object(z["a"])(Vt,gt,T).extend({name:"v-card",props:{flat:Boolean,hover:Boolean,img:String,link:Boolean,loaderHeight:{type:[Number,String],default:4},raised:Boolean},computed:{classes:function(){return Object(g["a"])(Object(g["a"])({"v-card":!0},gt.options.computed.classes.call(this)),{},{"v-card--flat":this.flat,"v-card--hover":this.hover,"v-card--link":this.isClickable,"v-card--loading":this.loading,"v-card--disabled":this.disabled,"v-card--raised":this.raised},T.options.computed.classes.call(this))},styles:function(){var t=Object(g["a"])({},T.options.computed.styles.call(this));return this.img&&(t.background='url("'.concat(this.img,'") center center / cover no-repeat')),t}},methods:{genProgress:function(){var t=Vt.options.methods.genProgress.call(this);return t?this.$createElement("div",{staticClass:"v-card__progress",key:"progress"},[t]):null}},render:function(t){var e=this.generateRouteLink(),i=e.tag,n=e.data;return n.style=this.styles,this.isClickable&&(n.attrs=n.attrs||{},n.attrs.tabindex=0),t(i,this.setBackgroundColor(this.color,n),[this.genProgress(),this.$slots.default])}}),At=Object(O["e"])("v-card__actions"),Wt=(Object(O["e"])("v-card__subtitle"),Object(O["e"])("v-card__text")),Dt=(Object(O["e"])("v-card__title"),i("4ec9"),i("159b"),i("2ca0"),i("4b85"),["sm","md","lg","xl"]),Ht=function(){return Dt.reduce((function(t,e){return t[e]={type:[Boolean,String,Number],default:!1},t}),{})}(),Mt=function(){return Dt.reduce((function(t,e){return t["offset"+Object(O["o"])(e)]={type:[String,Number],default:null},t}),{})}(),qt=function(){return Dt.reduce((function(t,e){return t["order"+Object(O["o"])(e)]={type:[String,Number],default:null},t}),{})}(),Gt={col:Object.keys(Ht),offset:Object.keys(Mt),order:Object.keys(qt)};function Jt(t,e,i){var n=t;if(null!=i&&!1!==i){if(e){var r=e.replace(t,"");n+="-".concat(r)}return"col"!==t||""!==i&&!0!==i?(n+="-".concat(i),n.toLowerCase()):n.toLowerCase()}}var Yt=new Map,Xt=m["a"].extend({name:"v-col",functional:!0,props:Object(g["a"])(Object(g["a"])(Object(g["a"])(Object(g["a"])({cols:{type:[Boolean,String,Number],default:!1}},Ht),{},{offset:{type:[String,Number],default:null}},Mt),{},{order:{type:[String,Number],default:null}},qt),{},{alignSelf:{type:String,default:null,validator:function(t){return["auto","start","end","center","baseline","stretch"].includes(t)}},tag:{type:String,default:"div"}}),render:function(t,e){var i=e.props,n=e.data,r=e.children,a=(e.parent,"");for(var s in i)a+=String(i[s]);var o=Yt.get(a);return o||function(){var t,e;for(e in o=[],Gt)Gt[e].forEach((function(t){var n=i[t],r=Jt(e,t,n);r&&o.push(r)}));var n=o.some((function(t){return t.startsWith("col-")}));o.push((t={col:!n||!i.cols},Object(_["a"])(t,"col-".concat(i.cols),i.cols),Object(_["a"])(t,"offset-".concat(i.offset),i.offset),Object(_["a"])(t,"order-".concat(i.order),i.order),Object(_["a"])(t,"align-self-".concat(i.alignSelf),i.alignSelf),t)),Yt.set(a,o)}(),t(i.tag,xt(n,{class:o}),r)}});i("4de4"),i("20f6");function Kt(t){return m["a"].extend({name:"v-".concat(t),functional:!0,props:{id:String,tag:{type:String,default:"div"}},render:function(e,i){var n=i.props,r=i.data,a=i.children;r.staticClass="".concat(t," ").concat(r.staticClass||"").trim();var s=r.attrs;if(s){r.attrs={};var o=Object.keys(s).filter((function(t){if("slot"===t)return!1;var e=s[t];return t.startsWith("data-")?(r.attrs[t]=e,!1):e||"string"===typeof e}));o.length&&(r.staticClass+=" ".concat(o.join(" ")))}return n.id&&(r.domProps=r.domProps||{},r.domProps.id=n.id),e(n.tag,r,a)}})}var Ut,Qt=Kt("container").extend({name:"v-container",functional:!0,props:{id:String,tag:{type:String,default:"div"},fluid:{type:Boolean,default:!1}},render:function(t,e){var i,n=e.props,r=e.data,a=e.children,s=r.attrs;return s&&(r.attrs={},i=Object.keys(s).filter((function(t){if("slot"===t)return!1;var e=s[t];return t.startsWith("data-")?(r.attrs[t]=e,!1):e||"string"===typeof e}))),n.id&&(r.domProps=r.domProps||{},r.domProps.id=n.id),t(n.tag,xt(r,{staticClass:"container",class:Array({"container--fluid":n.fluid}).concat(i||[])}),a)}});i("2532"),i("7db0"),i("4804");function Zt(t){return["fas","far","fal","fab","fad","fak"].some((function(e){return t.includes(e)}))}function te(t){return/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4}(function(t){t["xSmall"]="12px",t["small"]="16px",t["default"]="24px",t["medium"]="28px",t["large"]="36px",t["xLarge"]="40px"})(Ut||(Ut={}));var ee=Object(z["a"])(y,w,mt,E["a"]).extend({name:"v-icon",props:{dense:Boolean,disabled:Boolean,left:Boolean,right:Boolean,size:[Number,String],tag:{type:String,required:!1,default:"i"}},computed:{medium:function(){return!1},hasClickListener:function(){return Boolean(this.listeners$.click||this.listeners$["!click"])}},methods:{getIcon:function(){var t="";return this.$slots.default&&(t=this.$slots.default[0].text.trim()),Object(O["n"])(this,t)},getSize:function(){var t={xSmall:this.xSmall,small:this.small,medium:this.medium,large:this.large,xLarge:this.xLarge},e=Object(O["k"])(t).find((function(e){return t[e]}));return e&&Ut[e]||Object(O["d"])(this.size)},getDefaultData:function(){return{staticClass:"v-icon notranslate",class:{"v-icon--disabled":this.disabled,"v-icon--left":this.left,"v-icon--link":this.hasClickListener,"v-icon--right":this.right,"v-icon--dense":this.dense},attrs:Object(g["a"])({"aria-hidden":!this.hasClickListener,disabled:this.hasClickListener&&this.disabled,type:this.hasClickListener?"button":void 0},this.attrs$),on:this.listeners$}},getSvgWrapperData:function(){var t=this.getSize(),e=Object(g["a"])(Object(g["a"])({},this.getDefaultData()),{},{style:t?{fontSize:t,height:t,width:t}:void 0});return this.applyColors(e),e},applyColors:function(t){t.class=Object(g["a"])(Object(g["a"])({},t.class),this.themeClasses),this.setTextColor(this.color,t)},renderFontIcon:function(t,e){var i=[],n=this.getDefaultData(),r="material-icons",a=t.indexOf("-"),s=a<=-1;s?i.push(t):(r=t.slice(0,a),Zt(r)&&(r="")),n.class[r]=!0,n.class[t]=!s;var o=this.getSize();return o&&(n.style={fontSize:o}),this.applyColors(n),e(this.hasClickListener?"button":this.tag,n,i)},renderSvgIcon:function(t,e){var i={class:"v-icon__svg",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":!0}},n=this.getSize();return n&&(i.style={fontSize:n,height:n,width:n}),e(this.hasClickListener?"button":"span",this.getSvgWrapperData(),[e("svg",i,[e("path",{attrs:{d:t}})])])},renderSvgIconComponent:function(t,e){var i={class:{"v-icon__component":!0}},n=this.getSize();n&&(i.style={fontSize:n,height:n,width:n}),this.applyColors(i);var r=t.component;return i.props=t.props,i.nativeOn=i.on,e(this.hasClickListener?"button":"span",this.getSvgWrapperData(),[e(r,i)])}},render:function(t){var e=this.getIcon();return"string"===typeof e?te(e)?this.renderSvgIcon(e,t):this.renderFontIcon(e,t):this.renderSvgIconComponent(e,t)}}),ie=m["a"].extend({name:"v-icon",$_wrapperFor:ee,functional:!0,render:function(t,e){var i=e.data,n=e.children,r="";return i.domProps&&(r=i.domProps.textContent||i.domProps.innerHTML||r,delete i.domProps.textContent,delete i.domProps.innerHTML),t(ee,i,r?[r]:n)}}),ne=(i("8a79"),i("8efc"),i("36a7"),Object(z["a"])(k).extend({name:"v-responsive",props:{aspectRatio:[String,Number],contentClass:String},computed:{computedAspectRatio:function(){return Number(this.aspectRatio)},aspectStyle:function(){return this.computedAspectRatio?{paddingBottom:1/this.computedAspectRatio*100+"%"}:void 0},__cachedSizer:function(){return this.aspectStyle?this.$createElement("div",{style:this.aspectStyle,staticClass:"v-responsive__sizer"}):[]}},methods:{genContent:function(){return this.$createElement("div",{staticClass:"v-responsive__content",class:this.contentClass},this.$slots.default)}},render:function(t){return t("div",{staticClass:"v-responsive",style:this.measurableStyles,on:this.$listeners},[this.__cachedSizer,this.genContent()])}})),re=ne,ae="undefined"!==typeof window&&"IntersectionObserver"in window,se=Object(z["a"])(re,E["a"]).extend({name:"v-img",directives:{intersect:F},props:{alt:String,contain:Boolean,eager:Boolean,gradient:String,lazySrc:String,options:{type:Object,default:function(){return{root:void 0,rootMargin:void 0,threshold:void 0}}},position:{type:String,default:"center center"},sizes:String,src:{type:[String,Object],default:""},srcset:String,transition:{type:[Boolean,String],default:"fade-transition"}},data:function(){return{currentSrc:"",image:null,isLoading:!0,calculatedAspectRatio:void 0,naturalWidth:void 0,hasError:!1}},computed:{computedAspectRatio:function(){return Number(this.normalisedSrc.aspect||this.calculatedAspectRatio)},normalisedSrc:function(){return this.src&&"object"===Object(p["a"])(this.src)?{src:this.src.src,srcset:this.srcset||this.src.srcset,lazySrc:this.lazySrc||this.src.lazySrc,aspect:Number(this.aspectRatio||this.src.aspect)}:{src:this.src,srcset:this.srcset,lazySrc:this.lazySrc,aspect:Number(this.aspectRatio||0)}},__cachedImage:function(){if(!(this.normalisedSrc.src||this.normalisedSrc.lazySrc||this.gradient))return[];var t=[],e=this.isLoading?this.normalisedSrc.lazySrc:this.currentSrc;this.gradient&&t.push("linear-gradient(".concat(this.gradient,")")),e&&t.push('url("'.concat(e,'")'));var i=this.$createElement("div",{staticClass:"v-image__image",class:{"v-image__image--preload":this.isLoading,"v-image__image--contain":this.contain,"v-image__image--cover":!this.contain},style:{backgroundImage:t.join(", "),backgroundPosition:this.position},key:+this.isLoading});return this.transition?this.$createElement("transition",{attrs:{name:this.transition,mode:"in-out"}},[i]):i}},watch:{src:function(){this.isLoading?this.loadImage():this.init(void 0,void 0,!0)},"$vuetify.breakpoint.width":"getSrc"},mounted:function(){this.init()},methods:{init:function(t,e,i){if(!ae||i||this.eager){if(this.normalisedSrc.lazySrc){var n=new Image;n.src=this.normalisedSrc.lazySrc,this.pollForSize(n,null)}this.normalisedSrc.src&&this.loadImage()}},onLoad:function(){this.getSrc(),this.isLoading=!1,this.$emit("load",this.src),this.image&&(this.normalisedSrc.src.endsWith(".svg")||this.normalisedSrc.src.startsWith("data:image/svg+xml"))&&(this.image.naturalHeight&&this.image.naturalWidth?(this.naturalWidth=this.image.naturalWidth,this.calculatedAspectRatio=this.image.naturalWidth/this.image.naturalHeight):this.calculatedAspectRatio=1)},onError:function(){this.hasError=!0,this.$emit("error",this.src)},getSrc:function(){this.image&&(this.currentSrc=this.image.currentSrc||this.image.src)},loadImage:function(){var t=this,e=new Image;this.image=e,e.onload=function(){e.decode?e.decode().catch((function(e){Object(S["c"])("Failed to decode image, trying to render anyway\n\n"+"src: ".concat(t.normalisedSrc.src)+(e.message?"\nOriginal error: ".concat(e.message):""),t)})).then(t.onLoad):t.onLoad()},e.onerror=this.onError,this.hasError=!1,this.sizes&&(e.sizes=this.sizes),this.normalisedSrc.srcset&&(e.srcset=this.normalisedSrc.srcset),e.src=this.normalisedSrc.src,this.$emit("loadstart",this.normalisedSrc.src),this.aspectRatio||this.pollForSize(e),this.getSrc()},pollForSize:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=function n(){var r=t.naturalHeight,a=t.naturalWidth;r||a?(e.naturalWidth=a,e.calculatedAspectRatio=a/r):t.complete||!e.isLoading||e.hasError||null==i||setTimeout(n,i)};n()},genContent:function(){var t=re.options.methods.genContent.call(this);return this.naturalWidth&&this._b(t.data,"div",{style:{width:"".concat(this.naturalWidth,"px")}}),t},__genPlaceholder:function(){if(this.$slots.placeholder){var t=this.isLoading?[this.$createElement("div",{staticClass:"v-image__placeholder"},this.$slots.placeholder)]:[];return this.transition?this.$createElement("transition",{props:{appear:!0,name:this.transition}},t):t[0]}}},render:function(t){var e=re.options.render.call(this,t),i=xt(e.data,{staticClass:"v-image",attrs:{"aria-label":this.alt,role:this.alt?"img":void 0},class:this.themeClasses,directives:ae?[{name:"intersect",modifiers:{once:!0},value:{handler:this.init,options:this.options}}]:void 0});return e.children=[this.__cachedSizer,this.__cachedImage,this.__genPlaceholder(),this.genContent()],t(e.tag,i,e.children)}}),oe=["sm","md","lg","xl"],ce=["start","end","center"];function le(t,e){return oe.reduce((function(i,n){return i[t+Object(O["o"])(n)]=e(),i}),{})}var ue=function(t){return[].concat(ce,["baseline","stretch"]).includes(t)},he=le("align",(function(){return{type:String,default:null,validator:ue}})),de=function(t){return[].concat(ce,["space-between","space-around"]).includes(t)},fe=le("justify",(function(){return{type:String,default:null,validator:de}})),pe=function(t){return[].concat(ce,["space-between","space-around","stretch"]).includes(t)},ve=le("alignContent",(function(){return{type:String,default:null,validator:pe}})),ge={align:Object.keys(he),justify:Object.keys(fe),alignContent:Object.keys(ve)},me={align:"align",justify:"justify",alignContent:"align-content"};function be(t,e,i){var n=me[t];if(null!=i){if(e){var r=e.replace(t,"");n+="-".concat(r)}return n+="-".concat(i),n.toLowerCase()}}var ye=new Map,_e=m["a"].extend({name:"v-row",functional:!0,props:Object(g["a"])(Object(g["a"])(Object(g["a"])({tag:{type:String,default:"div"},dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:ue}},he),{},{justify:{type:String,default:null,validator:de}},fe),{},{alignContent:{type:String,default:null,validator:pe}},ve),render:function(t,e){var i=e.props,n=e.data,r=e.children,a="";for(var s in i)a+=String(i[s]);var o=ye.get(a);return o||function(){var t,e;for(e in o=[],ge)ge[e].forEach((function(t){var n=i[t],r=be(e,t,n);r&&o.push(r)}));o.push((t={"no-gutters":i.noGutters,"row--dense":i.dense},Object(_["a"])(t,"align-".concat(i.align),i.align),Object(_["a"])(t,"justify-".concat(i.justify),i.justify),Object(_["a"])(t,"align-content-".concat(i.alignContent),i.alignContent),t)),ye.set(a,o)}(),t(i.tag,xt(n,{staticClass:"row",class:o}),r)}}),Se=(i("0bc6"),Object(z["a"])(E["a"]).extend({name:"v-subheader",props:{inset:Boolean},render:function(t){return t("div",{staticClass:"v-subheader",class:Object(g["a"])({"v-subheader--inset":this.inset},this.themeClasses),attrs:this.$attrs,on:this.$listeners},this.$slots.default)}})),xe=Object(h["a"])(u,n,r,!1,null,"6003c7cf",null);e["default"]=xe.exports;f()(xe,{VBtn:yt,VCard:It,VCardActions:At,VCardText:Wt,VCol:Xt,VContainer:Qt,VIcon:ie,VImg:se,VProgressLinear:Rt,VRow:_e,VSubheader:Se})},c7cd:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("fixed")},{fixed:function(){return r(this,"tt","","")}})},c96a:function(t,e,i){"use strict";var n=i("23e7"),r=i("857a"),a=i("af03");n({target:"String",proto:!0,forced:a("small")},{small:function(){return r(this,"small","","")}})},f5f2:function(t){t.exports=JSON.parse('{"jak1":{"fileProgress":{"src_files_total":514,"src_files_finished":77,"src_files_started":174,"data_files_total":584,"data_files_started":4}}}')}}]); +//# sourceMappingURL=about.aa90f682.js.map \ No newline at end of file diff --git a/docs/js/about.a4656f69.js.map b/docs/js/about.aa90f682.js.map similarity index 99% rename from docs/js/about.a4656f69.js.map rename to docs/js/about.aa90f682.js.map index 1ea874bd4b..42fc559c32 100644 --- a/docs/js/about.a4656f69.js.map +++ b/docs/js/about.aa90f682.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.array.flat.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./src/assets/img/logo-text-colored.png","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///./src/views/Home.vue?6e6e","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/modules/es.string.link.js","webpack:///./node_modules/core-js/internals/flatten-into-array.js","webpack:///./src/views/Home.vue?3361","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./src/progress.js","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?493c","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///../../../src/mixins/colorable/index.ts","webpack:///../../../src/mixins/elevatable/index.ts","webpack:///../../../src/mixins/measurable/index.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///../../../src/mixins/roundable/index.ts","webpack:///../../../src/components/VSheet/VSheet.ts","webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///../../../src/mixins/registrable/index.ts","webpack:///../../../src/mixins/groupable/index.ts","webpack:///../../../src/mixins/toggleable/index.ts","webpack:///../../../src/mixins/positionable/index.ts","webpack:///../../../src/directives/ripple/index.ts","webpack:///../../../src/mixins/routable/index.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../../src/components/VBtn/VBtn.ts","webpack:///../../src/util/mergeData.ts","webpack:///../../../src/components/transitions/createTransition.ts","webpack:///../../../src/components/transitions/expand-transition.ts","webpack:///../../../src/components/transitions/index.ts","webpack:///../../../src/mixins/proxyable/index.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///../../../src/mixins/loadable/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///./src/views/Home.vue?1dce","webpack:///./node_modules/core-js/modules/es.string.fixed.js","webpack:///./node_modules/core-js/modules/es.string.small.js"],"names":["$","flattenIntoArray","toObject","toLength","toInteger","arraySpeciesCreate","target","proto","flat","depthArg","arguments","length","undefined","O","this","sourceLen","A","collection","collectionStrong","module","exports","init","defineProperty","f","create","redefineAll","bind","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","set","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","C","that","iterable","type","index","first","last","size","AS_ENTRIES","getInternalState","define","key","value","previous","state","entry","getEntry","next","removed","prototype","clear","data","prev","forEach","callbackfn","boundFunction","has","get","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","done","global","isForced","redefine","InternalMetadataModule","isObject","fails","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","indexOf","IS_WEAK","NativeConstructor","NativePrototype","Constructor","exported","fixMethod","KEY","nativeMethod","call","REPLACE","entries","enable","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","constructor","forced","getOwnPropertyDescriptor","toString","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","$endsWith","endsWith","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","String","writable","searchString","endPosition","len","end","search","slice","runtime","Op","Object","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","obj","enumerable","configurable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","__await","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iteratorMethod","isNaN","i","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","object","reverse","pop","skipTempReset","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","createHTML","forcedStringHTMLMethod","link","url","isArray","original","source","start","depth","mapper","thisArg","element","targetIndex","sourceIndex","mapFn","_vm","_h","$createElement","_c","_self","attrs","staticClass","_v","staticStyle","jak1BlackLabelStatus","srcFilesFinishedValue","_s","srcFilesFinished","srcFilesTotal","srcFilesStartedValue","srcFilesStarted","dataFilesStartedValue","dataFilesStarted","dataFilesTotal","_l","pr","title","user","login","body","html_url","staticRenderFns","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","apply","projectProgress","require","components","recentPRs","mounted","methods","truncateString","str","num","loadRecentPRs","makeWatcher","$data","val","attrs$","listeners$","created","immediate","props","color","setBackgroundColor","console","setTextColor","colorName","elevation","Number","computed","computedElevation","elevationClasses","parseInt","height","maxHeight","maxWidth","minHeight","minWidth","width","measurableStyles","styles","_createForOfIteratorHelper","o","allowArrayLike","it","Array","unsupportedIterableToArray","F","s","n","e","_e","normalCompletion","didErr","step","_e2","rounded","Boolean","tile","roundedClasses","composite","mixins","outlined","shaped","tag","default","classes","render","class","style","on","h","$slots","inserted","window","modifiers","binding","handler","options","observer","IntersectionObserver","el","isIntersecting","unbind","observe","Intersect","directives","intersect","button","indeterminate","rotate","radius","isVisible","calculatedSize","circumference","normalizedValue","parseFloat","strokeDashArray","strokeDashOffset","strokeWidth","svgStyles","transform","viewBoxSize","genCircle","fill","cx","cy","r","offset","genSvg","children","xmlns","viewBox","genInfo","onObserve","role","$listeners","generateWarning","child","defaultImpl","register","unregister","parent","inject","activeClass","namespace","disabled","isActive","groupClasses","beforeDestroy","toggle","factory","prop","event","model","required","watch","$emit","availableProps","absolute","bottom","fixed","left","right","top","selected","rippleStop","DELAY_RIPPLE","opacity","isTouchEvent","isKeyboardEvent","calculate","localX","localY","scale","centerX","centerY","x","y","ripples","show","container","document","animation","performance","setTimeout","hide","diff","delay","isRippleEnabled","rippleShow","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyboardRippleHide","focusRippleHide","updateRipple","enabled","passive","removeListeners","directive","update","wasEnabled","Ripple","append","exact","exactPath","exactActiveClass","href","to","nuxt","replace","ripple","proxyClass","computedRipple","isClickable","isLink","$attrs","$route","click","generateRouteLink","tabindex","path","onRouteChange","$refs","large","small","xLarge","xSmall","medium","sizeableClasses","baseMixins","btnToggle","block","depressed","fab","icon","loading","plain","retainFocusOnClick","text","defaultRipple","circle","hasBg","isElevated","isRound","breakingProps","replacement","$el","genContent","genLoader","loader","setColor","includes","JSON","pattern","styleList","styleProp","parseStyle","styleMap","mergeTarget","mergeClasses","mergeStyles","mergeListeners","dest","mergeTransitions","origin","functional","group","hideOnLeave","leaveAbsolute","mode","beforeEnter","offsetHeight","position","offsetTop","offsetLeft","offsetWidth","mergeData","functions","expandedParentClass","sizeProperty","offsetProperty","transition","overflow","enter","initialStyle","requestAnimationFrame","afterEnter","enterCancelled","leave","afterLeave","leaveCancelled","resetStyles","VFadeTransition","createSimpleTransition","VSlideXTransition","createJavascriptTransition","internalLazyValue","internalValue","Proxyable","active","backgroundColor","backgroundOpacity","bufferValue","query","stream","striped","__cachedBackground","backgroundStyle","__cachedBar","__cachedBarType","__cachedBuffer","__cachedDeterminate","__cachedIndeterminate","genProgressBar","__cachedStream","isReversed","normalizedBuffer","themeClasses","computedTransition","$vuetify","rtl","normalize","reactive","slot","genListeners","listeners","onClick","loaderHeight","genProgress","progress","hover","img","raised","VCardActions","VCardText","breakpoints","breakpointProps","offsetProps","orderProps","propMap","col","order","breakpointClass","className","breakpoint","cache","cols","alignSelf","validator","cacheKey","classList","hasColClasses","id","fluid","isFontAwesome5","some","iconType","isSvgPath","test","SIZE_MAP","dense","hasClickListener","getIcon","iconName","getSize","sizes","explicitSize","getDefaultData","getSvgWrapperData","fontSize","wrapperData","applyColors","renderFontIcon","newChildren","delimiterIndex","isMaterialIcon","renderSvgIcon","svgData","d","renderSvgIconComponent","component","$_wrapperFor","aspectRatio","contentClass","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","hasIntersect","alt","contain","eager","gradient","lazySrc","root","rootMargin","threshold","src","srcset","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","loadImage","lazyImg","onLoad","startsWith","naturalHeight","onError","getSrc","pollForSize","timeout","poll","content","__genPlaceholder","placeholder","appear","node","once","ALIGNMENT","makeProps","prefix","def","alignValidator","alignProps","justifyValidator","justifyProps","alignContentValidator","alignContentProps","align","justify","alignContent","classMap","noGutters","inset","VBtn","VCard","VCol","VContainer","VIcon","VImg","VProgressLinear","VRow","VSubheader"],"mappings":"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","file":"js/about.a4656f69.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","module.exports = __webpack_public_path__ + \"img/logo-text-colored.5cda006b.png\";","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar $endsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=6003c7cf&scoped=true&lang=css&\"","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{staticClass:\"bg-img\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"align\":\"center\"}},[_c('v-img',{attrs:{\"max-height\":\"150\",\"max-width\":\"250\",\"src\":require(\"@/assets/img/logo-text-colored.png\")}}),_c('br'),_c('h4',[_vm._v(\" Reviving the Language that Brought us the Jak & Daxter Series \")]),_c('br'),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"#project-status\",\"rounded\":\"\",\"color\":\"primary\"}},[_c('v-icon',[_vm._v(\"mdi-calendar-check\")]),_vm._v(\" Project Status \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"rounded\":\"\",\"color\":\"secondary\",\"href\":\"#recent-updates\"}},[_c('v-icon',[_vm._v(\"mdi-update\")]),_vm._v(\" Recent Updates \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"/jak-project/api-docs.html\",\"target\":\"_blank\",\"rounded\":\"\",\"color\":\"deep-purple\"}},[_c('v-icon',[_vm._v(\"mdi-file-document\")]),_vm._v(\" Documentation \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"https://github.com/water111/jak-project\",\"target\":\"_blank\",\"rounded\":\"\",\"color\":\"accent\"}},[_c('v-icon',[_vm._v(\"mdi-git\")]),_vm._v(\" Contribute \")],1)],1)],1)],1)],1),_c('v-row',[_c('v-container',[_c('v-row',{staticStyle:{\"margin-top\":\"3em\"},attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h1',{staticClass:\"orange--text text--darken-1\",attrs:{\"id\":\"project-status\"}},[_vm._v(\" Project Status \")])])],1),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h2',{staticClass:\"orange--text text--lighten-3\"},[_vm._v(\"Jak 1 - Black Label\")])])],1),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('v-subheader',[_vm._v(\"Decompilation\")]),_c('v-progress-linear',{attrs:{\"color\":\"green\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.srcFilesFinishedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Source Files Finished - \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesFinished)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesTotal)+\" \")]),_c('br'),_c('v-progress-linear',{attrs:{\"color\":\"yellow\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.srcFilesStartedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Source Files Started - \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesStarted)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesTotal)+\" \")]),_c('br'),_c('v-progress-linear',{attrs:{\"color\":\"teal\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.dataFilesStartedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Data Files Started - \"+_vm._s(_vm.jak1BlackLabelStatus.dataFilesStarted)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.dataFilesTotal)+\" \")])],1)],1),_c('v-row',{staticStyle:{\"margin-top\":\"5em\"},attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h1',{staticClass:\"orange--text text--darken-1\",attrs:{\"id\":\"recent-updates\"}},[_vm._v(\" Recent Updates \")])])],1),_c('v-row',{staticStyle:{\"margin-bottom\":\"10em\"},attrs:{\"justify\":\"center\"}},_vm._l((_vm.recentPRs),function(pr,index){return _c('v-col',{key:'pr' - index,attrs:{\"cols\":\"4\"}},[_c('v-card',[_c('v-card-text',{staticStyle:{\"overflow-y\":\"auto\",\"height\":\"300px\"}},[_c('p',{staticClass:\"text-h5 orange--text text--lighten-3\"},[_vm._v(\" \"+_vm._s(pr.title)+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(pr.user.login)+\" \")]),_c('div',{staticClass:\"text--primary\"},[_c('pre',{staticClass:\"wrapped-pre\"},[_vm._v(_vm._s(pr.body))])])]),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"accent\",\"href\":pr.html_url,\"target\":\"_blank\"}},[_vm._v(\" View Change \")])],1)],1)],1)}),1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","const projectProgress = require('./config/progress.json')\n\nexport default projectProgress\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import Vue, { WatchHandler } from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & WatchHandler {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","import { VNodeDirective } from 'vue/types/vnode'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n /* istanbul ignore if */\n if (!el._observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n el._observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n !el._observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el)\n else el._observe.init = true\n }, options)\n\n el._observe = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement) {\n /* istanbul ignore if */\n if (!el._observe) return\n\n el._observe.observer.unobserve(el)\n delete el._observe\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable = VueConstructor : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable = VueConstructor> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable {\n return RegistrableInject(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Toggleable\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record\n\nexport type Positionable = VueConstructor\n\nexport function factory (selected?: S[]): Positionable\nexport function factory (selected: undefined): OptionsVue\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\nconst rippleStop = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [rippleStop]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nfunction opacity (el: HTMLElement, value: number) {\n el.style.opacity = value.toString()\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n opacity(animation, 0)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n opacity(animation, 0.25)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n opacity(animation, 0)\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e[rippleStop]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[rippleStop] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n },\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n click: this.click,\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass} ${this.proxyClass || ''}`.trim()\n\n const path = `_vnode.data.class.${activeClass}`\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (getObjectValueByPath(this.$refs.link, path)) {\n this.toggle()\n }\n })\n },\n toggle: () => { /* noop */ },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n (el as any)._initialDisplay = el.style.display\n el.style.display = 'none'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el) el.style.display = (el as any)._initialDisplay || ''\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Proxyable\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n if (this.$slots.placeholder) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, this.$slots.placeholder)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=6003c7cf&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=6003c7cf&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6003c7cf\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VContainer,VIcon,VImg,VProgressLinear,VRow,VSubheader})\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n small: function small() {\n return createHTML(this, 'small', '', '');\n }\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.array.flat.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./src/assets/img/logo-text-colored.png","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///./src/views/Home.vue?6e6e","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/modules/es.string.link.js","webpack:///./node_modules/core-js/internals/flatten-into-array.js","webpack:///./src/views/Home.vue?00f9","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./src/progress.js","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?493c","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///../../../src/mixins/colorable/index.ts","webpack:///../../../src/mixins/elevatable/index.ts","webpack:///../../../src/mixins/measurable/index.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///../../../src/mixins/roundable/index.ts","webpack:///../../../src/components/VSheet/VSheet.ts","webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///../../../src/mixins/registrable/index.ts","webpack:///../../../src/mixins/groupable/index.ts","webpack:///../../../src/mixins/toggleable/index.ts","webpack:///../../../src/mixins/positionable/index.ts","webpack:///../../../src/directives/ripple/index.ts","webpack:///../../../src/mixins/routable/index.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../../src/components/VBtn/VBtn.ts","webpack:///../../src/util/mergeData.ts","webpack:///../../../src/components/transitions/createTransition.ts","webpack:///../../../src/components/transitions/expand-transition.ts","webpack:///../../../src/components/transitions/index.ts","webpack:///../../../src/mixins/proxyable/index.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///../../../src/mixins/loadable/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///./src/views/Home.vue?1dce","webpack:///./node_modules/core-js/modules/es.string.fixed.js","webpack:///./node_modules/core-js/modules/es.string.small.js"],"names":["$","flattenIntoArray","toObject","toLength","toInteger","arraySpeciesCreate","target","proto","flat","depthArg","arguments","length","undefined","O","this","sourceLen","A","collection","collectionStrong","module","exports","init","defineProperty","f","create","redefineAll","bind","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","set","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","C","that","iterable","type","index","first","last","size","AS_ENTRIES","getInternalState","define","key","value","previous","state","entry","getEntry","next","removed","prototype","clear","data","prev","forEach","callbackfn","boundFunction","has","get","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","done","global","isForced","redefine","InternalMetadataModule","isObject","fails","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","indexOf","IS_WEAK","NativeConstructor","NativePrototype","Constructor","exported","fixMethod","KEY","nativeMethod","call","REPLACE","entries","enable","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","constructor","forced","getOwnPropertyDescriptor","toString","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","$endsWith","endsWith","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","String","writable","searchString","endPosition","len","end","search","slice","runtime","Op","Object","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","obj","enumerable","configurable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","__await","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iteratorMethod","isNaN","i","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","object","reverse","pop","skipTempReset","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","createHTML","forcedStringHTMLMethod","link","url","isArray","original","source","start","depth","mapper","thisArg","element","targetIndex","sourceIndex","mapFn","_vm","_h","$createElement","_c","_self","attrs","staticClass","_v","staticStyle","jak1BlackLabelStatus","srcFilesFinishedValue","_s","srcFilesFinished","srcFilesTotal","srcFilesStartedValue","srcFilesStarted","dataFilesStartedValue","dataFilesStarted","dataFilesTotal","_l","pr","title","user","login","body","html_url","staticRenderFns","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","apply","projectProgress","require","components","recentPRs","mounted","methods","truncateString","str","num","loadRecentPRs","makeWatcher","$data","val","attrs$","listeners$","created","immediate","props","color","setBackgroundColor","console","setTextColor","colorName","elevation","Number","computed","computedElevation","elevationClasses","parseInt","height","maxHeight","maxWidth","minHeight","minWidth","width","measurableStyles","styles","_createForOfIteratorHelper","o","allowArrayLike","it","Array","unsupportedIterableToArray","F","s","n","e","_e","normalCompletion","didErr","step","_e2","rounded","Boolean","tile","roundedClasses","composite","mixins","outlined","shaped","tag","default","classes","render","class","style","on","h","$slots","inserted","window","modifiers","binding","handler","options","observer","IntersectionObserver","el","isIntersecting","unbind","observe","Intersect","directives","intersect","button","indeterminate","rotate","radius","isVisible","calculatedSize","circumference","normalizedValue","parseFloat","strokeDashArray","strokeDashOffset","strokeWidth","svgStyles","transform","viewBoxSize","genCircle","fill","cx","cy","r","offset","genSvg","children","xmlns","viewBox","genInfo","onObserve","role","$listeners","generateWarning","child","defaultImpl","register","unregister","parent","inject","activeClass","namespace","disabled","isActive","groupClasses","beforeDestroy","toggle","factory","prop","event","model","required","watch","$emit","availableProps","absolute","bottom","fixed","left","right","top","selected","rippleStop","DELAY_RIPPLE","opacity","isTouchEvent","isKeyboardEvent","calculate","localX","localY","scale","centerX","centerY","x","y","ripples","show","container","document","animation","performance","setTimeout","hide","diff","delay","isRippleEnabled","rippleShow","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyboardRippleHide","focusRippleHide","updateRipple","enabled","passive","removeListeners","directive","update","wasEnabled","Ripple","append","exact","exactPath","exactActiveClass","href","to","nuxt","replace","ripple","proxyClass","computedRipple","isClickable","isLink","$attrs","$route","click","generateRouteLink","tabindex","path","onRouteChange","$refs","large","small","xLarge","xSmall","medium","sizeableClasses","baseMixins","btnToggle","block","depressed","fab","icon","loading","plain","retainFocusOnClick","text","defaultRipple","circle","hasBg","isElevated","isRound","breakingProps","replacement","$el","genContent","genLoader","loader","setColor","includes","JSON","pattern","styleList","styleProp","parseStyle","styleMap","mergeTarget","mergeClasses","mergeStyles","mergeListeners","dest","mergeTransitions","origin","functional","group","hideOnLeave","leaveAbsolute","mode","beforeEnter","offsetHeight","position","offsetTop","offsetLeft","offsetWidth","mergeData","functions","expandedParentClass","sizeProperty","offsetProperty","transition","overflow","enter","initialStyle","requestAnimationFrame","afterEnter","enterCancelled","leave","afterLeave","leaveCancelled","resetStyles","VFadeTransition","createSimpleTransition","VSlideXTransition","createJavascriptTransition","internalLazyValue","internalValue","Proxyable","active","backgroundColor","backgroundOpacity","bufferValue","query","stream","striped","__cachedBackground","backgroundStyle","__cachedBar","__cachedBarType","__cachedBuffer","__cachedDeterminate","__cachedIndeterminate","genProgressBar","__cachedStream","isReversed","normalizedBuffer","themeClasses","computedTransition","$vuetify","rtl","normalize","reactive","slot","genListeners","listeners","onClick","loaderHeight","genProgress","progress","hover","img","raised","VCardActions","VCardText","breakpoints","breakpointProps","offsetProps","orderProps","propMap","col","order","breakpointClass","className","breakpoint","cache","cols","alignSelf","validator","cacheKey","classList","hasColClasses","id","fluid","isFontAwesome5","some","iconType","isSvgPath","test","SIZE_MAP","dense","hasClickListener","getIcon","iconName","getSize","sizes","explicitSize","getDefaultData","getSvgWrapperData","fontSize","wrapperData","applyColors","renderFontIcon","newChildren","delimiterIndex","isMaterialIcon","renderSvgIcon","svgData","d","renderSvgIconComponent","component","$_wrapperFor","aspectRatio","contentClass","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","hasIntersect","alt","contain","eager","gradient","lazySrc","root","rootMargin","threshold","src","srcset","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","loadImage","lazyImg","onLoad","startsWith","naturalHeight","onError","getSrc","pollForSize","timeout","poll","content","__genPlaceholder","placeholder","appear","node","once","ALIGNMENT","makeProps","prefix","def","alignValidator","alignProps","justifyValidator","justifyProps","alignContentValidator","alignContentProps","align","justify","alignContent","classMap","noGutters","inset","VBtn","VCard","VCol","VContainer","VIcon","VImg","VProgressLinear","VRow","VSubheader"],"mappings":"yGACA,IAAIA,EAAI,EAAQ,QACZC,EAAmB,EAAQ,QAC3BC,EAAW,EAAQ,QACnBC,EAAW,EAAQ,QACnBC,EAAY,EAAQ,QACpBC,EAAqB,EAAQ,QAIjCL,EAAE,CAAEM,OAAQ,QAASC,OAAO,GAAQ,CAClCC,KAAM,WACJ,IAAIC,EAAWC,UAAUC,OAASD,UAAU,QAAKE,EAC7CC,EAAIX,EAASY,MACbC,EAAYZ,EAASU,EAAEF,QACvBK,EAAIX,EAAmBQ,EAAG,GAE9B,OADAG,EAAEL,OAASV,EAAiBe,EAAGH,EAAGA,EAAGE,EAAW,OAAgBH,IAAbH,EAAyB,EAAIL,EAAUK,IACnFO,M,wLChBX,IAAIC,EAAa,EAAQ,QACrBC,EAAmB,EAAQ,QAI/BC,EAAOC,QAAUH,EAAW,OAAO,SAAUI,GAC3C,OAAO,WAAiB,OAAOA,EAAKP,KAAMJ,UAAUC,OAASD,UAAU,QAAKE,MAC3EM,I,2DCPH,IAAII,EAAiB,EAAQ,QAAuCC,EAChEC,EAAS,EAAQ,QACjBC,EAAc,EAAQ,QACtBC,EAAO,EAAQ,QACfC,EAAa,EAAQ,QACrBC,EAAU,EAAQ,QAClBC,EAAiB,EAAQ,QACzBC,EAAa,EAAQ,QACrBC,EAAc,EAAQ,QACtBC,EAAU,EAAQ,QAAkCA,QACpDC,EAAsB,EAAQ,QAE9BC,EAAmBD,EAAoBE,IACvCC,EAAyBH,EAAoBI,UAEjDlB,EAAOC,QAAU,CACfkB,eAAgB,SAAUC,EAASC,EAAkBC,EAAQC,GAC3D,IAAIC,EAAIJ,GAAQ,SAAUK,EAAMC,GAC9BlB,EAAWiB,EAAMD,EAAGH,GACpBN,EAAiBU,EAAM,CACrBE,KAAMN,EACNO,MAAOvB,EAAO,MACdwB,WAAOpC,EACPqC,UAAMrC,EACNsC,KAAM,IAEHnB,IAAaa,EAAKM,KAAO,QACdtC,GAAZiC,GAAuBjB,EAAQiB,EAAUD,EAAKF,GAAQ,CAAEE,KAAMA,EAAMO,WAAYV,OAGlFW,EAAmBhB,EAAuBI,GAE1Ca,EAAS,SAAUT,EAAMU,EAAKC,GAChC,IAEIC,EAAUT,EAFVU,EAAQL,EAAiBR,GACzBc,EAAQC,EAASf,EAAMU,GAqBzB,OAlBEI,EACFA,EAAMH,MAAQA,GAGdE,EAAMR,KAAOS,EAAQ,CACnBX,MAAOA,EAAQf,EAAQsB,GAAK,GAC5BA,IAAKA,EACLC,MAAOA,EACPC,SAAUA,EAAWC,EAAMR,KAC3BW,UAAMhD,EACNiD,SAAS,GAENJ,EAAMT,QAAOS,EAAMT,MAAQU,GAC5BF,IAAUA,EAASI,KAAOF,GAC1B3B,EAAa0B,EAAMP,OAClBN,EAAKM,OAEI,MAAVH,IAAeU,EAAMV,MAAMA,GAASW,IACjCd,GAGPe,EAAW,SAAUf,EAAMU,GAC7B,IAGII,EAHAD,EAAQL,EAAiBR,GAEzBG,EAAQf,EAAQsB,GAEpB,GAAc,MAAVP,EAAe,OAAOU,EAAMV,MAAMA,GAEtC,IAAKW,EAAQD,EAAMT,MAAOU,EAAOA,EAAQA,EAAME,KAC7C,GAAIF,EAAMJ,KAAOA,EAAK,OAAOI,GAwFjC,OApFAjC,EAAYkB,EAAEmB,UAAW,CAIvBC,MAAO,WACL,IAAInB,EAAO9B,KACP2C,EAAQL,EAAiBR,GACzBoB,EAAOP,EAAMV,MACbW,EAAQD,EAAMT,MAClB,MAAOU,EACLA,EAAMG,SAAU,EACZH,EAAMF,WAAUE,EAAMF,SAAWE,EAAMF,SAASI,UAAOhD,UACpDoD,EAAKN,EAAMX,OAClBW,EAAQA,EAAME,KAEhBH,EAAMT,MAAQS,EAAMR,UAAOrC,EACvBmB,EAAa0B,EAAMP,KAAO,EACzBN,EAAKM,KAAO,GAKnB,OAAU,SAAUI,GAClB,IAAIV,EAAO9B,KACP2C,EAAQL,EAAiBR,GACzBc,EAAQC,EAASf,EAAMU,GAC3B,GAAII,EAAO,CACT,IAAIE,EAAOF,EAAME,KACbK,EAAOP,EAAMF,gBACVC,EAAMV,MAAMW,EAAMX,OACzBW,EAAMG,SAAU,EACZI,IAAMA,EAAKL,KAAOA,GAClBA,IAAMA,EAAKJ,SAAWS,GACtBR,EAAMT,OAASU,IAAOD,EAAMT,MAAQY,GACpCH,EAAMR,MAAQS,IAAOD,EAAMR,KAAOgB,GAClClC,EAAa0B,EAAMP,OAClBN,EAAKM,OACV,QAASQ,GAKbQ,QAAS,SAAiBC,GACxB,IAEIT,EAFAD,EAAQL,EAAiBtC,MACzBsD,EAAgB1C,EAAKyC,EAAYzD,UAAUC,OAAS,EAAID,UAAU,QAAKE,EAAW,GAEtF,MAAO8C,EAAQA,EAAQA,EAAME,KAAOH,EAAMT,MAAO,CAC/CoB,EAAcV,EAAMH,MAAOG,EAAMJ,IAAKxC,MAEtC,MAAO4C,GAASA,EAAMG,QAASH,EAAQA,EAAMF,WAMjDa,IAAK,SAAaf,GAChB,QAASK,EAAS7C,KAAMwC,MAI5B7B,EAAYkB,EAAEmB,UAAWrB,EAAS,CAGhC6B,IAAK,SAAahB,GAChB,IAAII,EAAQC,EAAS7C,KAAMwC,GAC3B,OAAOI,GAASA,EAAMH,OAIxBpB,IAAK,SAAamB,EAAKC,GACrB,OAAOF,EAAOvC,KAAc,IAARwC,EAAY,EAAIA,EAAKC,KAEzC,CAGFgB,IAAK,SAAahB,GAChB,OAAOF,EAAOvC,KAAMyC,EAAkB,IAAVA,EAAc,EAAIA,EAAOA,MAGrDxB,GAAaT,EAAeqB,EAAEmB,UAAW,OAAQ,CACnDQ,IAAK,WACH,OAAOlB,EAAiBtC,MAAMoC,QAG3BP,GAET6B,UAAW,SAAU7B,EAAGH,EAAkBC,GACxC,IAAIgC,EAAgBjC,EAAmB,YACnCkC,EAA6BtC,EAAuBI,GACpDmC,EAA2BvC,EAAuBqC,GAUtD5C,EAAec,EAAGH,GAAkB,SAAUoC,EAAUC,GACtD3C,EAAiBpB,KAAM,CACrBgC,KAAM2B,EACNnE,OAAQsE,EACRnB,MAAOiB,EAA2BE,GAClCC,KAAMA,EACN5B,UAAMrC,OAEP,WACD,IAAI6C,EAAQkB,EAAyB7D,MACjC+D,EAAOpB,EAAMoB,KACbnB,EAAQD,EAAMR,KAElB,MAAOS,GAASA,EAAMG,QAASH,EAAQA,EAAMF,SAE7C,OAAKC,EAAMnD,SAAYmD,EAAMR,KAAOS,EAAQA,EAAQA,EAAME,KAAOH,EAAMA,MAAMT,OAMjE,QAAR6B,EAAuB,CAAEtB,MAAOG,EAAMJ,IAAKwB,MAAM,GACzC,UAARD,EAAyB,CAAEtB,MAAOG,EAAMH,MAAOuB,MAAM,GAClD,CAAEvB,MAAO,CAACG,EAAMJ,IAAKI,EAAMH,OAAQuB,MAAM,IAN9CrB,EAAMnD,YAASM,EACR,CAAE2C,WAAO3C,EAAWkE,MAAM,MAMlCrC,EAAS,UAAY,UAAWA,GAAQ,GAK3CX,EAAWU,M,oCCtMf,IAAIxC,EAAI,EAAQ,QACZ+E,EAAS,EAAQ,QACjBC,EAAW,EAAQ,QACnBC,EAAW,EAAQ,QACnBC,EAAyB,EAAQ,QACjCtD,EAAU,EAAQ,QAClBD,EAAa,EAAQ,QACrBwD,EAAW,EAAQ,QACnBC,EAAQ,EAAQ,QAChBC,EAA8B,EAAQ,QACtCC,EAAiB,EAAQ,QACzBC,EAAoB,EAAQ,QAEhCpE,EAAOC,QAAU,SAAUoB,EAAkBD,EAASiD,GACpD,IAAI/C,GAA8C,IAArCD,EAAiBiD,QAAQ,OAClCC,GAAgD,IAAtClD,EAAiBiD,QAAQ,QACnC/C,EAAQD,EAAS,MAAQ,MACzBkD,EAAoBZ,EAAOvC,GAC3BoD,EAAkBD,GAAqBA,EAAkB7B,UACzD+B,EAAcF,EACdG,EAAW,GAEXC,EAAY,SAAUC,GACxB,IAAIC,EAAeL,EAAgBI,GACnCf,EAASW,EAAiBI,EACjB,OAAPA,EAAe,SAAazC,GAE1B,OADA0C,EAAaC,KAAKpF,KAAgB,IAAVyC,EAAc,EAAIA,GACnCzC,MACE,UAAPkF,EAAkB,SAAU1C,GAC9B,QAAOoC,IAAYP,EAAS7B,KAAe2C,EAAaC,KAAKpF,KAAc,IAARwC,EAAY,EAAIA,IAC1E,OAAP0C,EAAe,SAAa1C,GAC9B,OAAOoC,IAAYP,EAAS7B,QAAO1C,EAAYqF,EAAaC,KAAKpF,KAAc,IAARwC,EAAY,EAAIA,IAC9E,OAAP0C,EAAe,SAAa1C,GAC9B,QAAOoC,IAAYP,EAAS7B,KAAe2C,EAAaC,KAAKpF,KAAc,IAARwC,EAAY,EAAIA,IACjF,SAAaA,EAAKC,GAEpB,OADA0C,EAAaC,KAAKpF,KAAc,IAARwC,EAAY,EAAIA,EAAKC,GACtCzC,QAKTqF,EAAUnB,EACZxC,EAC4B,mBAArBmD,KAAqCD,GAAWE,EAAgB1B,UAAYkB,GAAM,YACvF,IAAIO,GAAoBS,UAAUxC,YAItC,GAAIuC,EAEFN,EAAcL,EAAOlD,eAAeC,EAASC,EAAkBC,EAAQC,GACvEwC,EAAuBmB,cAClB,GAAIrB,EAASxC,GAAkB,GAAO,CAC3C,IAAI8D,EAAW,IAAIT,EAEfU,EAAiBD,EAAS5D,GAAOgD,EAAU,IAAM,EAAG,IAAMY,EAE1DE,EAAuBpB,GAAM,WAAckB,EAASjC,IAAI,MAGxDoC,EAAmBpB,GAA4B,SAAUxC,GAAY,IAAI8C,EAAkB9C,MAE3F6D,GAAchB,GAAWN,GAAM,WAEjC,IAAIuB,EAAY,IAAIhB,EAChB5C,EAAQ,EACZ,MAAOA,IAAS4D,EAAUjE,GAAOK,EAAOA,GACxC,OAAQ4D,EAAUtC,KAAK,MAGpBoC,IACHZ,EAActD,GAAQ,SAAUqE,EAAO/D,GACrClB,EAAWiF,EAAOf,EAAarD,GAC/B,IAAII,EAAO2C,EAAkB,IAAII,EAAqBiB,EAAOf,GAE7D,YADgBjF,GAAZiC,GAAuBjB,EAAQiB,EAAUD,EAAKF,GAAQ,CAAEE,KAAMA,EAAMO,WAAYV,IAC7EG,KAETiD,EAAY/B,UAAY8B,EACxBA,EAAgBiB,YAAchB,IAG5BW,GAAwBE,KAC1BX,EAAU,UACVA,EAAU,OACVtD,GAAUsD,EAAU,SAGlBW,GAAcH,IAAgBR,EAAUrD,GAGxCgD,GAAWE,EAAgB7B,cAAc6B,EAAgB7B,MAU/D,OAPA+B,EAAStD,GAAoBqD,EAC7B7F,EAAE,CAAE+E,QAAQ,EAAM+B,OAAQjB,GAAeF,GAAqBG,GAE9DR,EAAeO,EAAarD,GAEvBkD,GAASF,EAAOhB,UAAUqB,EAAarD,EAAkBC,GAEvDoD,I,yHCrGT1E,EAAOC,QAAU,IAA0B,sC,oCCC3C,IAAIpB,EAAI,EAAQ,QACZ+G,EAA2B,EAAQ,QAAmDxF,EACtFpB,EAAW,EAAQ,QACnB6G,EAAW,EAAQ,QACnBC,EAAa,EAAQ,QACrBC,EAAyB,EAAQ,QACjCC,EAAuB,EAAQ,QAC/BC,EAAU,EAAQ,QAGlBC,EAAY,GAAGC,SACfC,EAAMC,KAAKD,IAEXE,EAA0BN,EAAqB,YAE/CO,GAAoBN,IAAYK,KAA6B,WAC/D,IAAIE,EAAaZ,EAAyBa,OAAO9D,UAAW,YAC5D,OAAO6D,IAAeA,EAAWE,SAF8B,GAOjE7H,EAAE,CAAEM,OAAQ,SAAUC,OAAO,EAAMuG,QAASY,IAAqBD,GAA2B,CAC1FH,SAAU,SAAkBQ,GAC1B,IAAIlF,EAAOoE,EAASE,EAAuBpG,OAC3CmG,EAAWa,GACX,IAAIC,EAAcrH,UAAUC,OAAS,EAAID,UAAU,QAAKE,EACpDoH,EAAM7H,EAASyC,EAAKjC,QACpBsH,OAAsBrH,IAAhBmH,EAA4BC,EAAMT,EAAIpH,EAAS4H,GAAcC,GACnEE,EAASlB,EAASc,GACtB,OAAOT,EACHA,EAAUnB,KAAKtD,EAAMsF,EAAQD,GAC7BrF,EAAKuF,MAAMF,EAAMC,EAAOvH,OAAQsH,KAASC,M,6DCjCjD,W,gDCOA,IAAIE,EAAW,SAAUhH,GACvB,aAEA,IAEIR,EAFAyH,EAAKC,OAAOxE,UACZyE,EAASF,EAAGG,eAEZC,EAA4B,oBAAXC,OAAwBA,OAAS,GAClDC,EAAiBF,EAAQG,UAAY,aACrCC,EAAsBJ,EAAQK,eAAiB,kBAC/CC,EAAoBN,EAAQO,aAAe,gBAE/C,SAAS3F,EAAO4F,EAAK3F,EAAKC,GAOxB,OANA+E,OAAOhH,eAAe2H,EAAK3F,EAAK,CAC9BC,MAAOA,EACP2F,YAAY,EACZC,cAAc,EACdtB,UAAU,IAELoB,EAAI3F,GAEb,IAEED,EAAO,GAAI,IACX,MAAO+F,GACP/F,EAAS,SAAS4F,EAAK3F,EAAKC,GAC1B,OAAO0F,EAAI3F,GAAOC,GAItB,SAAS8F,EAAKC,EAASC,EAASC,EAAMC,GAEpC,IAAIC,EAAiBH,GAAWA,EAAQzF,qBAAqB6F,EAAYJ,EAAUI,EAC/EC,EAAYtB,OAAO9G,OAAOkI,EAAe5F,WACzC+F,EAAU,IAAIC,EAAQL,GAAe,IAMzC,OAFAG,EAAUG,QAAUC,EAAiBV,EAASE,EAAMK,GAE7CD,EAcT,SAASK,EAASC,EAAIjB,EAAKkB,GACzB,IACE,MAAO,CAAErH,KAAM,SAAUqH,IAAKD,EAAGhE,KAAK+C,EAAKkB,IAC3C,MAAOf,GACP,MAAO,CAAEtG,KAAM,QAASqH,IAAKf,IAhBjChI,EAAQiI,KAAOA,EAoBf,IAAIe,EAAyB,iBACzBC,EAAyB,iBACzBC,EAAoB,YACpBC,EAAoB,YAIpBC,EAAmB,GAMvB,SAASb,KACT,SAASc,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxBtH,EAAOsH,EAAmBhC,GAAgB,WACxC,OAAO7H,QAGT,IAAI8J,EAAWtC,OAAOuC,eAClBC,EAA0BF,GAAYA,EAASA,EAASG,EAAO,MAC/DD,GACAA,IAA4BzC,GAC5BE,EAAOrC,KAAK4E,EAAyBnC,KAGvCgC,EAAoBG,GAGtB,IAAIE,EAAKN,EAA2B5G,UAClC6F,EAAU7F,UAAYwE,OAAO9G,OAAOmJ,GAYtC,SAASM,EAAsBnH,GAC7B,CAAC,OAAQ,QAAS,UAAUI,SAAQ,SAASgH,GAC3C7H,EAAOS,EAAWoH,GAAQ,SAASf,GACjC,OAAOrJ,KAAKiJ,QAAQmB,EAAQf,SAkClC,SAASgB,EAAcvB,EAAWwB,GAChC,SAASC,EAAOH,EAAQf,EAAKmB,EAASC,GACpC,IAAIC,EAASvB,EAASL,EAAUsB,GAAStB,EAAWO,GACpD,GAAoB,UAAhBqB,EAAO1I,KAEJ,CACL,IAAI2I,EAASD,EAAOrB,IAChB5G,EAAQkI,EAAOlI,MACnB,OAAIA,GACiB,kBAAVA,GACPgF,EAAOrC,KAAK3C,EAAO,WACd6H,EAAYE,QAAQ/H,EAAMmI,SAASC,MAAK,SAASpI,GACtD8H,EAAO,OAAQ9H,EAAO+H,EAASC,MAC9B,SAASnC,GACViC,EAAO,QAASjC,EAAKkC,EAASC,MAI3BH,EAAYE,QAAQ/H,GAAOoI,MAAK,SAASC,GAI9CH,EAAOlI,MAAQqI,EACfN,EAAQG,MACP,SAASI,GAGV,OAAOR,EAAO,QAASQ,EAAOP,EAASC,MAvBzCA,EAAOC,EAAOrB,KA4BlB,IAAI2B,EAEJ,SAASC,EAAQb,EAAQf,GACvB,SAAS6B,IACP,OAAO,IAAIZ,GAAY,SAASE,EAASC,GACvCF,EAAOH,EAAQf,EAAKmB,EAASC,MAIjC,OAAOO,EAaLA,EAAkBA,EAAgBH,KAChCK,EAGAA,GACEA,IAKRlL,KAAKiJ,QAAUgC,EA2BjB,SAAS/B,EAAiBV,EAASE,EAAMK,GACvC,IAAIpG,EAAQ2G,EAEZ,OAAO,SAAgBc,EAAQf,GAC7B,GAAI1G,IAAU6G,EACZ,MAAM,IAAI2B,MAAM,gCAGlB,GAAIxI,IAAU8G,EAAmB,CAC/B,GAAe,UAAXW,EACF,MAAMf,EAKR,OAAO+B,IAGTrC,EAAQqB,OAASA,EACjBrB,EAAQM,IAAMA,EAEd,MAAO,EAAM,CACX,IAAIgC,EAAWtC,EAAQsC,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUtC,GACnD,GAAIuC,EAAgB,CAClB,GAAIA,IAAmB5B,EAAkB,SACzC,OAAO4B,GAIX,GAAuB,SAAnBvC,EAAQqB,OAGVrB,EAAQyC,KAAOzC,EAAQ0C,MAAQ1C,EAAQM,SAElC,GAAuB,UAAnBN,EAAQqB,OAAoB,CACrC,GAAIzH,IAAU2G,EAEZ,MADA3G,EAAQ8G,EACFV,EAAQM,IAGhBN,EAAQ2C,kBAAkB3C,EAAQM,SAEN,WAAnBN,EAAQqB,QACjBrB,EAAQ4C,OAAO,SAAU5C,EAAQM,KAGnC1G,EAAQ6G,EAER,IAAIkB,EAASvB,EAASX,EAASE,EAAMK,GACrC,GAAoB,WAAhB2B,EAAO1I,KAAmB,CAO5B,GAJAW,EAAQoG,EAAQ/E,KACZyF,EACAF,EAEAmB,EAAOrB,MAAQK,EACjB,SAGF,MAAO,CACLjH,MAAOiI,EAAOrB,IACdrF,KAAM+E,EAAQ/E,MAGS,UAAhB0G,EAAO1I,OAChBW,EAAQ8G,EAGRV,EAAQqB,OAAS,QACjBrB,EAAQM,IAAMqB,EAAOrB,OAU7B,SAASkC,EAAoBF,EAAUtC,GACrC,IAAIqB,EAASiB,EAASvD,SAASiB,EAAQqB,QACvC,GAAIA,IAAWtK,EAAW,CAKxB,GAFAiJ,EAAQsC,SAAW,KAEI,UAAnBtC,EAAQqB,OAAoB,CAE9B,GAAIiB,EAASvD,SAAS,YAGpBiB,EAAQqB,OAAS,SACjBrB,EAAQM,IAAMvJ,EACdyL,EAAoBF,EAAUtC,GAEP,UAAnBA,EAAQqB,QAGV,OAAOV,EAIXX,EAAQqB,OAAS,QACjBrB,EAAQM,IAAM,IAAIuC,UAChB,kDAGJ,OAAOlC,EAGT,IAAIgB,EAASvB,EAASiB,EAAQiB,EAASvD,SAAUiB,EAAQM,KAEzD,GAAoB,UAAhBqB,EAAO1I,KAIT,OAHA+G,EAAQqB,OAAS,QACjBrB,EAAQM,IAAMqB,EAAOrB,IACrBN,EAAQsC,SAAW,KACZ3B,EAGT,IAAImC,EAAOnB,EAAOrB,IAElB,OAAMwC,EAOFA,EAAK7H,MAGP+E,EAAQsC,EAASS,YAAcD,EAAKpJ,MAGpCsG,EAAQjG,KAAOuI,EAASU,QAQD,WAAnBhD,EAAQqB,SACVrB,EAAQqB,OAAS,OACjBrB,EAAQM,IAAMvJ,GAUlBiJ,EAAQsC,SAAW,KACZ3B,GANEmC,GA3BP9C,EAAQqB,OAAS,QACjBrB,EAAQM,IAAM,IAAIuC,UAAU,oCAC5B7C,EAAQsC,SAAW,KACZ3B,GAoDX,SAASsC,EAAaC,GACpB,IAAIrJ,EAAQ,CAAEsJ,OAAQD,EAAK,IAEvB,KAAKA,IACPrJ,EAAMuJ,SAAWF,EAAK,IAGpB,KAAKA,IACPrJ,EAAMwJ,WAAaH,EAAK,GACxBrJ,EAAMyJ,SAAWJ,EAAK,IAGxBjM,KAAKsM,WAAWC,KAAK3J,GAGvB,SAAS4J,EAAc5J,GACrB,IAAI8H,EAAS9H,EAAM6J,YAAc,GACjC/B,EAAO1I,KAAO,gBACP0I,EAAOrB,IACdzG,EAAM6J,WAAa/B,EAGrB,SAAS1B,EAAQL,GAIf3I,KAAKsM,WAAa,CAAC,CAAEJ,OAAQ,SAC7BvD,EAAYvF,QAAQ4I,EAAchM,MAClCA,KAAK0M,OAAM,GA8Bb,SAASzC,EAAOlI,GACd,GAAIA,EAAU,CACZ,IAAI4K,EAAiB5K,EAAS8F,GAC9B,GAAI8E,EACF,OAAOA,EAAevH,KAAKrD,GAG7B,GAA6B,oBAAlBA,EAASe,KAClB,OAAOf,EAGT,IAAK6K,MAAM7K,EAASlC,QAAS,CAC3B,IAAIgN,GAAK,EAAG/J,EAAO,SAASA,IAC1B,QAAS+J,EAAI9K,EAASlC,OACpB,GAAI4H,EAAOrC,KAAKrD,EAAU8K,GAGxB,OAFA/J,EAAKL,MAAQV,EAAS8K,GACtB/J,EAAKkB,MAAO,EACLlB,EAOX,OAHAA,EAAKL,MAAQ3C,EACbgD,EAAKkB,MAAO,EAELlB,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAMsI,GAIjB,SAASA,IACP,MAAO,CAAE3I,MAAO3C,EAAWkE,MAAM,GA+MnC,OA7mBA2F,EAAkB3G,UAAY4G,EAC9BrH,EAAO2H,EAAI,cAAeN,GAC1BrH,EAAOqH,EAA4B,cAAeD,GAClDA,EAAkBmD,YAAcvK,EAC9BqH,EACA3B,EACA,qBAaF3H,EAAQyM,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,oBAAXD,GAAyBA,EAAOjH,YAClD,QAAOkH,IACHA,IAAStD,GAG2B,uBAAnCsD,EAAKH,aAAeG,EAAKC,QAIhC5M,EAAQ6M,KAAO,SAASH,GAQtB,OAPIxF,OAAO4F,eACT5F,OAAO4F,eAAeJ,EAAQpD,IAE9BoD,EAAOK,UAAYzD,EACnBrH,EAAOyK,EAAQ/E,EAAmB,sBAEpC+E,EAAOhK,UAAYwE,OAAO9G,OAAOwJ,GAC1B8C,GAOT1M,EAAQgN,MAAQ,SAASjE,GACvB,MAAO,CAAEuB,QAASvB,IAsEpBc,EAAsBE,EAAcrH,WACpCT,EAAO8H,EAAcrH,UAAW+E,GAAqB,WACnD,OAAO/H,QAETM,EAAQ+J,cAAgBA,EAKxB/J,EAAQiN,MAAQ,SAAS/E,EAASC,EAASC,EAAMC,EAAa2B,QACxC,IAAhBA,IAAwBA,EAAckD,SAE1C,IAAIC,EAAO,IAAIpD,EACb9B,EAAKC,EAASC,EAASC,EAAMC,GAC7B2B,GAGF,OAAOhK,EAAQyM,oBAAoBtE,GAC/BgF,EACAA,EAAK3K,OAAO+H,MAAK,SAASF,GACxB,OAAOA,EAAO3G,KAAO2G,EAAOlI,MAAQgL,EAAK3K,WAuKjDqH,EAAsBD,GAEtB3H,EAAO2H,EAAIjC,EAAmB,aAO9B1F,EAAO2H,EAAIrC,GAAgB,WACzB,OAAO7H,QAGTuC,EAAO2H,EAAI,YAAY,WACrB,MAAO,wBAkCT5J,EAAQoN,KAAO,SAASC,GACtB,IAAID,EAAO,GACX,IAAK,IAAIlL,KAAOmL,EACdD,EAAKnB,KAAK/J,GAMZ,OAJAkL,EAAKE,UAIE,SAAS9K,IACd,MAAO4K,EAAK7N,OAAQ,CAClB,IAAI2C,EAAMkL,EAAKG,MACf,GAAIrL,KAAOmL,EAGT,OAFA7K,EAAKL,MAAQD,EACbM,EAAKkB,MAAO,EACLlB,EAQX,OADAA,EAAKkB,MAAO,EACLlB,IAsCXxC,EAAQ2J,OAASA,EAMjBjB,EAAQhG,UAAY,CAClB+C,YAAaiD,EAEb0D,MAAO,SAASoB,GAcd,GAbA9N,KAAKmD,KAAO,EACZnD,KAAK8C,KAAO,EAGZ9C,KAAKwL,KAAOxL,KAAKyL,MAAQ3L,EACzBE,KAAKgE,MAAO,EACZhE,KAAKqL,SAAW,KAEhBrL,KAAKoK,OAAS,OACdpK,KAAKqJ,IAAMvJ,EAEXE,KAAKsM,WAAWlJ,QAAQoJ,IAEnBsB,EACH,IAAK,IAAIZ,KAAQlN,KAEQ,MAAnBkN,EAAKa,OAAO,IACZtG,EAAOrC,KAAKpF,KAAMkN,KACjBN,OAAOM,EAAK7F,MAAM,MACrBrH,KAAKkN,GAAQpN,IAMrBkO,KAAM,WACJhO,KAAKgE,MAAO,EAEZ,IAAIiK,EAAYjO,KAAKsM,WAAW,GAC5B4B,EAAaD,EAAUxB,WAC3B,GAAwB,UAApByB,EAAWlM,KACb,MAAMkM,EAAW7E,IAGnB,OAAOrJ,KAAKmO,MAGdzC,kBAAmB,SAAS0C,GAC1B,GAAIpO,KAAKgE,KACP,MAAMoK,EAGR,IAAIrF,EAAU/I,KACd,SAASqO,EAAOC,EAAKC,GAYnB,OAXA7D,EAAO1I,KAAO,QACd0I,EAAOrB,IAAM+E,EACbrF,EAAQjG,KAAOwL,EAEXC,IAGFxF,EAAQqB,OAAS,OACjBrB,EAAQM,IAAMvJ,KAGNyO,EAGZ,IAAK,IAAI1B,EAAI7M,KAAKsM,WAAWzM,OAAS,EAAGgN,GAAK,IAAKA,EAAG,CACpD,IAAIjK,EAAQ5C,KAAKsM,WAAWO,GACxBnC,EAAS9H,EAAM6J,WAEnB,GAAqB,SAAjB7J,EAAMsJ,OAIR,OAAOmC,EAAO,OAGhB,GAAIzL,EAAMsJ,QAAUlM,KAAKmD,KAAM,CAC7B,IAAIqL,EAAW/G,EAAOrC,KAAKxC,EAAO,YAC9B6L,EAAahH,EAAOrC,KAAKxC,EAAO,cAEpC,GAAI4L,GAAYC,EAAY,CAC1B,GAAIzO,KAAKmD,KAAOP,EAAMuJ,SACpB,OAAOkC,EAAOzL,EAAMuJ,UAAU,GACzB,GAAInM,KAAKmD,KAAOP,EAAMwJ,WAC3B,OAAOiC,EAAOzL,EAAMwJ,iBAGjB,GAAIoC,GACT,GAAIxO,KAAKmD,KAAOP,EAAMuJ,SACpB,OAAOkC,EAAOzL,EAAMuJ,UAAU,OAG3B,KAAIsC,EAMT,MAAM,IAAItD,MAAM,0CALhB,GAAInL,KAAKmD,KAAOP,EAAMwJ,WACpB,OAAOiC,EAAOzL,EAAMwJ,gBAU9BT,OAAQ,SAAS3J,EAAMqH,GACrB,IAAK,IAAIwD,EAAI7M,KAAKsM,WAAWzM,OAAS,EAAGgN,GAAK,IAAKA,EAAG,CACpD,IAAIjK,EAAQ5C,KAAKsM,WAAWO,GAC5B,GAAIjK,EAAMsJ,QAAUlM,KAAKmD,MACrBsE,EAAOrC,KAAKxC,EAAO,eACnB5C,KAAKmD,KAAOP,EAAMwJ,WAAY,CAChC,IAAIsC,EAAe9L,EACnB,OAIA8L,IACU,UAAT1M,GACS,aAATA,IACD0M,EAAaxC,QAAU7C,GACvBA,GAAOqF,EAAatC,aAGtBsC,EAAe,MAGjB,IAAIhE,EAASgE,EAAeA,EAAajC,WAAa,GAItD,OAHA/B,EAAO1I,KAAOA,EACd0I,EAAOrB,IAAMA,EAETqF,GACF1O,KAAKoK,OAAS,OACdpK,KAAK8C,KAAO4L,EAAatC,WAClB1C,GAGF1J,KAAK2O,SAASjE,IAGvBiE,SAAU,SAASjE,EAAQ2B,GACzB,GAAoB,UAAhB3B,EAAO1I,KACT,MAAM0I,EAAOrB,IAcf,MAXoB,UAAhBqB,EAAO1I,MACS,aAAhB0I,EAAO1I,KACThC,KAAK8C,KAAO4H,EAAOrB,IACM,WAAhBqB,EAAO1I,MAChBhC,KAAKmO,KAAOnO,KAAKqJ,IAAMqB,EAAOrB,IAC9BrJ,KAAKoK,OAAS,SACdpK,KAAK8C,KAAO,OACa,WAAhB4H,EAAO1I,MAAqBqK,IACrCrM,KAAK8C,KAAOuJ,GAGP3C,GAGTkF,OAAQ,SAASxC,GACf,IAAK,IAAIS,EAAI7M,KAAKsM,WAAWzM,OAAS,EAAGgN,GAAK,IAAKA,EAAG,CACpD,IAAIjK,EAAQ5C,KAAKsM,WAAWO,GAC5B,GAAIjK,EAAMwJ,aAAeA,EAGvB,OAFApM,KAAK2O,SAAS/L,EAAM6J,WAAY7J,EAAMyJ,UACtCG,EAAc5J,GACP8G,IAKb,MAAS,SAASwC,GAChB,IAAK,IAAIW,EAAI7M,KAAKsM,WAAWzM,OAAS,EAAGgN,GAAK,IAAKA,EAAG,CACpD,IAAIjK,EAAQ5C,KAAKsM,WAAWO,GAC5B,GAAIjK,EAAMsJ,SAAWA,EAAQ,CAC3B,IAAIxB,EAAS9H,EAAM6J,WACnB,GAAoB,UAAhB/B,EAAO1I,KAAkB,CAC3B,IAAI6M,EAASnE,EAAOrB,IACpBmD,EAAc5J,GAEhB,OAAOiM,GAMX,MAAM,IAAI1D,MAAM,0BAGlB2D,cAAe,SAAS/M,EAAU+J,EAAYC,GAa5C,OAZA/L,KAAKqL,SAAW,CACdvD,SAAUmC,EAAOlI,GACjB+J,WAAYA,EACZC,QAASA,GAGS,SAAhB/L,KAAKoK,SAGPpK,KAAKqJ,IAAMvJ,GAGN4J,IAQJpJ,EA9sBK,CAqtBiBD,EAAOC,SAGtC,IACEyO,mBAAqBzH,EACrB,MAAO0H,GAWmB,kBAAfC,WACTA,WAAWF,mBAAqBzH,EAEhC4H,SAAS,IAAK,yBAAdA,CAAwC5H,K,kCC9uB5C,IAAIpI,EAAI,EAAQ,QACZiQ,EAAa,EAAQ,QACrBC,EAAyB,EAAQ,QAIrClQ,EAAE,CAAEM,OAAQ,SAAUC,OAAO,EAAMuG,OAAQoJ,EAAuB,SAAW,CAC3EC,KAAM,SAAcC,GAClB,OAAOH,EAAWnP,KAAM,IAAK,OAAQsP,O,kCCRzC,IAAIC,EAAU,EAAQ,QAClBlQ,EAAW,EAAQ,QACnBuB,EAAO,EAAQ,QAIfzB,EAAmB,SAAUK,EAAQgQ,EAAUC,EAAQxP,EAAWyP,EAAOC,EAAOC,EAAQC,GAC1F,IAGIC,EAHAC,EAAcL,EACdM,EAAc,EACdC,IAAQL,GAAShP,EAAKgP,EAAQC,EAAS,GAG3C,MAAOG,EAAc/P,EAAW,CAC9B,GAAI+P,KAAeP,EAAQ,CAGzB,GAFAK,EAAUG,EAAQA,EAAMR,EAAOO,GAAcA,EAAaR,GAAYC,EAAOO,GAEzEL,EAAQ,GAAKJ,EAAQO,GACvBC,EAAc5Q,EAAiBK,EAAQgQ,EAAUM,EAASzQ,EAASyQ,EAAQjQ,QAASkQ,EAAaJ,EAAQ,GAAK,MACzG,CACL,GAAII,GAAe,iBAAkB,MAAMnE,UAAU,sCACrDpM,EAAOuQ,GAAeD,EAGxBC,IAEFC,IAEF,OAAOD,GAGT1P,EAAOC,QAAUnB,G,yCC/BjB,IAAI,EAAS,WAAa,IAAI+Q,EAAIlQ,KAASmQ,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,cAAc,CAACE,MAAM,CAAC,MAAQ,KAAK,CAACF,EAAG,QAAQ,CAACG,YAAY,SAASD,MAAM,CAAC,QAAU,SAAS,MAAQ,WAAW,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,KAAK,MAAQ,WAAW,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,aAAa,MAAM,YAAY,MAAM,IAAM,EAAQ,WAAyCF,EAAG,MAAMA,EAAG,KAAK,CAACH,EAAIO,GAAG,qEAAqEJ,EAAG,MAAMA,EAAG,QAAQ,CAACE,MAAM,CAAC,QAAU,WAAW,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,SAAS,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,kBAAkB,QAAU,GAAG,MAAQ,YAAY,CAACF,EAAG,SAAS,CAACH,EAAIO,GAAG,wBAAwBP,EAAIO,GAAG,qBAAqB,IAAI,GAAGJ,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,SAAS,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,QAAU,GAAG,MAAQ,YAAY,KAAO,oBAAoB,CAACF,EAAG,SAAS,CAACH,EAAIO,GAAG,gBAAgBP,EAAIO,GAAG,qBAAqB,IAAI,GAAGJ,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,SAAS,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,6BAA6B,OAAS,SAAS,QAAU,GAAG,MAAQ,gBAAgB,CAACF,EAAG,SAAS,CAACH,EAAIO,GAAG,uBAAuBP,EAAIO,GAAG,oBAAoB,IAAI,GAAGJ,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,SAAS,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,0CAA0C,OAAS,SAAS,QAAU,GAAG,MAAQ,WAAW,CAACF,EAAG,SAAS,CAACH,EAAIO,GAAG,aAAaP,EAAIO,GAAG,iBAAiB,IAAI,IAAI,IAAI,IAAI,GAAGJ,EAAG,QAAQ,CAACA,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACK,YAAY,CAAC,aAAa,OAAOH,MAAM,CAAC,MAAQ,SAAS,QAAU,WAAW,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,MAAQ,WAAW,CAACF,EAAG,KAAK,CAACG,YAAY,8BAA8BD,MAAM,CAAC,GAAK,mBAAmB,CAACL,EAAIO,GAAG,yBAAyB,GAAGJ,EAAG,QAAQ,CAACE,MAAM,CAAC,MAAQ,SAAS,QAAU,WAAW,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,MAAQ,WAAW,CAACF,EAAG,KAAK,CAACG,YAAY,gCAAgC,CAACN,EAAIO,GAAG,4BAA4B,GAAGJ,EAAG,QAAQ,CAACE,MAAM,CAAC,MAAQ,SAAS,QAAU,WAAW,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,OAAO,CAACF,EAAG,cAAc,CAACH,EAAIO,GAAG,mBAAmBJ,EAAG,oBAAoB,CAACE,MAAM,CAAC,MAAQ,QAAQ,eAAe,IAAI,MAAQL,EAAIS,qBAAqBC,sBAAsB,OAAS,GAAG,OAAS,OAAO,CAACV,EAAIO,GAAG,4BAA4BP,EAAIW,GAAGX,EAAIS,qBAAqBG,kBAAkB,MAAMZ,EAAIW,GAAGX,EAAIS,qBAAqBI,eAAe,OAAOV,EAAG,MAAMA,EAAG,oBAAoB,CAACE,MAAM,CAAC,MAAQ,SAAS,eAAe,IAAI,MAAQL,EAAIS,qBAAqBK,qBAAqB,OAAS,GAAG,OAAS,OAAO,CAACd,EAAIO,GAAG,2BAA2BP,EAAIW,GAAGX,EAAIS,qBAAqBM,iBAAiB,MAAMf,EAAIW,GAAGX,EAAIS,qBAAqBI,eAAe,OAAOV,EAAG,MAAMA,EAAG,oBAAoB,CAACE,MAAM,CAAC,MAAQ,OAAO,eAAe,IAAI,MAAQL,EAAIS,qBAAqBO,sBAAsB,OAAS,GAAG,OAAS,OAAO,CAAChB,EAAIO,GAAG,yBAAyBP,EAAIW,GAAGX,EAAIS,qBAAqBQ,kBAAkB,MAAMjB,EAAIW,GAAGX,EAAIS,qBAAqBS,gBAAgB,QAAQ,IAAI,GAAGf,EAAG,QAAQ,CAACK,YAAY,CAAC,aAAa,OAAOH,MAAM,CAAC,MAAQ,SAAS,QAAU,WAAW,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,MAAQ,WAAW,CAACF,EAAG,KAAK,CAACG,YAAY,8BAA8BD,MAAM,CAAC,GAAK,mBAAmB,CAACL,EAAIO,GAAG,yBAAyB,GAAGJ,EAAG,QAAQ,CAACK,YAAY,CAAC,gBAAgB,QAAQH,MAAM,CAAC,QAAU,WAAWL,EAAImB,GAAInB,EAAa,WAAE,SAASoB,EAAGrP,GAAO,OAAOoO,EAAG,QAAQ,CAAC7N,IAAI,KAAOP,EAAMsO,MAAM,CAAC,KAAO,MAAM,CAACF,EAAG,SAAS,CAACA,EAAG,cAAc,CAACK,YAAY,CAAC,aAAa,OAAO,OAAS,UAAU,CAACL,EAAG,IAAI,CAACG,YAAY,wCAAwC,CAACN,EAAIO,GAAG,IAAIP,EAAIW,GAAGS,EAAGC,OAAO,OAAOlB,EAAG,IAAI,CAACH,EAAIO,GAAG,IAAIP,EAAIW,GAAGS,EAAGE,KAAKC,OAAO,OAAOpB,EAAG,MAAM,CAACG,YAAY,iBAAiB,CAACH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACN,EAAIO,GAAGP,EAAIW,GAAGS,EAAGI,aAAarB,EAAG,iBAAiB,CAACA,EAAG,QAAQ,CAACE,MAAM,CAAC,KAAO,GAAG,MAAQ,SAAS,KAAOe,EAAGK,SAAS,OAAS,WAAW,CAACzB,EAAIO,GAAG,oBAAoB,IAAI,IAAI,MAAK,IAAI,IAAI,IAAI,IACnsHmB,EAAkB,G,UCDtB,SAASC,EAAmBC,EAAKtH,EAASC,EAAQsH,EAAOC,EAAQxP,EAAK6G,GACpE,IACE,IAAIwC,EAAOiG,EAAItP,GAAK6G,GAChB5G,EAAQoJ,EAAKpJ,MACjB,MAAOsI,GAEP,YADAN,EAAOM,GAILc,EAAK7H,KACPwG,EAAQ/H,GAER+K,QAAQhD,QAAQ/H,GAAOoI,KAAKkH,EAAOC,GAIxB,SAASC,EAAkB7I,GACxC,OAAO,WACL,IAAIV,EAAO1I,KACPkS,EAAOtS,UACX,OAAO,IAAI4N,SAAQ,SAAUhD,EAASC,GACpC,IAAIqH,EAAM1I,EAAG+I,MAAMzJ,EAAMwJ,GAEzB,SAASH,EAAMtP,GACboP,EAAmBC,EAAKtH,EAASC,EAAQsH,EAAOC,EAAQ,OAAQvP,GAGlE,SAASuP,EAAO1J,GACduJ,EAAmBC,EAAKtH,EAASC,EAAQsH,EAAOC,EAAQ,QAAS1J,GAGnEyJ,OAAMjS,O,wBC/BNsS,EAAkBC,EAAQ,QAEjBD,IC8If,GACElF,KAAM,OACNoF,WAAY,GACZpP,KAAM,WACJ,MAAO,CACLqP,UAAW,GACX5B,qBAAsB,CACpBI,cAAe,EAAvB,kCACQD,iBAAkB,EAA1B,qCACQF,sBAAuB,EAA/B,6EACQK,gBAAiB,EAAzB,oCACQD,qBAAsB,EAA9B,4EACQI,eAAgB,EAAxB,mCACQD,iBAAkB,EAA1B,qCACQD,sBAAuB,EAA/B,iFAIEsB,QAAS,WAAX,+IACA,qBADA,qGAAW,GAGTC,QAAS,CACPC,eAAgB,SAApB,KACM,OAAIC,EAAI9S,QAAU+S,EACTD,EAEFA,EAAItL,MAAM,EAAGuL,GAAO,OAE7BC,cAAe,WAAnB,6JACA,uGADA,cACA,EADA,gBAIA,SAJA,OAMA,IAFA,EAJA,OAKA,IACA,YACA,aACA,iCACA,yBAEA,uCACA,uBAZA,qGAAmB,KC5K2T,I,iJCO9U,SAASC,EAAT,GACE,OAAO,SAAU,EAAV,GACL,IAAK,IAAL,OACOtL,OAAA,gCAAL,IACExH,KAAA,QAAaA,KAAK+S,MAAlB,MAGJ,IAAK,IAAL,OACE/S,KAAA,KAAUA,KAAK+S,MAAf,KAAsCC,EAAtC,KAKS,oBAAW,CACxB9P,KAAM,iBAAO,CACX+P,OADW,GAEXC,WAAY,KAGdC,QANwB,WAStBnT,KAAA,gBAAsB8S,EAAtB,UAA6C,CAAEM,WAAW,IAC1DpT,KAAA,oBAA0B8S,EAA1B,cAAqD,CAAEM,WAAW,O,8ECzBvD,gBAAW,CACxBlG,KADwB,YAGxBmG,MAAO,CACLC,MAAOxM,QAGT2L,QAAS,CACPc,mBADO,SACW,GAA8C,IAApBrQ,EAAoB,uDAA9C,GAChB,wBAAWA,EAAP,OAEF,OAAAsQ,EAAA,MAAa,0BAFqB,MAIlC,GAEF,kBAAWtQ,EAAP,OAEF,OAAAsQ,EAAA,MAAa,0BAFqB,MAIlC,IAEE,eAAJ,GACEtQ,EAAA,uCACKA,EADQ,OAAb,IAEE,6BAFW,GAGX,yBAAmBoQ,KAEZA,IACTpQ,EAAA,uCACKA,EADQ,OAAb,qBAEE,GAAS,KAIb,IAGFuQ,aA9BO,SA8BK,GAA8C,IAApBvQ,EAAoB,uDAA9C,GACV,qBAAWA,EAAP,MAIF,OAFA,OAAAsQ,EAAA,MAAa,0BAFqB,MAIlC,EAEF,qBAAWtQ,EAAP,MAIF,OAFA,OAAAsQ,EAAA,MAAa,0BAFqB,MAIlC,EAEF,GAAI,eAAJ,GACEtQ,EAAA,uCACKA,EADQ,OAAb,IAEEoQ,MAAO,GAAF,OAFM,GAGX,wBAAkBA,UAEf,GAAIA,EAAO,CAChB,MAAmCA,EAAA,4BAAnC,yBAAM,EAAN,KAAM,EAAN,KACApQ,EAAA,uCACKA,EADQ,OAAb,qBAEGwQ,EAAD,UAAwB,IAE1B,IACExQ,EAAA,MAAW,SAAX,OAGJ,aCrES,gBAAW,CACxBgK,KADwB,aAGxBmG,MAAO,CACLM,UAAW,CAACC,OAAQ9M,SAGtB+M,SAAU,CACRC,kBADQ,WAEN,OAAO9T,KAAP,WAEF+T,iBAJQ,WAKN,IAAMJ,EAAY3T,KAAlB,kBAEA,aAAI2T,GACA/G,MAAMoH,SAAV,IAD8B,GAE9B,sCAAuBhU,KAAd,YAAiC,O,YCVjC,gBAAW,CACxBkN,KADwB,aAGxBmG,MAAO,CACLY,OAAQ,CAACL,OADJ,QAELM,UAAW,CAACN,OAFP,QAGLO,SAAU,CAACP,OAHN,QAILQ,UAAW,CAACR,OAJP,QAKLS,SAAU,CAACT,OALN,QAMLU,MAAO,CAACV,OAAQ9M,SAGlB+M,SAAU,CACRU,iBADQ,WAEN,IAAMC,EAAN,GAEMP,EAAS,eAAcjU,KAA7B,QACMoU,EAAY,eAAcpU,KAAhC,WACMqU,EAAW,eAAcrU,KAA/B,UACMkU,EAAY,eAAclU,KAAhC,WACMmU,EAAW,eAAcnU,KAA/B,UACMsU,EAAQ,eAActU,KAA5B,OASA,OAPA,IAAYwU,EAAA,UACZ,IAAeA,EAAA,aACf,IAAcA,EAAA,YACd,IAAeA,EAAA,aACf,IAAcA,EAAA,YACd,IAAWA,EAAA,SAEX,M,gECrCS,SAASC,EAA2BC,EAAGC,GACpD,IAAIC,EAAuB,qBAAXhN,QAA0B8M,EAAE9M,OAAOE,WAAa4M,EAAE,cAElE,IAAKE,EAAI,CACP,GAAIC,MAAMtF,QAAQmF,KAAOE,EAAKE,eAA2BJ,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAE7U,OAAqB,CAC/G+U,IAAIF,EAAIE,GACZ,IAAI/H,EAAI,EAEJkI,EAAI,aAER,MAAO,CACLC,EAAGD,EACHE,EAAG,WACD,OAAIpI,GAAK6H,EAAE7U,OAAe,CACxBmE,MAAM,GAED,CACLA,MAAM,EACNvB,MAAOiS,EAAE7H,OAGbqI,EAAG,SAAWC,GACZ,MAAMA,GAER1U,EAAGsU,GAIP,MAAM,IAAInJ,UAAU,yIAGtB,IAEItD,EAFA8M,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLL,EAAG,WACDJ,EAAKA,EAAGxP,KAAKsP,IAEfO,EAAG,WACD,IAAIK,EAAOV,EAAG9R,OAEd,OADAsS,EAAmBE,EAAKtR,KACjBsR,GAETJ,EAAG,SAAWK,GACZF,GAAS,EACT/M,EAAMiN,GAER9U,EAAG,WACD,IACO2U,GAAoC,MAAhBR,EAAG,WAAmBA,EAAG,YADpD,QAGE,GAAIS,EAAQ,MAAM/M,K,cCjDX,gBAAW,CACxB4E,KADwB,YAGxBmG,MAAO,CACLmC,QAAS,CAACC,QADL,QAELC,KAAMD,SAGR5B,SAAU,CACR8B,eADQ,WAEN,IAAMC,EAAN,GACMJ,EAAU,kBAAOxV,KAAP,QACZ8G,OAAO9G,KADK,UAAhB,IAEIA,KAAKwV,QAET,GAAIxV,KAAJ,KACE4V,EAAA,uBACK,qBAAWJ,EAAsB,CACtC,IADsC,EAChCvL,EAASuL,EAAA,MAAf,KADsC,IAGtC,GAHsC,IAGtC,2BAA4B,KAA5B,EAA4B,QAC1BI,EAAA,4BAJoC,oCAM7BJ,GACTI,EAAA,gBAGF,OAAOA,EAAA,2BACJA,EAAA,KAAD,MAAuB,GADzB,O,wBCZS,SAAAC,EAAA,MAAO,EAAD,QAAN,eAON,CACP3I,KADO,UAGPmG,MAAO,CACLyC,SADK,QAELC,OAFK,QAGLC,IAAK,CACHhU,KADG,OAEHiU,QAAS,QAIbpC,SAAU,CACRqC,QADQ,WAEN,qDACE,WADK,EAEL,oBAAqBlW,KAFhB,SAGL,kBAAmBA,KAHd,QAIFA,KAJE,cAKFA,KALE,kBAMFA,KAAK2V,iBAGZnB,OAXQ,WAYN,OAAOxU,KAAP,mBAIJmW,OA5BO,SA4BD,GACJ,IAAMjT,EAAO,CACXkT,MAAOpW,KADI,QAEXqW,MAAOrW,KAFI,OAGXsW,GAAItW,KAAKkT,YAGX,OAAOqD,EACLvW,KADM,IAENA,KAAKuT,mBAAmBvT,KAAxB,MAFM,GAGNA,KAAKwW,OAHP,YCzDJ,I,oBCaA,SAASC,EAAT,KACE,GAAsB,qBAAXC,QAA4B,yBAAvC,QAEA,IAAMC,EAAYC,EAAA,WAAlB,GACMnU,EAAQmU,EAAd,MACA,EAA6B,+BAEzB,CAAEC,QAAF,EAAkBC,QAAS,IAFzB,EAAN,EAAM,QAAWA,EAAjB,EAAiBA,QAGXC,EAAW,IAAIC,sBAAqB,WAGtC,IAFF1R,EAEE,uDAHsC,KAGtC,uCAEF,GAAK2R,EAAL,UAEA,IAAMC,EAAiB5R,EAAA,MAAa,SAAA1C,GAAK,OAAIA,EAJ3C,mBASAiU,GACGF,EAAD,QACAM,EAAA,SAFF,MAIGN,EAAD,UAECM,EAAA,SAPL,MAUEJ,EAAQvR,EAASyR,EAAjB,GAGEG,GAAkBP,EAAtB,KAAsCQ,EAAtC,GACKF,EAAA,oBAzBP,GA4BAA,EAAA,SAAc,CAAE1W,MAAF,EAAewW,YAE7BA,EAAAK,QAAA,IAGF,SAASD,EAAT,GAEOF,EAAL,WAEAA,EAAA,4BAAAA,UACOA,EAAP,UAGK,IAAMI,EAAY,CACvBZ,WACAU,UAGF,ICtDe,WAAiB,CAC9BjK,KAD8B,sBAG9BoK,WAAY,CAAEC,aAEdlE,MAAO,CACLmE,OADK,QAELC,cAFK,QAGLC,OAAQ,CACN1V,KAAM,CAAC4R,OADD,QAENqC,QAAS,GAEX7T,KAAM,CACJJ,KAAM,CAAC4R,OADH,QAEJqC,QAAS,IAEX3B,MAAO,CACLtS,KAAM,CAAC4R,OADF,QAELqC,QAAS,GAEXxT,MAAO,CACLT,KAAM,CAAC4R,OADF,QAELqC,QAAS,IAIb/S,KAAM,iBAAO,CACXyU,OADW,GAEXC,WAAW,IAGb/D,SAAU,CACRgE,eADQ,WAEN,OAAOjE,OAAO5T,KAAP,OAAqBA,KAAKwX,OAAS,EAA1C,IAGFM,cALQ,WAMN,OAAO,EAAIpR,KAAJ,GAAc1G,KAArB,QAGFkW,QATQ,WAUN,MAAO,CACL,+BAAgClW,KAD3B,UAEL,qCAAsCA,KAFjC,cAGL,8BAA+BA,KAAKwX,SAIxCO,gBAjBQ,WAkBN,OAAI/X,KAAKyC,MAAT,EACE,EAGEzC,KAAKyC,MAAT,IACE,IAGKuV,WAAWhY,KAAlB,QAGFiY,gBA7BQ,WA8BN,OAAOvR,KAAA,UAAW1G,KAAK8X,eAAvB,KAGFI,iBAjCQ,WAkCN,OAAS,IAAMlY,KAAP,iBAAD,IAAuCA,KAAvC,cAAP,MAGFmY,YArCQ,WAsCN,OAAOvE,OAAO5T,KAAP,QAAsBA,KAAtB,KAAkCA,KAAlC,YAAP,GAGFwU,OAzCQ,WA0CN,MAAO,CACLP,OAAQ,eAAcjU,KADjB,gBAELsU,MAAO,eAActU,KAAD,kBAIxBoY,UAhDQ,WAiDN,MAAO,CACLC,UAAW,UAAF,OAAYzE,OAAO5T,KAAD,QAAlB,UAIbsY,YAtDQ,WAuDN,OAAOtY,KAAK2X,QAAU,EAAI/D,OAAO5T,KAAP,QAAsBA,KAAhD,QAIJyS,QAAS,CACP8F,UADO,SACE,KACP,OAAOvY,KAAKoQ,eAAe,SAAU,CACnCgG,MAAO,wBAAF,OAD8B,GAEnC7F,MAAO,CACLiI,KADK,cAELC,GAAI,EAAIzY,KAFH,YAGL0Y,GAAI,EAAI1Y,KAHH,YAIL2Y,EAAG3Y,KAJE,OAKL,eAAgBA,KALX,YAML,mBAAoBA,KANf,gBAOL,oBAAqB4Y,MAI3BC,OAfO,WAgBL,IAAMC,EAAW,CACf9Y,KAAKyX,eAAiBzX,KAAKuY,UAAU,WADtB,GAEfvY,KAAKuY,UAAU,UAAWvY,KAF5B,mBAKA,OAAOA,KAAKoQ,eAAe,MAAO,CAChCiG,MAAOrW,KADyB,UAEhCuQ,MAAO,CACLwI,MADK,6BAELC,QAAS,GAAF,OAAKhZ,KAAKsY,YAAV,YAAyBtY,KAAKsY,YAA9B,YAA6C,EAAItY,KAAKsY,YAAtD,YAAqE,EAAItY,KAAKsY,eAJzF,IAQFW,QA7BO,WA8BL,OAAOjZ,KAAKoQ,eAAe,MAAO,CAChCI,YAAa,6BACZxQ,KAAKwW,OAFR,UAIF0C,UAlCO,SAkCE,OACPlZ,KAAA,cAIJmW,OAjI8B,SAiIxB,GACJ,OAAOI,EAAE,MAAOvW,KAAKyT,aAAazT,KAAlB,MAA8B,CAC5CwQ,YAD4C,sBAE5CD,MAAO,CACL4I,KADK,cAEL,gBAFK,EAGL,gBAHK,IAIL,gBAAiBnZ,KAAKyX,mBAAgB3X,EAAYE,KAAK+X,iBAEzD3B,MAAOpW,KARqC,QAS5CsX,WAAY,CAAC,CACXpK,KADW,YAEXzK,MAAOzC,KAAKkZ,YAEd7C,MAAOrW,KAbqC,OAc5CsW,GAAItW,KAAKoZ,aACP,CACFpZ,KADE,SAEFA,KAjBF,eC/IJ,ICCA,SAASqZ,EAAT,KACE,OAAO,kBAAM,OAAA7F,EAAA,MAAY,OAAD,OAAQ8F,EAAR,4CAAxB,KAUI,kBAGJ,IAAMC,EAAcD,GAAA,EAAkB,CACpCE,SAAUH,EAAgBC,EADU,GAEpCG,WAAYJ,EAAgBC,EAAOI,IAFrC,KAKA,OAAO,cAAW,CAChBxM,KADgB,qBAGhByM,OAAQ,kBACN,EAAa,CACX1D,QAASsD,MCZX,kBAKJ,OAAO,EAAiB,IAAjB,UAAyD,CAC9DrM,KAD8D,YAG9DmG,MAAO,CACLuG,YAAa,CACX5X,KADW,OAEXiU,QAFW,WAGT,GAAKjW,KAAL,GAEA,OAAOA,KAAK6Z,GAAZ,cAGJC,SAAUrE,SAGZvS,KAf8D,WAgB5D,MAAO,CACL6W,UAAU,IAIdlG,SAAU,CACRmG,aADQ,WAEN,OAAKha,KAAL,YAEA,kBACGA,KAAD,YAAoBA,KAAK+Z,UAHG,KAQlC5G,QA/B8D,WAgC5DnT,KAAA,IAAoBA,KAAK6Z,GAAL,SAApB7Z,OAGFia,cAnC8D,WAoC5Dja,KAAA,IAAoBA,KAAK6Z,GAAL,WAApB7Z,OAGFyS,QAAS,CACPyH,OADO,WAELla,KAAA,oBAOUma,EAAlB,aChEM,aAAkD,MAA/BC,EAA+B,uDAAlD,QAAmCC,EAAe,uDAAlD,QACJ,OAAO,cAAW,CAChBnN,KADgB,aAGhBoN,MAAO,CAAEF,OAAMC,SAEfhH,MAAO,kBACL,EAAQ,CAAEkH,UAAU,IAGtBrX,KATgB,WAUd,MAAO,CACL6W,WAAY/Z,KAAKoa,KAIrBI,OAAK,sBACH,GADG,SACH,GACExa,KAAA,gBAFC,sCAIK,KACN,IAAUA,KAAV,IAAwBA,KAAKya,MAAMJ,EAAnC,MALC,KAYU,IAAnB,IC7BMK,EAAiB,CACrBC,SADqB,QAErBC,OAFqB,QAGrBC,MAHqB,QAIrBC,KAJqB,QAKrBC,MALqB,QAMrBC,IAAKvF,SAQD,aAAuC,IAApBwF,EAAoB,uDAAvC,GACJ,OAAO,cAAW,CAChB/N,KADgB,eAEhBmG,MAAO4H,EAAA,OAAkB,eAAmBP,EAArCO,GAAiEP,IAI7D,UCfTQ,G,wCAAatT,OAAnB,eAIMuT,EAAN,GAEA,SAAS9C,EAAT,KACEpB,EAAA,kBACAA,EAAA,wBAGF,SAASmE,EAAT,KACEnE,EAAA,cAAmBxU,EAAnB,WASF,SAAS4Y,EAAT,GACE,qBAAOnG,EAAA,iBAGT,SAASoG,EAAT,GACE,wBAAOpG,EAAA,iBAGT,IAAMqG,EAAY,SAAC,EAAD,GAId,IADF9Y,EACE,uDAJc,GAKZ+Y,EAAJ,EACIC,EAAJ,EAEA,IAAKH,EAAL,GAAyB,CACvB,IAAM1C,EAAS3B,EAAf,wBACMzX,EAAS6b,EAAA,GAAkBnG,EAAA,QAAUA,EAAA,eAA5B,GAAf,EAEAsG,EAAShc,EAAA,QAAiBoZ,EAA1B,KACA6C,EAASjc,EAAA,QAAiBoZ,EAA1B,IAGF,IAAIjB,EAAJ,EACI+D,EAAJ,GACIzE,EAAA,SAAcA,EAAA,QAAlB,QACEyE,EAAA,IACA/D,EAASV,EAAA,YAAT,EACAU,EAASlV,EAAA,SAAwBkV,EAASjR,KAAA,KAAU,SAAC8U,EAAD,cAA0BC,EAAD,EAAnC,IAA1C,GAEA9D,EAASjR,KAAA,KAAU,SAAAuQ,EAAA,wBAAsBA,EAAA,aAAhC,IAAT,EAGF,IAAM0E,EAAU,GAAH,QAAO1E,EAAA,YAAD,EAAmBU,GAAtC,EAAa,MACPiE,EAAU,GAAH,QAAO3E,EAAA,aAAD,EAAoBU,GAAvC,EAAa,MAEPkE,EAAIpZ,EAAA,mBAA4B+Y,EAAtC,EAAU,MACJM,EAAIrZ,EAAA,mBAA4BgZ,EAAtC,EAAU,MAEV,MAAO,CAAE9D,SAAQ+D,QAAOG,IAAGC,IAAGH,UAASC,YAGnCG,GAAU,CAEdC,KAFc,SAEV,KAGuB,IAAzBvZ,EAAyB,uDAHvB,GAKF,GAAKwU,EAAD,SAAgBA,EAAA,QAApB,SAIA,IAAMgF,EAAYC,SAAA,cAAlB,QACMC,EAAYD,SAAA,cAAlB,QAEAD,EAAA,eACAA,EAAA,gCAEIxZ,EAAJ,QACEwZ,EAAA,sBAA2BxZ,EAA3B,QAGF,MAAkD8Y,EAAUrG,EAAG+B,EAA/D,GAAM,EAAN,EAAM,SAAN,EAAM,QAAN,EAAM,IAAN,EAAM,IAAN,EAAM,QAAgC2E,EAAtC,EAAsCA,QAEhCxZ,EAAO,GAAH,OAAV,EAAgBuV,EAAN,MACVwE,EAAA,gCACAA,EAAA,cACAA,EAAA,eAEAlF,EAAA,eAEA,IAAMpD,EAAW6C,OAAA,iBAAjB,GACI7C,GAAJ,WAAgBA,EAAA,WACdoD,EAAA,0BACAA,EAAA,mCAGFkF,EAAA,4CACAA,EAAA,8CACA9D,EAAU8D,EAAW,aAAZ,OAAyBN,EAAzB,aAA+BC,EAA/B,qBAA6CJ,EAA7C,YAAsDA,EAAtD,YAAT,EAAS,MACTN,EAAQe,EAAR,GACAA,EAAA,kBAA8BrV,OAAOsV,YAArC,OAEAC,YAAW,WACTF,EAAA,+CACAA,EAAA,yCACA9D,EAAU8D,EAAW,aAAZ,OAAyBR,EAAzB,aAAT,EAAS,qBACTP,EAAQe,EAAR,OAJF,KAQFG,KAlDc,SAkDV,GACF,GAAKrF,GAAOA,EAAR,SAAuBA,EAAA,QAA3B,SAEA,IAAM8E,EAAU9E,EAAA,uBAAhB,uBAEA,OAAI8E,EAAA,OAAJ,CACA,IAAMI,EAAYJ,EAAQA,EAAA,OAA1B,GAEA,IAAII,EAAA,QAAJ,UACKA,EAAA,wBAEL,IAAMI,EAAOH,YAAA,MAAoBxI,OAAOuI,EAAA,QAAxC,WACMK,EAAQ9V,KAAA,IAAS,IAAT,EAAd,GAEA2V,YAAW,WACTF,EAAA,4CACAA,EAAA,0CACAf,EAAQe,EAAR,GAEAE,YAAW,WACT,IAAMN,EAAU9E,EAAA,uBAAhB,uBACI,IAAA8E,EAAA,QAAwB9E,EAAA,QAA5B,mBACEA,EAAA,eAAoBA,EAAA,QAApB,wBACOA,EAAA,QAAP,kBAGFkF,EAAA,YAAwBlF,EAAA,YAAekF,EAAvC,cAPF,OALF,QAkBJ,SAASM,GAAT,GACE,MAAwB,qBAAVha,KAAd,EAGF,SAASia,GAAT,GACE,IAAMja,EAAN,GACMqN,EAAUoF,EAAhB,cAEA,GAAKpF,GAAYA,EAAb,UAAgCA,EAAA,QAAhC,UAA2DoF,EAA/D,IAKA,GAFAA,EAAA,MAEImG,EAAJ,GACEvL,EAAA,mBACAA,EAAA,wBAMA,GAAIA,EAAA,QAAJ,QAA6B,OAO/B,GALArN,EAAA,OAAeqN,EAAA,kBAA4BwL,EAA3C,GACIxL,EAAA,QAAJ,QACErN,EAAA,MAAcqN,EAAA,QAAd,OAGEuL,EAAJ,GAAqB,CAEnB,GAAIvL,EAAA,QAAJ,gBAAqC,OAErCA,EAAA,wBAAkC,WAChCiM,GAAA,aAEFjM,EAAA,kBAA4B4G,OAAA,YAAkB,WACxC5G,GAAWA,EAAX,SAA8BA,EAAA,QAAlC,kBACEA,EAAA,0BACAA,EAAA,gCAHJ,QAOAiM,GAAA,aAIJ,SAASY,GAAT,GACE,IAAM7M,EAAUoF,EAAhB,cACA,GAAKpF,GAAYA,EAAjB,SAMA,GAJA4G,OAAA,aAAoB5G,EAAA,QAJO,WAQvB,aAAAoF,EAAA,MAAyBpF,EAAA,QAA7B,gBAQE,OAPAA,EAAA,0BACAA,EAAA,wBAF4D,UAK5DA,EAAA,kBAA4BuM,YAAW,WACrCM,GAAA,OAKJjG,OAAA,YAAkB,WACZ5G,EAAJ,UACEA,EAAA,uBAGJiM,GAAA,SAGF,SAASa,GAAT,GACE,IAAM9M,EAAUoF,EAAhB,cAEKpF,GAAYA,EAAjB,UAEIA,EAAA,QAAJ,kBACEA,EAAA,8BAGF4G,OAAA,aAAoB5G,EAAA,QAApB,YAGF,IAAI+M,IAAJ,EAEA,SAASC,GAAT,GACOD,IAAmB3H,EAAA,UAAc,OAAd,OAAgCA,EAAA,UAAc,OAAtE,QACE2H,IAAA,EACAH,GAAA,IAIJ,SAASK,GAAT,GACEF,IAAA,EACAF,GAAA,GAGF,SAASK,GAAT,IACE,IAAIH,KACFA,IAAA,EACAF,GAAA,IAIJ,SAASM,GAAT,OACE,IAAMC,EAAUT,GAAgB7F,EAAhC,OACA,GACEmF,GAAA,QAEF9E,EAAA,QAAaA,EAAA,SAAb,GACAA,EAAA,kBACA,IAAMxU,EAAQmU,EAAA,OAAd,GACInU,EAAJ,SACEwU,EAAA,qBAEExU,EAAJ,QACEwU,EAAA,cAAmBL,EAAA,MAAnB,OAEEnU,EAAJ,SACEwU,EAAA,eAAoBxU,EAApB,QAEEya,IAAJ,GACEjG,EAAA,iCAA8C,CAAEkG,SAAS,IACzDlG,EAAA,+BAA4C,CAAEkG,SAAS,IACvDlG,EAAA,gCAAmD,CAAEkG,SAAS,IAC9DlG,EAAA,mCAEAA,EAAA,iCACAA,EAAA,+BACAA,EAAA,kCAEAA,EAAA,+BACAA,EAAA,6BAEAA,EAAA,wBAb0B,IAgB1BA,EAAA,gCAA6C,CAAEkG,SAAS,MAC9CD,GAAL,GACLE,GAAA,GAIJ,SAASA,GAAT,GACEnG,EAAA,oCACAA,EAAA,qCACAA,EAAA,mCACAA,EAAA,oCACAA,EAAA,sCACAA,EAAA,kCACAA,EAAA,qCACAA,EAAA,kCACAA,EAAA,gCACAA,EAAA,oCACAA,EAAA,+BAGF,SAASoG,GAAT,OACEJ,GAAahG,EAAIL,GAAjB,GAcF,SAAS,GAAT,UACSK,EAAP,QACAmG,GAAA,GAGF,SAASE,GAAT,KACE,GAAI1G,EAAA,QAAkBA,EAAtB,UAIA,IAAM2G,EAAad,GAAgB7F,EAAnC,UACAqG,GAAahG,EAAIL,EAAjB,IAGK,IAAM4G,GAAS,CACpB5c,KADoB,GAEpBuW,OAAA,GACAmG,WAGF,MCtVe,iBAAW,CACxBpQ,KADwB,WAGxBoK,WAAY,CACVkG,OAAA,IAGFnK,MAAO,CACLuG,YADK,OAEL6D,OAFK,QAGL3D,SAHK,QAIL4D,MAAO,CACL1b,KADK,QAELiU,aAASnW,GAEX6d,UARK,QASLC,iBATK,OAULvO,KAVK,QAWLwO,KAAM,CAAC/W,OAXF,QAYLgX,GAAI,CAAChX,OAZA,QAaLiX,KAbK,QAcLC,QAdK,QAeLC,OAAQ,CACNjc,KAAM,CAACyT,QADD,QAENQ,QAAS,MAEXD,IAnBK,OAoBLxW,OAAQsH,QAGV5D,KAAM,iBAAO,CACX6W,UADW,EAEXmE,WAAY,KAGdrK,SAAU,CACRqC,QADQ,WAEN,IAAMA,EAAN,GAEA,OAAIlW,KAAJ,KAEIA,KAAJ,cAAsBkW,EAAQlW,KAAR,aAA4BA,KAA5B,UAClBA,KAAJ,aAAqBkW,EAAQlW,KAAR,YAA2BA,KAA3B,WAHDkW,GAOtBiI,eAXQ,WAWM,MACZ,gBAAOne,KAAP,WAAwBA,KAAD,UAAkBA,KAAzC,aAEFoe,YAdQ,WAeN,OAAIpe,KAAJ,UAEOyV,QACLzV,KAAKqe,QACLre,KAAKoZ,WADL,OAEApZ,KAAKoZ,WAFL,WAGApZ,KAAKse,OAJP,WAOFD,OAxBQ,WAyBN,OAAOre,KAAK8d,IAAM9d,KAAX,MAAwBA,KAA/B,MAEFwU,OAAQ,sBAGVgG,MAAO,CACL+D,OAAQ,iBAGV9L,QAAS,CACP+L,MADO,SACF,GACHxe,KAAA,kBAEFye,kBAJO,WAIU,MAEf,EADIf,EAAQ1d,KAAZ,MAGMkD,GAAI,GACRqN,MAAO,CACLmO,SAAU,aAAc1e,KAAd,OAA4BA,KAAKse,OAAjC,cAAmDxe,GAE/DsW,MAAOpW,KAJe,QAKtBqW,MAAOrW,KALe,OAMtBqT,MANsB,GAOtBiE,WAAY,CAAC,CACXpK,KADW,SAEXzK,MAAOzC,KAAKme,kBATN,iBAWPne,KAAK8d,GAAK,WAAX,KAXQ,iCAYH9d,KAD0B,YAXvB,IAaNwe,MAAOxe,KAAKwe,SAbN,uBAeH,QAfG,GAuBV,GALA,qBAAWxe,KAAP,QACF0d,EAAoB,MAAZ1d,KAAK8d,IACV9d,KAAK8d,KAAOtW,OAAOxH,KAAnB,KADH,MACkCA,KAAK8d,GAAGa,MAGxC3e,KAAJ,GAAa,CAGX,IAAI4Z,EAAc5Z,KAAlB,YACI4d,EAAmB5d,KAAK4d,kBAA5B,EAEI5d,KAAJ,aACE4Z,EAAc,UAAGA,EAAH,YAAkB5Z,KAAlB,YAAd,OACA4d,EAAmB,UAAGA,EAAH,YAAuB5d,KAAvB,YAAnB,QAGFgW,EAAMhW,KAAK+d,KAAO,YAAlB,cACAvW,OAAA,OAActE,EAAd,MAA0B,CACxB4a,GAAI9d,KADoB,GAExB0d,QACAC,UAAW3d,KAHa,UAIxB4Z,cACAgE,mBACAH,OAAQzd,KANgB,OAOxBge,QAAShe,KAAKge,eAGhBhI,GAAOhW,KAAK6d,KAAN,IAAsB7d,KAAtB,MAAN,MAEI,MAAAgW,GAAehW,KAAnB,OAA8BkD,EAAA,WAAmBlD,KAAnB,MAKhC,OAFIA,KAAJ,SAAiBkD,EAAA,aAAqBlD,KAArB,QAEV,CAAEgW,MAAK9S,SAEhB0b,cA9DO,WA8DM,WACX,GAAK5e,KAAD,IAAaA,KAAK6e,MAAlB,MAAiC7e,KAArC,QACA,IAAM4Z,EAAc,UAAG5Z,KAAK4Z,YAAR,YAAuB5Z,KAAKke,YAA5B,IAApB,OAEMS,EAAO,qBAAH,OAAV,GAEA3e,KAAA,WAAe,WAET,eAAqB,QAAD,KAAxB,IACE,gBAINka,OAAQ,gBCtJG,I,UAAA,cAAW,CACxBhN,KADwB,WAGxBmG,MAAO,CACLyL,MADK,QAELC,MAFK,QAGLC,OAHK,QAILC,OAAQxJ,SAGV5B,SAAU,CACRqL,OADQ,WAEN,OAAOzJ,SACJzV,KAAD,SACCA,KADD,QAECA,KAFD,QAGCA,KAJH,SAOFmf,gBATQ,WAUN,MAAO,CACL,kBAAmBnf,KADd,OAEL,gBAAiBA,KAFZ,MAGL,kBAAmBA,KAHd,OAIL,gBAAiBA,KAJZ,MAKL,kBAAmBA,KAAKgf,aCD1BI,GAAa,OAAAvJ,EAAA,MAAO,EAAD,QAKvB,EALuB,aAMvB,EAAkB,eAOL,GAAAuJ,GAAA,gBAAoC,CACjDlS,KADiD,QAGjDmG,MAAO,CACLuG,YAAa,CACX5X,KADW,OAEXiU,QAFW,WAGT,OAAKjW,KAAL,UAEOA,KAAKqf,UAAZ,YAF4B,KAKhCC,MATK,QAULC,UAVK,QAWLC,IAXK,QAYLC,KAZK,QAaLC,QAbK,QAcL5J,SAdK,QAeL6J,MAfK,QAgBLC,mBAhBK,QAiBLpK,QAjBK,QAkBLQ,IAAK,CACHhU,KADG,OAEHiU,QAAS,UAEX4J,KAtBK,QAuBLnK,KAvBK,QAwBL1T,KAAM,CACJA,KADI,OAEJiU,QAAS,UAEXxT,MAAO,MAGTS,KAAM,iBAAO,CACXgb,WAAY,kBAGdrK,SAAU,CACRqC,QADQ,WAEN,mFACE,SADK,GAEF,iCAFE,OAAP,IAGE,kBAAmBlW,KAHd,SAIL,eAAgBA,KAJX,MAKL,gBAAiBA,KALZ,OAML,kBAAmBA,KANd,SAOL,qBAAsBA,KAPjB,WAQL,aAAcA,KART,IASL,eAAgBA,KATX,MAUL,gBAAiBA,KAVZ,MAWL,cAAeA,KAXV,KAYL,cAAeA,KAZV,KAaL,iBAAkBA,KAbb,QAcL,kBAAmBA,KAdd,SAeL,eAAgBA,KAfX,MAgBL,eAAgBA,KAhBX,MAiBL,eAAgBA,KAjBX,QAkBL,iBAAkBA,KAlBb,QAmBL,gBAAiBA,KAnBZ,GAoBL,cAAeA,KApBV,KAqBL,cAAeA,KArBV,KAsBL,aAAcA,KAtBT,KAuBFA,KAvBE,cAwBFA,KAxBE,cAyBFA,KAzBE,kBA0BFA,KAAKmf,kBAGZrL,kBA/BQ,WAgCN,IAAI9T,KAAJ,SAEA,OAAO,0CAAP,OAEFme,eApCQ,WAoCM,MACN2B,GAAgB9f,KAAKyf,OAAQzf,KAAb,KAAwB,CAAE+f,QAAQ,GACxD,OAAI/f,KAAJ,WACK,SAAOA,KAAP,cAEPggB,MAzCQ,WA0CN,OAAQhgB,KAAD,OAAeA,KAAf,QAA8BA,KAA9B,WAAgDA,KAAvD,MAEFigB,WA5CQ,WA6CN,OAAOxK,SACJzV,KAAD,OACCA,KADD,OAECA,KAFD,WAGCA,KAHD,YAICA,KAJD,WAKCA,KALD,QAMmB,MAAlBA,KAAK2T,WAAqBC,OAAO5T,KAAP,WAP7B,KAUFkgB,QAvDQ,WAwDN,OAAOzK,QACLzV,KAAKyf,MACLzf,KAFF,MAKFwU,OA7DQ,WA8DN,yBACKxU,KAAKuU,oBAKdpB,QA1GiD,WA0G1C,WACCgN,EAAgB,CACpB,CAAC,OADmB,QAEpB,CAAC,UAFmB,YAGpB,CAAC,QAHH,YAOAA,EAAA,SAAsB,YAA4B,0BAA3B,EAA2B,KAA5B,EAA4B,KAC5C,wBAAJ,IAA0C,eAAS3Q,EAAU4Q,EAAnB,OAI9C3N,QAAS,CACP+L,MADO,SACF,IAEFxe,KAAD,qBAA6BA,KAA7B,KAAyCkV,EAAzC,QAAqDlV,KAAKqgB,IAA1D,OACArgB,KAAA,iBAEAA,KAAA,WAAkBA,KAAlB,UAEFsgB,WARO,WASL,OAAOtgB,KAAKoQ,eAAe,OAAQ,CACjCI,YAAa,kBACZxQ,KAAKwW,OAFR,UAIF+J,UAbO,WAcL,OAAOvgB,KAAKoQ,eAAe,OAAQ,CACjCgG,MAAO,iBACNpW,KAAKwW,OAAOgK,QAAU,CAACxgB,KAAKoQ,eAAe,EAAmB,CAC/DiD,MAAO,CACLoE,eADK,EAELrV,KAFK,GAGLkS,MAAO,SAMf6B,OAjJiD,SAiJ3C,GACJ,IAAM2C,EAAW,CACf9Y,KADe,aAEfA,KAAK0f,SAAW1f,KAFlB,aAIA,EAAsBA,KAAtB,oBAAM,EAAN,EAAM,IAAOkD,EAAb,EAAaA,KACPud,EAAWzgB,KAAKggB,MAClBhgB,KADa,mBAEbA,KAFJ,aAYA,MARA,WAAIgW,IACF9S,EAAA,WAAmBlD,KAAnB,KACAkD,EAAA,eAAuBlD,KAAvB,UAEFkD,EAAA,YAAoB,CAAC,SAAU,UAAUwd,SAAS,OAA9B,OAA8B,CAAO1gB,KAArC,QAChBA,KADgB,MAEhB2gB,KAAA,UAAe3gB,KAFnB,OAIOuW,EAAEP,EAAKhW,KAAK8Z,SAAW5W,EAAOud,EAASzgB,KAAD,MAArC,GAAR,MCjME4gB,I,wCAAU,CACdC,UADc,gBAEdC,UAAW,UAGb,SAASC,GAAT,GACE,IADgC,EAC1BC,EAAN,GADgC,IAGhB3K,EAAA,MAAYuK,GAA5B,YAHgC,IAGhC,2BAAgD,KAAhD,EAAgD,QAC9C,EAAiB5L,EAAA,MAAQ4L,GAAzB,iCAAI,EAAJ,KAAI,EAAJ,KACApe,EAAMA,EAAN,OACA,IAIA,kBAAWwQ,IACTA,EAAMA,EAAN,QAEFgO,EAAS,eAAT,QAb8B,8BAgBhC,SASY,cACZ,IAD+B,EACzBC,EAAN,GACIpU,EAAYjN,UAAhB,OAIA,MAAOiN,IAGL,cAAarF,OAAA,KAAY5H,UAAzB,mBACE,OADF,EAAwC,KACtC,GAEE,YACA,iBACMA,UAAA,GAAJ,KACEqhB,EAAA,GAAoBC,GAAaD,EAAD,GAAoBrhB,UAAA,GAApD,KAEF,MACF,YACMA,UAAA,GAAJ,KACEqhB,EAAA,GAAoBE,GAAYF,EAAD,GAAoBrhB,UAAA,GAAnD,KAEF,MAEF,kBACE,IAAKA,UAAA,GAAL,GACE,WAEF,IAAIqhB,EAAA,KACFA,EAAA,OAEEA,EAAJ,KAEEA,EAAA,SAEFA,EAAA,IAAqBrhB,UAAA,MAArB,OACA,MAMF,SACA,eACMA,UAAA,GAAJ,KACEqhB,EAAA,GAAoBG,GAAeH,EAAD,GAAoBrhB,UAAA,GAAtD,KAEF,MAEF,YACA,YACA,eACA,kBACA,kBACA,WACA,iBACE,IAAKA,UAAA,GAAL,GACE,MAEGqhB,EAAL,KACEA,EAAA,OAEFA,EAAA,oCAAyBrhB,UAAA,GAAL,IAA4BqhB,EAAY7G,IAC5D,MAEF,QACO6G,EAAL,KACEA,EAAA,GAAoBrhB,UAAA,GAApB,IAMV,SAGI,iBAIJ,SACA,GAEAJ,EAAS,eAA8B,kBAAXA,EAAsBuhB,GAA7B,GAArBvhB,GAEQA,EAAA,OAA6C,kBAAXiQ,EAAsBsR,GAA7B,GAAnC,IAJoBvhB,EADAiQ,EAQhB,iBACJ,SACA,GAEOjQ,EAAS,yBAAH,GAFOiQ,EADAjQ,EAMhB,cAIJ,8CAAc,OAAO,UAAP,8BACd,8CAAc,OAAO,UAAP,8BAId,IAFA,IAAM6hB,EAAN,GAESxU,EAAT,EAAgBA,KAAM,CACpB,IAAMxD,EAAN,EAAS,qBAAT,OAAS,YAAT,GACA,IAAK,IAAL,OACOA,EAAL,KAEIgY,EAAJ,GAGEA,EAAA,GAAe,UAAyBhY,EAAzB,GAAqCgY,EAApD,IAGAA,EAAA,GAAchY,EAAd,IAKN,SC5JF,SAASiY,KAEkC,UADzCD,EACyC,uDAF3C,GAE2C,mBAF3C,EAE2C,iCAF3C,EAE2C,kBAGzC,OAAO,EAAAxM,SAAA,0BAAP,IAGI,eAGS,IADb0M,EACa,uDAHT,iBAGS,uCAEb,MAAO,CACLrU,OAEAsU,YAHK,EAKLnO,MAAO,CACLoO,MAAO,CACLzf,KADK,QAELiU,SAAS,GAEXyL,YAAa,CACX1f,KADW,QAEXiU,SAAS,GAEX0L,cAAe,CACb3f,KADa,QAEbiU,SAAS,GAEX2L,KAAM,CACJ5f,KADI,OAEJiU,QAAS2L,GAEXL,OAAQ,CACNvf,KADM,OAENiU,QAASsL,IAIbpL,OA5BK,SA4BC,KACJ,IAAMH,EAAM,aAAH,OAAgBjN,EAAA,qBAAzB,IACM7F,EAAkB,CACtBmQ,MAAO,CACLnG,OACA0U,KAAM7Y,EAAA,MAAc6Y,MAEtBtL,GAAI,CACFuL,YADE,SACS,GACT5K,EAAA,sBAA2BlO,EAAA,MAA3B,OACAkO,EAAA,4BAAiClO,EAAA,MAAjC,UA2CN,OAtCIA,EAAA,MAAJ,gBACE7F,EAAA,SAAiBoe,GAAiBpe,EAAA,GAAD,OAAkB,SAAA+T,GACjD,IAAM,EAAN,EAAM,YAAN,EAAM,aAAN,EAAM,YAAsC6K,EAA5C,EAA4CA,aAC5C7K,EAAA,yBAA8B,CAC5B8K,SAAU9K,EAAA,MADkB,SAE5B+D,IAAK/D,EAAA,MAFuB,IAG5B6D,KAAM7D,EAAA,MAHsB,KAI5B3C,MAAO2C,EAAA,MAJqB,MAK5BhD,OAAQgD,EAAA,MAAShD,QAEnBgD,EAAA,0BACAA,EAAA,UAAe+K,EAAf,KACA/K,EAAA,WAAgBgL,EAAhB,KACAhL,EAAA,YAAiBiL,EAAjB,KACAjL,EAAA,aAAkB6K,EAAlB,QAEF5e,EAAA,cAAsBoe,GAAiBpe,EAAA,GAAD,YAAuB,SAAA+T,GAC3D,GAAIA,GAAMA,EAAV,yBAAuC,CACrC,MAA+CA,EAA/C,yBAAM,EAAN,EAAM,WAAN,EAAM,MAAN,EAAM,OAAN,EAAM,MAA8BhD,EAApC,EAAoCA,cAC7BgD,EAAP,yBACAA,EAAA,eAAoB8K,GAApB,GACA9K,EAAA,UAAe+D,GAAf,GACA/D,EAAA,WAAgB6D,GAAhB,GACA7D,EAAA,YAAiB3C,GAAjB,GACA2C,EAAA,aAAkBhD,GAAlB,QAIFlL,EAAA,MAAJ,cACE7F,EAAA,SAAiBoe,GAAiBpe,EAAA,GAAD,OAAkB,SAAA+T,GAChDA,EAAA,gBAA6BA,EAAA,MAA7B,QACDA,EAAA,wBAEF/T,EAAA,cAAsBoe,GAAiBpe,EAAA,GAAD,YAAuB,SAAA+T,GAC3D,IAAQA,EAAA,cAAoBA,EAAA,iBAApB,QAILV,EAAEP,EAAKmM,GAAUpZ,EAAD,KAAf,GAAqCA,EAA7C,YAKA,iBAGW,IAAf6Y,EAAe,uDAHX,SAKJ,MAAO,CACL1U,OAEAsU,YAHK,EAKLnO,MAAO,CACLuO,KAAM,CACJ5f,KADI,OAEJiU,QAAS2L,IAIbzL,OAZK,SAYC,KACJ,OAAOI,EAAE,aAEP4L,GAAUpZ,EAAD,KAAe,CACtBsK,MAAO,CAAEnG,QACToJ,GAAI8L,IAENrZ,EANF,YC5GQ,kBAA8C,IAAnCsZ,EAAmC,uDAA9C,GAAqCxG,EAAS,wDACpDyG,EAAezG,EAAI,QAAzB,SACM0G,EAAiB,SAAH,OAAY,eAAhC,IAEA,MAAO,CACLV,YADK,SACM,GACT5K,EAAA,QAAaA,EAAb,WACAA,EAAA,8BACEuL,WAAYvL,EAAA,MADK,WAEjBwL,SAAUxL,EAAA,MAFO,UAGjB,EAAgBA,EAAA,WAIpByL,MAVK,SAUA,GACH,IAAMC,EAAe1L,EAArB,cAEAA,EAAA,sCAH0B,aAK1BA,EAAA,wBACA,IAAM2B,EAAS,GAAH,OAAM3B,EAAlB,GAAY,MAEZA,EAAA,aAEKA,EAVqB,aAY1BA,EAAA,iBAAsB0L,EAAtB,WAEIN,GAAuBpL,EAA3B,SACEA,EAAA,yBAGF2L,uBAAsB,WACpB3L,EAAA,eAIJ4L,WAjCK,EAkCLC,eAlCK,EAoCLC,MApCK,SAoCA,GACH9L,EAAA,8BACEuL,WADiB,GAEjBC,SAAUxL,EAAA,MAFO,UAGjB,EAAgBA,EAAA,UAGlBA,EAAA,wBACAA,EAAA,mBAA4BA,EAA5B,SACKA,EATqB,aAW1B2L,uBAAsB,kBAAO3L,EAAA,SAA7B,QAGF+L,aACAC,eAAgBD,GAGlB,cACMX,GAAuBpL,EAA3B,SACEA,EAAA,4BAEFiM,EAAA,GAGF,cACE,IAAM9gB,EAAO6U,EAAA,cAAb,GACAA,EAAA,eAAoBA,EAAA,cAApB,SACA,MAAI7U,IAAc6U,EAAA,mBACXA,EAAP,gBC9DSkM,IAXsBC,GAA5B,uBACmCA,GAAnC,+BACuBA,GAAvB,kBAC8BA,GAA9B,0BACwBA,GAAxB,mBACuBA,GAAuB,iBAAkB,gBAAhE,UAG0BA,GAA1B,qBACgCA,GAAhC,4BAC6BA,GAA7B,yBACwBA,GAAxB,oBAMMC,IALmBD,GAAzB,oBAC2BA,GAA3B,uBACkCA,GAAlC,+BAC2BA,GAA3B,uBACkCA,GAAlC,+BAC0BA,GAA1B,uBACiCA,GAAjC,8BAC0BA,GAA1B,sBACiCA,GAAjC,8BAG0BE,GAA2B,oBAAqB,MAC/CA,GAA2B,sBAAuB,GAA0B,IAAvG,ICxBD,cAEY,IADhBlJ,EACgB,uDAFZ,QAEJC,EAAgB,uDAFZ,SAIJ,OAAO,cAAW,CAChBnN,KADgB,YAGhBoN,MAAO,CACLF,OACAC,SAGFhH,MAAO,kBACL,EAAQ,CACNkH,UAAU,IAIdrX,KAdgB,WAed,MAAO,CACLqgB,kBAAmBvjB,KAAKoa,KAI5BvG,SAAU,CACR2P,cAAe,CACbhgB,IADa,WAEX,OAAOxD,KAAP,mBAEFqB,IAJa,SAIV,GACG2R,IAAQhT,KAAZ,oBAEAA,KAAA,oBAEAA,KAAA,eAKNwa,MAAO,kBACL,GADG,SACH,GACExa,KAAA,yBAOR,IAAMyjB,GAAY,KAElB,MCjCM,GAAa,OAAA5N,EAAA,MAAO,EAExB,EAAoB,CAAC,WAAY,QAAS,MAFnB,cAAzB,QAQe,aAAkB,CAC/B3I,KAD+B,oBAG/BoK,WAAY,CAAEC,aAEdlE,MAAO,CACLqQ,OAAQ,CACN1hB,KADM,QAENiU,SAAS,GAEX0N,gBAAiB,CACf3hB,KADe,OAEfiU,QAAS,MAEX2N,kBAAmB,CACjB5hB,KAAM,CAAC4R,OADU,QAEjBqC,QAAS,MAEX4N,YAAa,CACX7hB,KAAM,CAAC4R,OADI,QAEXqC,QAAS,KAEX3C,MAAO,CACLtR,KADK,OAELiU,QAAS,WAEXhC,OAAQ,CACNjS,KAAM,CAAC4R,OADD,QAENqC,QAAS,GAEXwB,cAzBK,QA0BLqM,MA1BK,QA2BLlW,QA3BK,QA4BL4H,QA5BK,QA6BLuO,OA7BK,QA8BLC,QA9BK,QA+BLvhB,MAAO,CACLT,KAAM,CAAC4R,OADF,QAELqC,QAAS,IAIb/S,KA1C+B,WA2C7B,MAAO,CACLqgB,kBAAmBvjB,KAAKyC,OADnB,EAELmV,WAAW,IAIf/D,SAAU,CACRoQ,mBADQ,WAEN,OAAOjkB,KAAKoQ,eAAe,MAAOpQ,KAAKuT,mBAAmBvT,KAAK2jB,iBAAmB3jB,KAAhD,MAA4D,CAC5FwQ,YAD4F,gCAE5F6F,MAAOrW,KAAKkkB,oBAGhBC,YAPQ,WAQN,OAAOnkB,KAAKoQ,eAAepQ,KAApB,mBAA6C,CAACA,KAArD,mBAEFokB,gBAVQ,WAWN,OAAOpkB,KAAKyX,cAAgBzX,KAArB,sBAAkDA,KAAzD,qBAEFqkB,eAbQ,WAcN,OAAOrkB,KAAKoQ,eAAe,MAAO,CAChCI,YADgC,4BAEhC6F,MAAOrW,KAAKwU,UAGhB8P,oBAnBQ,WAoBN,OAAOtkB,KAAKoQ,eAAe,MAAOpQ,KAAKuT,mBAAmBvT,KAAxB,MAAoC,CACpEwQ,YADoE,iCAEpE6F,MAAO,CACL/B,MAAO,eAActU,KAAD,0BAI1BukB,sBA3BQ,WA4BN,OAAOvkB,KAAKoQ,eAAe,MAAO,CAChCI,YADgC,mCAEhC4F,MAAO,CACL,2CAA4CpW,KAAK0jB,SAElD,CACD1jB,KAAKwkB,eADJ,QAEDxkB,KAAKwkB,eAPP,YAUFC,eAtCQ,WAuCN,OAAKzkB,KAAL,OAEOA,KAAKoQ,eAAe,MAAOpQ,KAAKyT,aAAazT,KAAlB,MAA8B,CAC9DwQ,YAD8D,4BAE9D6F,MAAO,CACL/B,MAAO,eAAc,IAAMtU,KAAP,0BALC,MAS3BkkB,gBAhDQ,WAgDO,MACPN,EAA8C,MAA1B5jB,KAAK4jB,kBAC1B5jB,KAAK2jB,gBAAkB,EADF,GAEtB3L,WAAWhY,KAFf,mBAIA,UACEob,QADK,GAAP,iBAEGpb,KAAK0kB,WAAa,QAAnB,OAAsC,eAAc1kB,KAAD,gBAF9C,MAAP,yBAGS,eAAc0G,KAAA,MAAY1G,KAAK2kB,iBAAmB3kB,KAArC,uBAHtB,GAMFkW,QA3DQ,WA4DN,uBACE,8BAA+BlW,KAD1B,SAEL,2BAA4BA,KAFvB,MAGL,2BAA4BA,KAHvB,MAIL,8BAA+BA,KAJ1B,SAKL,6BAA8BA,KALzB,WAML,6BAA8BA,KANzB,QAOL,6BAA8BA,KAPzB,QAQL,6BAA8BA,KARzB,WASFA,KAAK4kB,eAGZC,mBAxEQ,WAyEN,OAAO7kB,KAAKyX,cAAgB0L,GAA5B,IAEFuB,WA3EQ,WA4EN,OAAO1kB,KAAK8kB,SAASC,MAAQ/kB,KAA7B,SAEF2kB,iBA9EQ,WA+EN,OAAO3kB,KAAKglB,UAAUhlB,KAAtB,cAEF+X,gBAjFQ,WAkFN,OAAO/X,KAAKglB,UAAUhlB,KAAtB,oBAEFilB,SApFQ,WAqFN,OAAOxP,QAAQzV,KAAKoZ,WAApB,SAEF5E,OAvFQ,WAwFN,IAAMA,EAAN,GAUA,OARKxU,KAAL,SACEwU,EAAA,UAGGxU,KAAD,eAAJ,MAA2BgY,WAAWhY,KAAX,oBACzBwU,EAAA,MAAe,eAAcxU,KAAD,iBAA5B,MAGF,IAIJyS,QAAS,CACP6N,WADO,WAEL,IAAM4E,EAAO,eAAQllB,KAAM,UAAW,CAAEyC,MAAOzC,KAAKujB,oBAEpD,SAEOvjB,KAAKoQ,eAAe,MAAO,CAChCI,YAAa,8BADf,GAFkB,MAMpB2U,aAVO,WAWL,IAAMC,EAAYplB,KAAlB,WAMA,OAJIA,KAAJ,WACEolB,EAAA,MAAkBplB,KAAlB,SAGF,GAEFwkB,eAnBO,SAmBO,GACZ,OAAOxkB,KAAKoQ,eAAe,MAAOpQ,KAAKuT,mBAAmBvT,KAAxB,MAAoC,CACpEwQ,YADoE,mCAEpE4F,MAAO,kBACL,GAAQ,OAIdiP,QA3BO,SA2BA,GACL,GAAKrlB,KAAL,UAEA,MAAkBA,KAAKqgB,IAAvB,wBAAQ/L,EAAR,EAAQA,MAERtU,KAAA,cAAqBkV,EAAA,UAArB,MAEFgE,UAlCO,SAkCE,OACPlZ,KAAA,aAEFglB,UArCO,SAqCE,GACP,OAAIviB,EAAJ,EAAsB,EAClBA,EAAJ,IAAwB,IACjBuV,WAAP,KAIJ7B,OAnM+B,SAmMzB,GACJ,IAAMjT,EAAO,CACXsN,YADW,oBAEXD,MAAO,CACL4I,KADK,cAEL,gBAFK,EAGL,gBAAiBnZ,KAHZ,iBAIL,gBAAiBA,KAAKyX,mBAAgB3X,EAAYE,KAAK+X,iBAEzD3B,MAAOpW,KARI,QASXsX,WAAY,CAAC,CACXpK,KADW,YAEXzK,MAAOzC,KAAKkZ,YAEd7C,MAAO,CACLuE,OAAQ5a,KAAK4a,OAAS,OADjB,EAEL3G,OAAQjU,KAAK0jB,OAAS,eAAc1jB,KAA5B,QAFH,EAGLgb,IAAKhb,KAAKgb,IAAM,OAAIlb,GAEtBwW,GAAItW,KAAKmlB,gBAGX,OAAO5O,EAAE,MAAOrT,EAAM,CACpBlD,KADoB,eAEpBA,KAFoB,mBAGpBA,KAHoB,eAIpBA,KAJoB,YAKpBA,KALF,kBCvPJ,MCce,0BAA+B,CAC5CkN,KAD4C,WAG5CmG,MAAO,CACLqM,QAAS,CACP1d,KAAM,CAACyT,QADA,QAEPQ,SAAS,GAEXqP,aAAc,CACZtjB,KAAM,CAAC4R,OADK,QAEZqC,QAAS,IAIbxD,QAAS,CACP8S,YADO,WAEL,WAAIvlB,KAAK0f,QAA0B,KAE5B1f,KAAKwW,OAAOgP,UAAYxlB,KAAKoQ,eAAe,GAAiB,CAClEiD,MAAO,CACLsH,UADK,EAELrH,OAAyB,IAAjBtT,KAAK0f,SAAN,KAA0B1f,KAAK0f,QACjC1f,KAAKsT,OADH,UAEHtT,KAJC,QAKLiU,OAAQjU,KALH,aAMLyX,eAAe,SCzBV,UAAA5B,EAAA,MAAO,GAAD,GAAN,UAIN,CACP3I,KADO,SAGPmG,MAAO,CACL3T,KADK,QAEL+lB,MAFK,QAGLC,IAHK,OAILrW,KAJK,QAKLiW,aAAc,CACZtjB,KAAM,CAAC4R,OADK,QAEZqC,QAAS,GAEX0P,OAAQlQ,SAGV5B,SAAU,CACRqC,QADQ,WAEN,sCACE,UADK,GAEF,iCAFE,OAAP,IAGE,eAAgBlW,KAHX,KAIL,gBAAiBA,KAJZ,MAKL,eAAgBA,KALX,YAML,kBAAmBA,KANd,QAOL,mBAAoBA,KAPf,SAQL,iBAAkBA,KARb,QASF,wCAGPwU,OAdQ,WAeN,IAAM6B,EAAK,kBACN,sCAOL,OAJIrW,KAAJ,MACEqW,EAAA,0BAA2BrW,KAA3B,2CAGF,IAIJyS,QAAS,CACP8S,YADO,WAEL,IAAMpP,EAAS,oCAAf,MAEA,SAEOnW,KAAKoQ,eAAe,MAAO,CAChCI,YADgC,mBAEhChO,IAAK,YACJ,CAHH,IAFoB,OASxB2T,OAvDO,SAuDD,GACJ,MAAsBnW,KAAtB,oBAAM,EAAN,EAAM,IAAOkD,EAAb,EAAaA,KASb,OAPAA,EAAA,MAAalD,KAAb,OAEIA,KAAJ,cACEkD,EAAA,MAAaA,EAAA,OAAb,GACAA,EAAA,kBAGKqT,EAAEP,EAAKhW,KAAKuT,mBAAmBvT,KAAxB,MAAN,GAAiD,CACvDA,KADuD,cAEvDA,KAAKwW,OAFP,aCnFEoP,GAAe,eAArB,mBAEMC,IADgB,eAAtB,oBACkB,eAAlB,iBCEMC,IDDa,eAAnB,iB,wCCCoB,CAAC,KAAM,KAAM,KAAjC,OAEMC,GAAmB,WACvB,OAAOD,GAAA,QAAmB,cAKxB,OAJAzS,EAAA,GAAa,CACXrR,KAAM,CAACyT,QAAS3O,OADL,QAEXmP,SAAS,GAEX,IALF,IADuB,GAUnB+P,GAAe,WACnB,OAAOF,GAAA,QAAmB,cAKxB,OAJAzS,EAAM,SAAW,eAAjB,IAAoC,CAClCrR,KAAM,CAAC8E,OAD2B,QAElCmP,QAAS,MAEX,IALF,IADmB,GAUfgQ,GAAc,WAClB,OAAOH,GAAA,QAAmB,cAKxB,OAJAzS,EAAM,QAAU,eAAhB,IAAmC,CACjCrR,KAAM,CAAC8E,OAD0B,QAEjCmP,QAAS,MAEX,IALF,IADkB,GAUdiQ,GAAU,CACdC,IAAK3e,OAAA,KADS,IAEdoR,OAAQpR,OAAA,KAFM,IAGd4e,MAAO5e,OAAA,UAGT,SAAS6e,GAAT,OACE,IAAIC,EAAJ,EACA,GAAI,MAAAtT,IAAJ,IAAmBA,EAAnB,CAGA,KAAU,CACR,IAAMuT,EAAanM,EAAA,UAAnB,IACAkM,GAAa,IAAJ,OAAT,GAKF,MAAI,QAAAtkB,GAAmB,KAAAgR,IAAvB,IAAqCA,GAKrCsT,GAAa,IAAJ,OAAT,GACOA,EAAP,eAJSA,EAAP,eAOJ,IAAME,GAAQ,IAAd,IAEe,iBAAW,CACxBtZ,KADwB,QAExBsU,YAFwB,EAGxBnO,MAAO,6DACLoT,KAAM,CACJzkB,KAAM,CAACyT,QAAS3O,OADZ,QAEJmP,SAAS,IAHN,IAAF,IAMH2C,OAAQ,CACN5W,KAAM,CAAC8E,OADD,QAENmP,QAAS,OARN,IAAF,IAWHmQ,MAAO,CACLpkB,KAAM,CAAC8E,OADF,QAELmP,QAAS,OAbN,IAAF,IAgBHyQ,UAAW,CACT1kB,KADS,OAETiU,QAFS,KAGT0Q,UAAY,SAAAhU,GAAD,MAAc,CAAC,OAAQ,QAAS,MAAO,SAAU,WAAY,WAAW+N,SAAS/N,KAE9FqD,IAAK,CACHhU,KADG,OAEHiU,QAAS,SAGbE,OA7BwB,SA6BlB,EA7BkB,GA6BoB,IAAjC,EAAiC,EAAjC,QAAiC,EAAjC,OAAiC,EAAjC,SAELyQ,GAFsC,EAARlN,OAElC,IACA,IAAK,IAAL,OACEkN,GAAY9f,OAAQuM,EAApB,IAEF,IAAIwT,EAAYL,GAAA,IAAhB,GA4BA,OA1BA,GAAgB,iBAGd,EACA,SAHAK,EADc,GAId,GACEX,GAAA,YAAsB,SAAA9L,GACpB,IAAM3X,EAAoC4Q,EAA1C,GACMiT,EAAYD,GAAgBrkB,EAAMoY,EAAxC,GACA,GAAeyM,EAAA,WAInB,IAAMC,EAAgBD,EAAA,MAAe,SAAAP,GAAS,OAAIA,EAAA,WAAlD,WAEAO,EAAA,SAEEV,KAAMW,IAAkBzT,EAFX,MAAf,+BAGUA,EAAR,MAAuBA,EAHV,MAAf,kCAIaA,EAAX,QAA4BA,EAJf,QAAf,iCAKYA,EAAV,OAA0BA,EALb,OAAf,sCAMiBA,EAAf,WAAmCA,EAAMqT,WAN3C,IASAF,GAAA,SAvBc,GA0BTjQ,EAAElD,EAAD,IAAY8O,GAAUjf,EAAM,CAAEkT,MAAOyQ,IAA7C,M,oBChIU,eAEZ,OAAO,cAAW,CAChB3Z,KAAM,KAAF,OADY,GAGhBsU,YAHgB,EAKhBnO,MAAO,CACL0T,GADK,OAEL/Q,IAAK,CACHhU,KADG,OAEHiU,QAAS,QAIbE,OAbgB,SAaV,EAbU,GAaoB,IAAzB,EAAyB,EAAzB,QAAyB,EAAzB,KAAe2C,EAAU,EAAVA,SACxB5V,EAAA,YAAoB,UAAGgK,EAAH,YAAWhK,EAAA,aAAZ,IAAnB,OAEA,IAAQqN,EAAR,EAAQA,MACR,KAAW,CAETrN,EAAA,SACA,IAAMgT,EAAU1O,OAAA,gBAA0B,SAAAhF,GAGxC,YAAIA,EAAgB,OAAO,EAE3B,IAAMC,EAAQ8N,EALgC,GAS9C,OAAI/N,EAAA,WAAJ,UACEU,EAAA,YACA,GAGKT,GAAP,kBAAuBA,KAGrByT,EAAJ,SAAoBhT,EAAA,wBAAwBgT,EAAA,KAAxB,OAQtB,OALI7C,EAAJ,KACEnQ,EAAA,SAAgBA,EAAA,UAAhB,GACAA,EAAA,YAAmBmQ,EAAnB,IAGKkD,EAAElD,EAAD,MAAR,MC1CS,ICQf,GDRe,0BAAyB,CACtCnG,KADsC,cAEtCsU,YAFsC,EAGtCnO,MAAO,CACL0T,GADK,OAEL/Q,IAAK,CACHhU,KADG,OAEHiU,QAAS,OAEX+Q,MAAO,CACLhlB,KADK,QAELiU,SAAS,IAGbE,OAdsC,SAchC,EAdgC,GAcF,IAClC,EADS,EAAyB,EAAzB,QAAyB,EAAzB,KAAe2C,EAAU,EAAVA,SAEhBvI,EAAR,EAAQA,MA2BR,OA1BA,IAEErN,EAAA,SACAgT,EAAU1O,OAAA,gBAA0B,SAAAhF,GAGlC,YAAIA,EAAgB,OAAO,EAE3B,IAAMC,EAAQ8N,EAL0B,GASxC,OAAI/N,EAAA,WAAJ,UACEU,EAAA,YACA,GAGKT,GAAP,kBAAuBA,MAIvB4Q,EAAJ,KACEnQ,EAAA,SAAgBA,EAAA,UAAhB,GACAA,EAAA,YAAmBmQ,EAAnB,IAGKkD,EACLlD,EADM,IAEN8O,GAAUjf,EAAM,CACdsN,YADc,YAEd4F,MAAOvB,MAAW,CAChB,mBAAoBxB,EAAM2T,QADrB,OAEG9Q,GAFH,MAJX,M,8BC1BJ,SAAS+Q,GAAT,GACE,MAAO,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAAOC,MAAK,SAAAlU,GAAG,OAAImU,EAAA,SAA9D,MAGF,SAASC,GAAT,GACE,MAAQ,0CAA0CC,KAAK5H,IAAS,UAAU4H,KAAlE,IAAgF5H,EAAA,OAAxF,GAdF,YACE,mBACA,kBACA,oBACA,mBACA,kBACA,oBANF,CAAK6H,QAAL,KAiBA,IAAM,GAAQ,OAAAzR,EAAA,MAAO,EAAD,KAIlB,QAJY,OAML,CACP3I,KADO,SAGPmG,MAAO,CACLkU,MADK,QAELzN,SAFK,QAGLgB,KAHK,QAILC,MAJK,QAKL3Y,KAAM,CAACwR,OALF,QAMLoC,IAAK,CACHhU,KADG,OAEHuY,UAFG,EAGHtE,QAAS,MAIbpC,SAAU,CACRqL,OADQ,WAEN,UAEFsI,iBAJQ,WAKN,OAAO/R,QACLzV,KAAKkT,WAAWsL,OAASxe,KAAKkT,WADhC,aAMJT,QAAS,CACPgV,QADO,WAEL,IAAIC,EAAJ,GAGA,OAFI1nB,KAAKwW,OAAT,UAAyBkR,EAAW1nB,KAAKwW,OAAOP,QAAQ,GAAG4J,KAAlC,QAElB,eAAkB7f,KAAzB,IAEF2nB,QAPO,WAQL,IAAMC,EAAQ,CACZ3I,OAAQjf,KADI,OAEZ+e,MAAO/e,KAFK,MAGZkf,OAAQlf,KAHI,OAIZ8e,MAAO9e,KAJK,MAKZgf,OAAQhf,KAAKgf,QAGT6I,EAAe,wBAAiB,SAAArlB,GAAG,OAAIolB,EAA7C,MAEA,OACGC,GAAgBP,GAAjB,IAA4C,eAActnB,KAD5D,OAKF8nB,eAvBO,WAwBL,MAAO,CACLtX,YADK,qBAEL4F,MAAO,CACL,mBAAoBpW,KADf,SAEL,eAAgBA,KAFX,KAGL,eAAgBA,KAHX,iBAIL,gBAAiBA,KAJZ,MAKL,gBAAiBA,KAAKunB,OAExBhX,MAAO,gBACL,eAAgBvQ,KADX,iBAEL8Z,SAAU9Z,KAAKwnB,kBAAoBxnB,KAF9B,SAGLgC,KAAMhC,KAAKwnB,iBAAmB,cAHzB,GAIFxnB,KAAKiT,QAEVqD,GAAItW,KAAKkT,aAGb6U,kBA1CO,WA2CL,IAAMC,EAAWhoB,KAAjB,UACMioB,EAAc,iCACfjoB,KADe,kBAAH,IAEfqW,MAAO2R,EAAW,CAChBA,WACA/T,OAFgB,EAGhBK,MAAO0T,QACLloB,IAIN,OAFAE,KAAA,eAEA,GAEFkoB,YAxDO,SAwDI,GACThlB,EAAA,uCAAkBA,EAAL,OAAoBlD,KAAK4kB,cACtC5kB,KAAA,aAAkBA,KAAlB,UAEFmoB,eA5DO,SA4DO,KACZ,IAAMC,EAAN,GACMllB,EAAOlD,KAAb,iBAEImnB,EAJwC,iBAOtCkB,EAAiB5I,EAAA,QAAvB,KACM6I,EAAiBD,IAAvB,EAEA,EAEED,EAAA,SAEAjB,EAAW1H,EAAA,QAAX,GACIwH,GAAJ,KAA8BE,EAAA,KAGhCjkB,EAAA,YACAA,EAAA,YAEA,IAAM8kB,EAAWhoB,KAAjB,UAKA,OAJA,IAAckD,EAAA,MAAa,CAAE8kB,aAE7BhoB,KAAA,eAEOuW,EAAEvW,KAAKwnB,iBAAmB,SAAWxnB,KAApC,MAAR,IAEFuoB,cAxFO,SAwFM,KACX,IAAMC,EAAqB,CACzBpS,MADyB,cAEzB7F,MAAO,CACLwI,MADK,6BAELC,QAFK,YAGLG,KAHK,MAIL,eAAe,IAIb/W,EAAOpC,KAAb,UASA,OARA,IACEwoB,EAAA,MAAgB,CACdR,SADc,EAEd/T,OAFc,EAGdK,MAAOlS,IAIJmU,EAAEvW,KAAKwnB,iBAAmB,SAAzB,OAA4CxnB,KAA5C,oBAAsE,CAC5EuW,EAAE,MAAOiS,EAAS,CAChBjS,EAAE,OAAQ,CACRhG,MAAO,CACLkY,EAAGhJ,UAMbiJ,uBAtHO,SAsHe,KAIpB,IAAMxlB,EAAkB,CACtBkT,MAAO,CACL,qBAAqB,IAInBhU,EAAOpC,KAAb,UACA,IACEkD,EAAA,MAAa,CACX8kB,SADW,EAEX/T,OAFW,EAGXK,MAAOlS,IAIXpC,KAAA,eAEA,IAAM2oB,EAAYlJ,EAAlB,UAIA,OAHAvc,EAAA,MAAauc,EAAb,MACAvc,EAAA,SAAgBA,EAAhB,GAEOqT,EAAEvW,KAAKwnB,iBAAmB,SAAzB,OAA4CxnB,KAA5C,oBAAsE,CAC5EuW,EAAEoS,EADJ,OAMJxS,OAhLO,SAgLD,GACJ,IAAMsJ,EAAOzf,KAAb,UAEA,wBAAWyf,EACL2H,GAAJ,GACSpnB,KAAKuoB,cAAc9I,EAA1B,GAEKzf,KAAKmoB,eAAe1I,EAA3B,GAGKzf,KAAK0oB,uBAAuBjJ,EAAnC,MAIW,iBAAW,CACxBvS,KADwB,SAGxB0b,aAHwB,GAKxBpH,YALwB,EAOxBrL,OAPwB,SAOlB,EAPkB,GAOK,IAAlB,EAAkB,EAAlB,KAAQ2C,EAAU,EAAVA,SACb4O,EADuB,GAe3B,OAXIxkB,EAAJ,WACEwkB,EAAWxkB,EAAA,sBACTA,EAAA,SADS,WADM,SAOVA,EAAA,SAAP,mBACOA,EAAA,SAAP,WAGKqT,EAAE,GAAD,EAAcmR,EAAW,CAAH,GAA9B,MC/OW,I,8BAAA,OAAA7R,EAAA,gBAA0B,CACvC3I,KADuC,eAGvCmG,MAAO,CACLwV,YAAa,CAAC/hB,OADT,QAELgiB,aAAchiB,QAGhB+M,SAAU,CACRkV,oBADQ,WAEN,OAAOnV,OAAO5T,KAAd,cAEFgpB,YAJQ,WAKN,OAAOhpB,KAAK+oB,oBACR,CAAEE,cAAgB,EAAIjpB,KAAL,wBAAuC,UAD5D,GAIFkpB,cATQ,WAUN,OAAKlpB,KAAL,YAEOA,KAAKoQ,eAAe,MAAO,CAChCiG,MAAOrW,KADyB,YAEhCwQ,YAAa,wBAJe,KASlCiC,QAAS,CACP6N,WADO,WAEL,OAAOtgB,KAAKoQ,eAAe,MAAO,CAChCI,YADgC,wBAEhC4F,MAAOpW,KAAK8oB,cACX9oB,KAAKwW,OAHR,WAOJL,OApCuC,SAoCjC,GACJ,OAAOI,EAAE,MAAO,CACd/F,YADc,eAEd6F,MAAOrW,KAFO,iBAGdsW,GAAItW,KAAKoZ,YACR,CACDpZ,KADC,cAEDA,KANF,mBC9CJ,MC0BMmpB,GAAiC,qBAAXzS,QAA0B,yBAAtD,OAGe,UAAAb,EAAA,MAAO,GAAP,eAGN,CACP3I,KADO,QAGPoK,WAAY,CAAEC,aAEdlE,MAAO,CACL+V,IADK,OAELC,QAFK,QAGLC,MAHK,QAILC,SAJK,OAKLC,QALK,OAML1S,QAAS,CACP9U,KADO,OAIPiU,QAAS,iBAAO,CACdwT,UADc,EAEdC,gBAFc,EAGdC,eAAW7pB,KAGfiiB,SAAU,CACR/f,KADQ,OAERiU,QAAS,iBAEX2R,MApBK,OAqBLgC,IAAK,CACH5nB,KAAM,CAAC8E,OADJ,QAEHmP,QAAS,IAEX4T,OAzBK,OA0BLrH,WAAY,CACVxgB,KAAM,CAACyT,QADG,QAEVQ,QAAS,oBAIb/S,KArCO,WAsCL,MAAO,CACL4mB,WADK,GAELC,MAFK,KAGLC,WAHK,EAILC,2BAJK,EAKLC,kBALK,EAMLC,UAAU,IAIdtW,SAAU,CACRkV,oBADQ,WAEN,OAAOnV,OAAO5T,KAAKoqB,cAAcC,QAAUrqB,KAA3C,wBAEFoqB,cAJQ,WAKN,OAAOpqB,KAAK4pB,KAAL,WAAY,eAAO5pB,KAAP,KACf,CACA4pB,IAAK5pB,KAAK4pB,IADV,IAEAC,OAAQ7pB,KAAK6pB,QAAU7pB,KAAK4pB,IAF5B,OAGAJ,QAASxpB,KAAKwpB,SAAWxpB,KAAK4pB,IAH9B,QAIAS,OAAQzW,OAAO5T,KAAK6oB,aAAe7oB,KAAK4pB,IAA1B,SACZ,CACFA,IAAK5pB,KADH,IAEF6pB,OAAQ7pB,KAFN,OAGFwpB,QAASxpB,KAHP,QAIFqqB,OAAQzW,OAAO5T,KAAK6oB,aAAN,KAGpByB,cAlBQ,WAmBN,KAAMtqB,KAAKoqB,cAAcR,KAAO5pB,KAAKoqB,cAA/B,SAAwDpqB,KAA9D,UAA8E,MAAO,GAErF,IAAMuqB,EAAN,GACMX,EAAM5pB,KAAKgqB,UAAYhqB,KAAKoqB,cAAtB,QAA8CpqB,KAA1D,WAEIA,KAAJ,UAAmBuqB,EAAA,+BAAwCvqB,KAAxC,eACnB,GAASuqB,EAAA,6BAET,IAAMR,EAAQ/pB,KAAKoQ,eAAe,MAAO,CACvCI,YADuC,iBAEvC4F,MAAO,CACL,0BAA2BpW,KADtB,UAEL,0BAA2BA,KAFtB,QAGL,yBAA0BA,KAAKqpB,SAEjChT,MAAO,CACLkU,gBAAiBA,EAAA,KADZ,MAELC,mBAAoBxqB,KAAK+hB,UAE3Bvf,KAAMxC,KAAKgqB,YAIb,OAAKhqB,KAAL,WAEOA,KAAKoQ,eAAe,aAAc,CACvCG,MAAO,CACLrD,KAAMlN,KADD,WAEL4hB,KAAM,WAEP,CALH,IAF6BmI,IAWjCvP,MAAO,CACLoP,IADK,WAGE5pB,KAAL,UACKA,KAAKyqB,YADWzqB,KAAKO,UAAKT,OAAWA,GAA1C,IAGF,4BAA6B,UAG/B0S,QA9GO,WA+GLxS,KAAA,QAGFyS,QAAS,CACPlS,KADO,SACH,OAQF,IACE4oB,IAAA,GAECnpB,KAHH,OAMA,GAAIA,KAAKoqB,cAAT,QAAgC,CAC9B,IAAMM,EAAU,IAAhB,MACAA,EAAA,IAAc1qB,KAAKoqB,cAAnB,QACApqB,KAAA,oBAGEA,KAAKoqB,cAAT,KAA4BpqB,KAAKyqB,cAEnCE,OAvBO,WAwBL3qB,KAAA,SACAA,KAAA,aACAA,KAAA,aAAmBA,KAAnB,KAGEA,KAAK+pB,QACJ/pB,KAAKoqB,cAAcR,IAAIpjB,SAAS,SAAWxG,KAAKoqB,cAAcR,IAAIgB,WAFrE,yBAIM5qB,KAAK+pB,MAAMc,eAAiB7qB,KAAK+pB,MAArC,cACE/pB,KAAA,aAAoBA,KAAK+pB,MAAzB,aACA/pB,KAAA,sBAA6BA,KAAK+pB,MAAMG,aAAelqB,KAAK+pB,MAA5D,eAEA/pB,KAAA,0BAIN8qB,QAxCO,WAyCL9qB,KAAA,YACAA,KAAA,cAAoBA,KAApB,MAEF+qB,OA5CO,WA8CD/qB,KAAJ,QAAgBA,KAAK8pB,WAAa9pB,KAAK+pB,MAAMD,YAAc9pB,KAAK+pB,MAAhD,MAElBU,UAhDO,WAgDE,WACDV,EAAQ,IAAd,MACA/pB,KAAA,QAEA+pB,EAAA,OAAe,WAETA,EAAJ,OACEA,EAAA,gBAAsB,SAAAzhB,GACpB,OAAAkL,EAAA,MACE,qEACQ,gBADR,MAEClL,EAAA,oCAAmCA,EAAnC,SAHQ,IAAX,MADF,KAOQ,EAPR,QASA,YAGJyhB,EAAA,QAAgB/pB,KAAhB,QAEAA,KAAA,YACAA,KAAA,QAAe+pB,EAAA,MAAc/pB,KAA7B,OACAA,KAAA,uBAA8B+pB,EAAA,OAAe/pB,KAAKoqB,cAAlD,QACAL,EAAA,IAAY/pB,KAAKoqB,cAAjB,IACApqB,KAAA,kBAAwBA,KAAKoqB,cAA7B,KAEApqB,KAAA,aAAoBA,KAAKgrB,YAAzB,GACAhrB,KAAA,UAEFgrB,YA9EO,SA8EI,GAAqD,WAA5BC,EAA4B,uDAArD,IACHC,EAAO,SAAPA,IACJ,IAAM,EAAN,EAAM,cAAiBhB,EAAvB,EAAuBA,aAEnBW,GAAJ,GACE,iBACA,wBAA6BX,EAA7B,GACUxE,EAAD,WAAiB,EAAjB,WAAoC,EAApC,UAAJ,MAAyDuF,GAC9D5O,WAAW6O,EAAX,IAIJA,KAEF5K,WA5FO,WA6FL,IAAM6K,EAAiB,mCAAvB,MAOA,OANInrB,KAAJ,cACEA,KAAA,GAAQmrB,EAAR,WAA8B,CAC5B9U,MAAO,CAAE/B,MAAO,GAAF,OAAKtU,KAAKkqB,aAAV,SAIlB,GAEFkB,iBAtGO,WAuGL,GAAIprB,KAAKwW,OAAT,YAA6B,CAC3B,IAAM6U,EAAcrrB,KAAKgqB,UACrB,CAAChqB,KAAKoQ,eAAe,MAAO,CAC5BI,YAAa,wBACZxQ,KAAKwW,OAHU,cAApB,GAMA,OAAKxW,KAAL,WAEOA,KAAKoQ,eAAe,aAAc,CACvCiD,MAAO,CACLiY,QADK,EAELpe,KAAMlN,KAAKwiB,aAHf,GAF6B6I,EAAP,MAY5BlV,OA5OO,SA4OD,GACJ,IAAMoV,EAAO,4BAAb,GAEMroB,EAAOif,GAAUoJ,EAAD,KAAa,CACjC/a,YADiC,UAEjCD,MAAO,CACL,aAAcvQ,KADT,IAELmZ,KAAMnZ,KAAKopB,IAAM,WAAQtpB,GAE3BsW,MAAOpW,KAN0B,aASjCsX,WAAY6R,GACR,CAAC,CACDjc,KADC,YAEDyJ,UAAW,CAAE6U,MAAM,GACnB/oB,MAAO,CACLoU,QAAS7W,KADJ,KAEL8W,QAAS9W,KAAK8W,gBAGhBhX,IAUN,OAPAyrB,EAAA,SAAgB,CACdvrB,KADc,cAEdA,KAFc,cAGdA,KAHc,mBAIdA,KAJF,cAOOuW,EAAEgV,EAAD,MAAiBA,EAAzB,aCvSE,GAAc,CAAC,KAAM,KAAM,KAAjC,MAEME,GAAY,CAAC,QAAS,MAA5B,UAEA,SAASC,GAAT,KACE,OAAO,WAAmB,cAExB,OADArY,EAAMsY,EAAS,eAAf,IAAkCC,IAClC,IAFF,IAMF,IAAMC,GAAkB,SAAAlZ,GAAD,MAAc,8CAArC,IACMmZ,GAAaJ,GAAU,SAAS,iBAAO,CAC3C1pB,KAD2C,OAE3CiU,QAF2C,KAG3C0Q,UAAWkF,OAGPE,GAAoB,SAAApZ,GAAD,MAAc,wDAAvC,IACMqZ,GAAeN,GAAU,WAAW,iBAAO,CAC/C1pB,KAD+C,OAE/CiU,QAF+C,KAG/C0Q,UAAWoF,OAGPE,GAAyB,SAAAtZ,GAAD,MAAc,kEAA5C,IACMuZ,GAAoBR,GAAU,gBAAgB,iBAAO,CACzD1pB,KADyD,OAEzDiU,QAFyD,KAGzD0Q,UAAWsF,OAGP,GAAU,CACdE,MAAO3kB,OAAA,KADO,IAEd4kB,QAAS5kB,OAAA,KAFK,IAGd6kB,aAAc7kB,OAAA,UAGV8kB,GAAW,CACfH,MADe,QAEfC,QAFe,UAGfC,aAAc,iBAGhB,SAAS,GAAT,OACE,IAAI/F,EAAYgG,GAAhB,GACA,SAAItZ,EAAJ,CAGA,KAAU,CAER,IAAMuT,EAAanM,EAAA,UAAnB,IACAkM,GAAa,IAAJ,OAAT,GAIF,OADAA,GAAa,IAAJ,OAAT,GACOA,EAAP,eAGF,IAAM,GAAQ,IAAd,IAEe,iBAAW,CACxBpZ,KADwB,QAExBsU,YAFwB,EAGxBnO,MAAO,8CACL2C,IAAK,CACHhU,KADG,OAEHiU,QAAS,OAEXsR,MALK,QAMLgF,UANK,QAOLJ,MAAO,CACLnqB,KADK,OAELiU,QAFK,KAGL0Q,UAAWkF,KAVR,IAAF,IAaHO,QAAS,CACPpqB,KADO,OAEPiU,QAFO,KAGP0Q,UAAWoF,KAhBR,IAAF,IAmBHM,aAAc,CACZrqB,KADY,OAEZiU,QAFY,KAGZ0Q,UAAWsF,KAEVC,IAEL/V,OA7BwB,SA6BlB,EA7BkB,GA6BY,IAAzB,EAAyB,EAAzB,QAAyB,EAAzB,KAAe2C,EAAU,EAAVA,SAEpB8N,EAAJ,GACA,IAAK,IAAL,OACEA,GAAY9f,OAAQuM,EAApB,IAEF,IAAIwT,EAAY,OAAhB,GAyBA,OAvBA,GAAgB,iBAGd,EACA,SAHAA,EADc,GAId,GACE,eAAsB,SAAAzM,GACpB,IAAM3X,EAAiB4Q,EAAvB,GACMiT,EAAY,GAAgBtkB,EAAMoY,EAAxC,GACA,GAAeyM,EAAA,WAInBA,EAAA,SACE,aAAcxT,EADD,UAEb,aAAcA,EAFD,OAAf,iCAGYA,EAAV,OAA0BA,EAHb,OAAf,mCAIcA,EAAZ,SAA8BA,EAJjB,SAAf,yCAKoBA,EAAlB,cAAyCA,EAAMgZ,cALjD,IAQA,YApBc,GAuBT9V,EACLlD,EADM,IAEN8O,GAAUjf,EAAM,CACdsN,YADc,MAEd4F,MAAOyQ,IAJX,MCtHW,I,UAAA,OAAAhR,EAAA,MACb,QADa,OAGN,CACP3I,KADO,cAGPmG,MAAO,CACLmZ,MAAO/W,SAGTU,OAPO,SAOD,GACJ,OAAOI,EAAE,MAAO,CACd/F,YADc,cAEd4F,MAAO,gBACL,qBAAsBpW,KADjB,OAEFA,KAAK4kB,cAEVrU,MAAOvQ,KANO,OAOdsW,GAAItW,KAAKoZ,YACRpZ,KAAKwW,OARR,aCbAmS,GAAY,eACd,EACA,EACA/W,GACA,EACA,KACA,WACA,MAIa,aAAA+W,GAAiB,QAehC,IAAkBA,GAAW,CAAC8D,KAAA,GAAKC,MAAA,GAAM9G,gBAAaC,aAAU8G,QAAKC,cAAWC,MAAA,GAAMC,KAAA,GAAKC,gBAAA,GAAgBC,QAAKC,WAAA,M,kCCjChH,IAAI/tB,EAAI,EAAQ,QACZiQ,EAAa,EAAQ,QACrBC,EAAyB,EAAQ,QAIrClQ,EAAE,CAAEM,OAAQ,SAAUC,OAAO,EAAMuG,OAAQoJ,EAAuB,UAAY,CAC5EyL,MAAO,WACL,OAAO1L,EAAWnP,KAAM,KAAM,GAAI,Q,kCCRtC,IAAId,EAAI,EAAQ,QACZiQ,EAAa,EAAQ,QACrBC,EAAyB,EAAQ,QAIrClQ,EAAE,CAAEM,OAAQ,SAAUC,OAAO,EAAMuG,OAAQoJ,EAAuB,UAAY,CAC5E2P,MAAO,WACL,OAAO5P,EAAWnP,KAAM,QAAS,GAAI,Q","file":"js/about.aa90f682.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","module.exports = __webpack_public_path__ + \"img/logo-text-colored.5cda006b.png\";","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar $endsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=6003c7cf&scoped=true&lang=css&\"","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{staticClass:\"bg-img\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"align\":\"center\"}},[_c('v-img',{attrs:{\"max-height\":\"150\",\"max-width\":\"250\",\"src\":require(\"@/assets/img/logo-text-colored.png\")}}),_c('br'),_c('h4',[_vm._v(\" Reviving the Language that Brought us the Jak & Daxter Series \")]),_c('br'),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"#project-status\",\"rounded\":\"\",\"color\":\"primary\"}},[_c('v-icon',[_vm._v(\"mdi-calendar-check\")]),_vm._v(\" Project Status \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"rounded\":\"\",\"color\":\"secondary\",\"href\":\"#recent-updates\"}},[_c('v-icon',[_vm._v(\"mdi-update\")]),_vm._v(\" Recent Updates \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"/jak-project/api-docs.html\",\"target\":\"_blank\",\"rounded\":\"\",\"color\":\"deep-purple\"}},[_c('v-icon',[_vm._v(\"mdi-file-document\")]),_vm._v(\" Documentation \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"https://github.com/water111/jak-project\",\"target\":\"_blank\",\"rounded\":\"\",\"color\":\"accent\"}},[_c('v-icon',[_vm._v(\"mdi-git\")]),_vm._v(\" Contribute \")],1)],1)],1)],1)],1),_c('v-row',[_c('v-container',[_c('v-row',{staticStyle:{\"margin-top\":\"3em\"},attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h1',{staticClass:\"orange--text text--darken-1\",attrs:{\"id\":\"project-status\"}},[_vm._v(\" Project Status \")])])],1),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h2',{staticClass:\"orange--text text--lighten-3\"},[_vm._v(\"Jak 1 - Black Label\")])])],1),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('v-subheader',[_vm._v(\"Decompilation\")]),_c('v-progress-linear',{attrs:{\"color\":\"green\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.srcFilesFinishedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Source Files Finished - \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesFinished)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesTotal)+\" \")]),_c('br'),_c('v-progress-linear',{attrs:{\"color\":\"yellow\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.srcFilesStartedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Source Files Started - \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesStarted)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.srcFilesTotal)+\" \")]),_c('br'),_c('v-progress-linear',{attrs:{\"color\":\"teal\",\"buffer-value\":\"0\",\"value\":_vm.jak1BlackLabelStatus.dataFilesStartedValue,\"stream\":\"\",\"height\":\"25\"}},[_vm._v(\" Data Files Started - \"+_vm._s(_vm.jak1BlackLabelStatus.dataFilesStarted)+\" / \"+_vm._s(_vm.jak1BlackLabelStatus.dataFilesTotal)+\" \")])],1)],1),_c('v-row',{staticStyle:{\"margin-top\":\"5em\"},attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"align\":\"center\"}},[_c('h1',{staticClass:\"orange--text text--darken-1\",attrs:{\"id\":\"recent-updates\"}},[_vm._v(\" Recent Updates \")])])],1),_c('v-row',{staticStyle:{\"margin-bottom\":\"10em\"},attrs:{\"justify\":\"center\"}},_vm._l((_vm.recentPRs),function(pr,index){return _c('v-col',{key:'pr' - index,attrs:{\"cols\":\"4\"}},[_c('v-card',[_c('v-card-text',{staticStyle:{\"overflow-y\":\"auto\",\"height\":\"300px\"}},[_c('p',{staticClass:\"text-h5 orange--text text--lighten-3\"},[_vm._v(\" \"+_vm._s(pr.title)+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(pr.user.login)+\" \")]),_c('div',{staticClass:\"text--primary\"},[_c('pre',{staticClass:\"wrapped-pre\"},[_vm._v(_vm._s(pr.body))])])]),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"accent\",\"href\":pr.html_url,\"target\":\"_blank\"}},[_vm._v(\" View Change \")])],1)],1)],1)}),1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","const projectProgress = require('./config/progress.json')\n\nexport default projectProgress\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import Vue, { WatchHandler } from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & WatchHandler {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","import { VNodeDirective } from 'vue/types/vnode'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n /* istanbul ignore if */\n if (!el._observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n el._observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n !el._observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el)\n else el._observe.init = true\n }, options)\n\n el._observe = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement) {\n /* istanbul ignore if */\n if (!el._observe) return\n\n el._observe.observer.unobserve(el)\n delete el._observe\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable = VueConstructor : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable = VueConstructor> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable {\n return RegistrableInject(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Toggleable\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record\n\nexport type Positionable = VueConstructor\n\nexport function factory (selected?: S[]): Positionable\nexport function factory (selected: undefined): OptionsVue\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\nconst rippleStop = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [rippleStop]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nfunction opacity (el: HTMLElement, value: number) {\n el.style.opacity = value.toString()\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n opacity(animation, 0)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n opacity(animation, 0.25)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n opacity(animation, 0)\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e[rippleStop]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[rippleStop] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n },\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n click: this.click,\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass} ${this.proxyClass || ''}`.trim()\n\n const path = `_vnode.data.class.${activeClass}`\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (getObjectValueByPath(this.$refs.link, path)) {\n this.toggle()\n }\n })\n },\n toggle: () => { /* noop */ },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n (el as any)._initialDisplay = el.style.display\n el.style.display = 'none'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el) el.style.display = (el as any)._initialDisplay || ''\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Proxyable\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n if (this.$slots.placeholder) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, this.$slots.placeholder)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=6003c7cf&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=6003c7cf&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6003c7cf\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VContainer,VIcon,VImg,VProgressLinear,VRow,VSubheader})\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n small: function small() {\n return createHTML(this, 'small', '', '');\n }\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/app.99fa3a4f.js b/docs/js/app.1f599053.js similarity index 97% rename from docs/js/app.99fa3a4f.js rename to docs/js/app.1f599053.js index 12966e5f19..5439a0fc2c 100644 --- a/docs/js/app.99fa3a4f.js +++ b/docs/js/app.1f599053.js @@ -1,2 +1,2 @@ -(function(e){function t(t){for(var n,o,i=t[0],c=t[1],l=t[2],s=0,p=[];s\n \n \n \n \n \n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=78a82666&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VMain } from 'vuetify/lib/components/VMain';\ninstallComponents(component, {VApp,VMain})\n","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib/framework';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n theme: { dark: true },\n})\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: '/',\n name: 'Home',\n component: () => import(/* webpackChunkName: \"about\" */ '../views/Home.vue')\n },\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes\n})\n\nexport default router\n","import Vue from 'vue'\nimport App from './App.vue'\nimport vuetify from './plugins/vuetify';\nimport router from './router'\n\nVue.config.productionTip = false\n\nnew Vue({\n vuetify,\n router,\n render: h => h(App)\n}).$mount('#app')\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?7fea","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/plugins/vuetify.js","webpack:///./src/router/index.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","staticRenderFns","components","component","VApp","VMain","Vue","use","Vuetify","theme","dark","VueRouter","routes","path","router","base","process","config","productionTip","vuetify","render","h","App","$mount"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAGnBC,EAAqB,CACxB,IAAO,GAMJjB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASa,EAAe7B,GACvB,OAAOyB,EAAoBK,EAAI,OAAS,CAAC,MAAQ,SAAS9B,IAAUA,GAAW,IAAM,CAAC,MAAQ,YAAYA,GAAW,MAItH,SAASyB,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAUgC,QAGnC,IAAIC,EAASL,EAAiB5B,GAAY,CACzCK,EAAGL,EACHkC,GAAG,EACHF,QAAS,IAUV,OANAlB,EAAQd,GAAUW,KAAKsB,EAAOD,QAASC,EAAQA,EAAOD,QAASN,GAG/DO,EAAOC,GAAI,EAGJD,EAAOD,QAKfN,EAAoBS,EAAI,SAAuBlC,GAC9C,IAAImC,EAAW,GAIXC,EAAY,CAAC,MAAQ,GACtBR,EAAmB5B,GAAUmC,EAASvB,KAAKgB,EAAmB5B,IACzB,IAAhC4B,EAAmB5B,IAAkBoC,EAAUpC,IACtDmC,EAASvB,KAAKgB,EAAmB5B,GAAW,IAAIqC,SAAQ,SAASC,EAASC,GAIzE,IAHA,IAAIC,EAAO,QAAU,CAAC,MAAQ,SAASxC,IAAUA,GAAW,IAAM,CAAC,MAAQ,YAAYA,GAAW,OAC9FyC,EAAWhB,EAAoBK,EAAIU,EACnCE,EAAmBC,SAASC,qBAAqB,QAC7CxC,EAAI,EAAGA,EAAIsC,EAAiBpC,OAAQF,IAAK,CAChD,IAAIyC,EAAMH,EAAiBtC,GACvB0C,EAAWD,EAAIE,aAAa,cAAgBF,EAAIE,aAAa,QACjE,GAAe,eAAZF,EAAIG,MAAyBF,IAAaN,GAAQM,IAAaL,GAAW,OAAOH,IAErF,IAAIW,EAAoBN,SAASC,qBAAqB,SACtD,IAAQxC,EAAI,EAAGA,EAAI6C,EAAkB3C,OAAQF,IAAK,CAC7CyC,EAAMI,EAAkB7C,GACxB0C,EAAWD,EAAIE,aAAa,aAChC,GAAGD,IAAaN,GAAQM,IAAaL,EAAU,OAAOH,IAEvD,IAAIY,EAAUP,SAASQ,cAAc,QACrCD,EAAQF,IAAM,aACdE,EAAQE,KAAO,WACfF,EAAQG,OAASf,EACjBY,EAAQI,QAAU,SAASC,GAC1B,IAAIC,EAAUD,GAASA,EAAME,QAAUF,EAAME,OAAOC,KAAOjB,EACvDkB,EAAM,IAAIC,MAAM,qBAAuB5D,EAAU,cAAgBwD,EAAU,KAC/EG,EAAIE,KAAO,wBACXF,EAAIH,QAAUA,SACP5B,EAAmB5B,GAC1BkD,EAAQY,WAAWC,YAAYb,GAC/BX,EAAOoB,IAERT,EAAQV,KAAOC,EAEf,IAAIuB,EAAOrB,SAASC,qBAAqB,QAAQ,GACjDoB,EAAKC,YAAYf,MACfgB,MAAK,WACPtC,EAAmB5B,GAAW,MAMhC,IAAImE,EAAqBxD,EAAgBX,GACzC,GAA0B,IAAvBmE,EAGF,GAAGA,EACFhC,EAASvB,KAAKuD,EAAmB,QAC3B,CAEN,IAAIC,EAAU,IAAI/B,SAAQ,SAASC,EAASC,GAC3C4B,EAAqBxD,EAAgBX,GAAW,CAACsC,EAASC,MAE3DJ,EAASvB,KAAKuD,EAAmB,GAAKC,GAGtC,IACIC,EADAC,EAAS3B,SAASQ,cAAc,UAGpCmB,EAAOC,QAAU,QACjBD,EAAOE,QAAU,IACb/C,EAAoBgD,IACvBH,EAAOI,aAAa,QAASjD,EAAoBgD,IAElDH,EAAOZ,IAAM7B,EAAe7B,GAG5B,IAAI2E,EAAQ,IAAIf,MAChBS,EAAmB,SAAUd,GAE5Be,EAAOhB,QAAUgB,EAAOjB,OAAS,KACjCuB,aAAaJ,GACb,IAAIK,EAAQlE,EAAgBX,GAC5B,GAAa,IAAV6E,EAAa,CACf,GAAGA,EAAO,CACT,IAAIC,EAAYvB,IAAyB,SAAfA,EAAMH,KAAkB,UAAYG,EAAMH,MAChE2B,EAAUxB,GAASA,EAAME,QAAUF,EAAME,OAAOC,IACpDiB,EAAMK,QAAU,iBAAmBhF,EAAU,cAAgB8E,EAAY,KAAOC,EAAU,IAC1FJ,EAAMM,KAAO,iBACbN,EAAMvB,KAAO0B,EACbH,EAAMnB,QAAUuB,EAChBF,EAAM,GAAGF,GAEVhE,EAAgBX,QAAWkF,IAG7B,IAAIV,EAAUW,YAAW,WACxBd,EAAiB,CAAEjB,KAAM,UAAWK,OAAQa,MAC1C,MACHA,EAAOhB,QAAUgB,EAAOjB,OAASgB,EACjC1B,SAASqB,KAAKC,YAAYK,GAG5B,OAAOjC,QAAQ+C,IAAIjD,IAIpBV,EAAoB4D,EAAIxE,EAGxBY,EAAoB6D,EAAI3D,EAGxBF,EAAoB8D,EAAI,SAASxD,EAASkD,EAAMO,GAC3C/D,EAAoBgE,EAAE1D,EAASkD,IAClC1E,OAAOmF,eAAe3D,EAASkD,EAAM,CAAEU,YAAY,EAAMC,IAAKJ,KAKhE/D,EAAoBoE,EAAI,SAAS9D,GACX,qBAAX+D,QAA0BA,OAAOC,aAC1CxF,OAAOmF,eAAe3D,EAAS+D,OAAOC,YAAa,CAAEC,MAAO,WAE7DzF,OAAOmF,eAAe3D,EAAS,aAAc,CAAEiE,OAAO,KAQvDvE,EAAoBwE,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQvE,EAAoBuE,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAK7F,OAAO8F,OAAO,MAGvB,GAFA5E,EAAoBoE,EAAEO,GACtB7F,OAAOmF,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOvE,EAAoB8D,EAAEa,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIR3E,EAAoB+E,EAAI,SAASxE,GAChC,IAAIwD,EAASxD,GAAUA,EAAOmE,WAC7B,WAAwB,OAAOnE,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAP,EAAoB8D,EAAEC,EAAQ,IAAKA,GAC5BA,GAIR/D,EAAoBgE,EAAI,SAASgB,EAAQC,GAAY,OAAOnG,OAAOC,UAAUC,eAAeC,KAAK+F,EAAQC,IAGzGjF,EAAoBK,EAAI,gBAGxBL,EAAoBkF,GAAK,SAAShD,GAA2B,MAApBiD,QAAQjC,MAAMhB,GAAYA,GAEnE,IAAIkD,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAWjG,KAAK2F,KAAKM,GAC5CA,EAAWjG,KAAOf,EAClBgH,EAAaA,EAAWG,QACxB,IAAI,IAAI5G,EAAI,EAAGA,EAAIyG,EAAWvG,OAAQF,IAAKP,EAAqBgH,EAAWzG,IAC3E,IAAIU,EAAsBiG,EAI1B/F,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,4IC1QL,EAAS,WAAa,IAAI+F,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,QAAQ,CAACA,EAAG,SAAS,CAACA,EAAG,gBAAgB,IAAI,IAC5IE,EAAkB,GCQtB,GACEtC,KAAM,MACNuC,WAAY,GACZ1H,KAAM,WAAR,WCZ8T,I,yDCO1T2H,EAAY,eACd,EACA,EACAF,GACA,EACA,KACA,KACA,MAIa,EAAAE,EAAiB,QAMhC,IAAkBA,EAAW,CAACC,OAAA,KAAKC,QAAA,O,gBCrBnCC,OAAIC,IAAIC,QAEO,UAAIA,OAAQ,CACzBC,MAAO,CAAEC,MAAM,K,4CCHjBJ,OAAIC,IAAII,QAER,IAAMC,EAAS,CACb,CACEC,KAAM,IACNlD,KAAM,OACNwC,UAAW,kBAAM,0CAIfW,EAAS,IAAIH,OAAU,CAC3B/B,KAAM,UACNmC,KAAMC,gBACNJ,WAGaE,ICdfR,OAAIW,OAAOC,eAAgB,EAE3B,IAAIZ,OAAI,CACNa,UACAL,SACAM,OAAQ,SAAAC,GAAC,OAAIA,EAAEC,MACdC,OAAO","file":"js/app.1f599053.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"about\":\"about\"}[chunkId]||chunkId) + \".\" + {\"about\":\"aa90f682\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"about\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"about\":\"about\"}[chunkId]||chunkId) + \".\" + {\"about\":\"c2633d65\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/jak-project/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[_c('v-main',[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=78a82666&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VMain } from 'vuetify/lib/components/VMain';\ninstallComponents(component, {VApp,VMain})\n","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib/framework';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n theme: { dark: true },\n})\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: '/',\n name: 'Home',\n component: () => import(/* webpackChunkName: \"about\" */ '../views/Home.vue')\n },\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes\n})\n\nexport default router\n","import Vue from 'vue'\nimport App from './App.vue'\nimport vuetify from './plugins/vuetify';\nimport router from './router'\n\nVue.config.productionTip = false\n\nnew Vue({\n vuetify,\n router,\n render: h => h(App)\n}).$mount('#app')\n"],"sourceRoot":""} \ No newline at end of file