diff --git a/app.py b/app.py index c756219..367769b 100644 --- a/app.py +++ b/app.py @@ -16,13 +16,17 @@ class WikiApp(Flask): # Define routes # self.route('/', methods=['GET'])(self.homepage) self.route('/', methods=['GET'])(self.homepage_new) + self.route('/data', methods=['GET'])(self.data_int) self.route('/newsletter/', methods=['GET'])(self.generate_newsletter) self.route('/publications', methods=['GET'])(self.fetch_publications) self.route('/meetups', methods=['GET'])(self.fetch_meetups) self.route('/', methods=['GET'])(self.page_content) self.route('/favicon.ico')(self.favicon) self.route('/archive/', methods=['GET'])(self.get_collection) - + + def data_int(self): + return render_template('data.html') + def generate_newsletter(self, title): content, title, date = self.fetch_page(title) given_date = datetime.strptime(date, "%Y-%m-%d") diff --git a/static/assets/css/data-styles.css b/static/assets/css/data-styles.css new file mode 100644 index 0000000..07dfc06 --- /dev/null +++ b/static/assets/css/data-styles.css @@ -0,0 +1,658 @@ +@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap'); + +html, body { + margin: 0; + padding: 0; + width: auto; + height: auto; + font-family: 'IBM Plex Sans', sans-serif; + overflow: hidden; + overflow-y: hidden; + overflow-x: hidden; +} + +a { + text-decoration: none; +} + +canvas { + display: block; + width: 100%; + padding: 0; + margin: 0; + overflow: hidden; + overflow-y: hidden; + overflow-x: hidden; +} + +.divider{ + display: flex; + width: 100%; + height: 100%; + flex-direction: row; + background-color: #f3f3ea; + justify-content:flex-start; + max-height: 100vh; + overflow: hidden; + overflow-y: hidden; + overflow-x: hidden; +} + +#sketch{ + width: 45.4545vw; + overflow: hidden; + overflow-y: hidden; + overflow-x: hidden; +} + + + +.text{ + display: grid; + width: calc( 100vw - 100vw/2.2); + background-color: #f3f3ea; + padding-left: 100px; + padding-right: 100px; +} + +.text-group{ + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + overflow: hidden; + word-wrap: break-word; +} + +.text-header{ + height: 20%; + display: flex; + flex-direction: row; + margin-top: 30px; + justify-content:center; + width: 100%; +} + +.tool1{ + width: 100%; + height: 100%; + justify-content: center; + display: flex; + align-items: center; + flex-direction: row; +} + +.tool2{ + width: 100%; + height: 100%; + justify-content: center; + display: flex; + align-items: center; + flex-direction: row; +} + +.t1-box{ + width: 70%; + height: 60%;; + background-color: white; + border-radius: 25px; + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: center; + font-size: 1.4rem; +} + +.t2-box{ + width: 70%; + height: 60%;; + background-color: white; + border-radius: 25px; + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: center; +} + +.t1-1{ + font-weight: 700; +} + +.mobile-percent { + position: absolute; + top: 125px; + left: 25px; + width: 40px; + text-align: center; + display: none; +} + +.mobile-arrow { + position: absolute; + top: 125px; + right: 25px; + width: 40px; + text-align: center; + display: none; +} + +.t1-am{ + font-weight: 700; + color: #5444B7; + +} + +.t2-1{ + cursor: pointer; + font-size: 1.4rem; +} + +.t1-3{ + font-weight: 700; + font-size: 2rem; +} + +.tool2{ + width: 100%; +} + +#text-body{ + height: 100%; + width: 100%; + display: flex; + flex-direction: column; + overflow: hidden; + overflow-y: scroll; + overflow-x: hidden; + -webkit-mask: + linear-gradient( to bottom, transparent, black 100px) top, + linear-gradient( to top, transparent, black 200px) bottom; + -webkit-mask-size: 100% 52%; /* each one half the size */ + -webkit-mask-repeat:no-repeat; + + mask-repeat:no-repeat; + padding-bottom: 75px; + padding-top: 75px; + margin-top: 50px; +} + +.Paul{ + margin-right: 10px; + color: rgb(150, 53, 139); + font-family: 'IBM Plex Sans', sans-serif; + font-weight: 600; + text-transform: uppercase; +} + +.conceptNULL{ + margin-right: 10px; + color: rgb(150, 53, 53); + font-family: 'IBM Plex Sans', sans-serif; + font-weight: 600; + text-transform: uppercase; +} + +.Aisling{ + margin-right: 10px; + color: rgb(53, 56, 150); + font-family: 'IBM Plex Sans', sans-serif; + font-weight: 600; + text-transform: uppercase; +} + +.Tom{ + margin-right: 10px; + color: rgb(69, 150, 53); + font-family: 'IBM Plex Sans', sans-serif; + font-weight: 600; + text-transform: uppercase; +} + +.y-coord{ + font-family: 'IBM Plex Sans', monospace; + font-size: 0.9rem; + margin-right: 10px; + background-color: rgb(3, 3, 3); + border-radius: 20px; + padding: 5px; + color:white; + + +} + +.x-coord{ + font-family: 'IBM Plex Sans', monospace; + font-size: 0.9rem; + margin-right: 5px; + font-family: 'IBM Plex Sans', monospace; + font-size: 0.9rem; + margin-right: 10px; + background-color: rgb(255, 255, 255); + border-radius: 20px; + padding: 5px; + color:rgb(0, 0, 0); + align-items: end; +} + +.sentence-block p{ + line-height: 30px; + font-size: 1.1rem; + margin-top: 5px; +} + +.sentence-block{ + margin-bottom: 50px; +} + +.text-footer{ + height: 0%; + display: flex; + flex-direction: row; + justify-content: center; +} + +.slider-text{ + display: flex; + flex-direction: column; + width: 200px; +} + +.title{ + width: auto; + display: flex; + flex-direction: column; + text-align: center; + color: #5444B7; + margin-left: 20px; + margin-right: 20px; + filter: drop-shadow(0 0 1rem rgb(47, 0, 255)); +} + +.title1{ + font-style: normal; + font-size: 3rem; + margin: 0; + font-family: 'IBM Plex Mono', monospace; + font-weight: 600; +} + +.title2{ + font-style: normal; + font-size: 3rem; + margin: 0; + font-family: 'IBM Plex Mono', monospace; + font-weight: 600; + letter-spacing: 8px; +} + +.text-body{ + margin-left: 100px; + margin-right: 100px; + font-size: 1.2rem; + font-weight: 200; +} + +.break{ + background-color: #5444B7; + width: 2px; +} + +.p5Canvas{ + margin: 0; + overflow: hidden; +} + +#container-about { + position: fixed; + bottom: 20px; + right: 30px; + display: none; +} + +#container-switch { + position: fixed; + bottom: 20px; + left: 30px; + display: none; + } + +.arrow{ + margin-left: 10px; + cursor: pointer; + text-align: center; + align-items: baseline; + width: 18px; + margin:auto; + position: relative; + top: 5px +} + +.slidercontainer { + width: 200px; /* Width of the outside container */ + display: flex; + flex-direction: column; + gap: 30px; + height: 100%; + align-self: flex-start; + align-items: center; + +} + +.slider { + -webkit-appearance: none; + width: 80%; + height: 2px; + border-radius: 5px; + background: #000000; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; + margin-top: 10px; + +} + +.switch-view{ + background-color: #a8a8a8; + border: none; + color: white; + padding: 40px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + margin: 4px 2px; + border-radius: 50px; +} + +#text-view-button{ + display: none; + position: fixed; + top: 25px; + right: 25px; +} + +#tv-button{ + background-color : #c6c6c600; + color: white; + padding: 0px 0px; + border-radius: 20px; + border-color: #46b8da; + cursor: pointer; +} + +::-webkit-scrollbar { + width: 0; /* Remove scrollbar space */ + background: transparent; /* Optional: just make scrollbar invisible */ +} +/* Optional: show position indicator in red */ +::-webkit-scrollbar-thumb { + background: #FF0000; +} + +img{ + width: 50px; + height: auto; +} + +#text-view { + opacity: 1.0; + transition: opacity 1s ease-in-out; +} + +.about-pop-up { + width: 60%; + background-color: #f1f1f1;; + z-index: 1000; + height: 70%; + position: fixed; + top: 50%; + left: 50%; + margin-right: -50%; + transform: translate(-50%, 100%); + padding: 10px; + border-radius: 15px; + opacity: 0.96; + transition: transform 1s ease-in-out; + filter: drop-shadow(0 0 2rem rgba(0, 0, 0, 0.186)); + display: flex; + flex-direction: column; + /* flex-wrap: wrap; */ + gap: 20px; + overflow-y: scroll; + overflow-x: hidden; +} + +.about-header { + font-style: italic; + font-size: 2rem; + margin: 0; + font-family: 'IBM Plex Mono', monospace; + font-weight: 600; + color: #5444B7; + margin:40px; + margin-bottom: 0; +} + +.about-body { + flex-direction: column; + margin-left: 40px; + margin-right: 40px; + font-size: 1.5rem; +} + +.tech-about { + font-style: italic; + font-size: 1.1rem; +} + +.network-button { + position: absolute; + right: 25px; + top: 25px; + display: none; + cursor: pointer; +} + +.mobile-about-button { + position: absolute; + left: 25px; + top: 25px; + display: none; + cursor: pointer; +} + + +@media only screen and (max-width: 1300px){ + .t2-box{ + flex-direction: column; + height: 100%; + width: 70%; + } + + .t1-box{ + flex-direction: column; + height: 100%; + width: 70%; + } + + .text{ + margin-left: 50px; + margin-right: 50px; + } + + .about-pop-up { + width: 90%; + } +} + +@media only screen and (max-width: 950px) { + #sketch{ + display: inline; + position: absolute; + width: 100%; + z-index: 100; + top: 0; + left: 0; + } + + .divider{ + position: absolute; + background-color: #f9f8d900; + } + + #text-view-button{ + display: inline; + z-index: 110; + } + + .break{ + display: none; + } + + .text{ + padding-right: 10px; + padding-left: 10px; + margin-left: 0px; + margin-right: 0px; + display: inline; + position: relative; + z-index: 200; + left: 0; + top:0; + background-color: #8a8a8a00; + -webkit-backdrop-filter: blur(20px); + backdrop-filter: blur(20px); + width: 100vw; + } + + #text-body{ + margin-left: 20px; + margin-right: 20px; + width:fit-content; + padding-bottom: 0px; + overflow-y: scroll; + } + + .tool1{ + display: none; + } + + .tool2{ + display: none; + } + + .x-coord{ + margin-left: 10px; + } + + .y-coord{ + margin-left: 10px; + } + + .arrow{ + margin-left: 10px; + } + + .text-group{ + height: 95%; + } + + #container-switch { + display:inline; + } + + #container-about { + display:inline; + } + + .title1{ + cursor: pointer; + } + + .title2{ + cursor: pointer; + } + + .about-pop-up { + width: 90%; + height: 75%; + } + + .about-header { + font-size: 1.5rem; + } + + .about-body { + font-size: 1.2rem; + } + + .tech-about { + font-size: 1rem; + } + + .network-button { + display: inline; + } + + .mobile-about-button { + display: inline; + font-size: 2.5rem; + } + + .mobile-arrow { + display: block; + } + + + .mobile-percent { + display: block; + } + } + + @media only screen and (max-width: 700px) { + #sketch{ + display: inline; + } + + #text-view-button{ + display: inline; + } + + .text{ + padding-right: 10px; + padding-left: 10px; + } + + #text-body{ + margin-left: 20px; + margin-right: 20px; + width:fit-content; + } + + .title1{ + font-size: 2.5rem; + } + + .title2{ + font-size: 2.5rem; + } + + .tool1{ + display: none; + } + + .tool2{ + display: none; + } + + .mobile-about-button { + display: inline; + font-size: 2rem; + } + + img{ + width: 40px; + } + } \ No newline at end of file diff --git a/static/assets/data/assets/CN_Logo.svg b/static/assets/data/assets/CN_Logo.svg new file mode 100644 index 0000000..f3ff36f --- /dev/null +++ b/static/assets/data/assets/CN_Logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/assets/data/assets/IBMPlexSans-Bold.ttf b/static/assets/data/assets/IBMPlexSans-Bold.ttf new file mode 100644 index 0000000..71cad9d Binary files /dev/null and b/static/assets/data/assets/IBMPlexSans-Bold.ttf differ diff --git a/static/assets/data/assets/IBMPlexSans-BoldItalic.ttf b/static/assets/data/assets/IBMPlexSans-BoldItalic.ttf new file mode 100644 index 0000000..988f7e4 Binary files /dev/null and b/static/assets/data/assets/IBMPlexSans-BoldItalic.ttf differ diff --git a/static/assets/data/assets/IBMPlexSans-Italic.ttf b/static/assets/data/assets/IBMPlexSans-Italic.ttf new file mode 100644 index 0000000..4083e0a Binary files /dev/null and b/static/assets/data/assets/IBMPlexSans-Italic.ttf differ diff --git a/static/assets/data/assets/IBMPlexSans-Regular.ttf b/static/assets/data/assets/IBMPlexSans-Regular.ttf new file mode 100644 index 0000000..f78a2d7 Binary files /dev/null and b/static/assets/data/assets/IBMPlexSans-Regular.ttf differ diff --git a/static/assets/data/assets/OTBrut-Regular.woff2 b/static/assets/data/assets/OTBrut-Regular.woff2 new file mode 100644 index 0000000..3b03d90 Binary files /dev/null and b/static/assets/data/assets/OTBrut-Regular.woff2 differ diff --git a/static/assets/data/assets/arrow-r.svg b/static/assets/data/assets/arrow-r.svg new file mode 100644 index 0000000..76074b1 --- /dev/null +++ b/static/assets/data/assets/arrow-r.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/static/assets/data/assets/info.svg b/static/assets/data/assets/info.svg new file mode 100644 index 0000000..e8cc095 --- /dev/null +++ b/static/assets/data/assets/info.svg @@ -0,0 +1,7 @@ + + + + + + info1 + \ No newline at end of file diff --git a/static/assets/data/assets/map.svg b/static/assets/data/assets/map.svg new file mode 100644 index 0000000..ba7c5d5 --- /dev/null +++ b/static/assets/data/assets/map.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/static/assets/data/assets/network.svg b/static/assets/data/assets/network.svg new file mode 100644 index 0000000..8a3e61c --- /dev/null +++ b/static/assets/data/assets/network.svg @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/static/assets/data/assets/okay.svg b/static/assets/data/assets/okay.svg new file mode 100644 index 0000000..ec4d9bb --- /dev/null +++ b/static/assets/data/assets/okay.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/static/assets/data/assets/okay1.svg b/static/assets/data/assets/okay1.svg new file mode 100644 index 0000000..bdc6fe6 --- /dev/null +++ b/static/assets/data/assets/okay1.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/static/assets/data/assets/text-button.svg b/static/assets/data/assets/text-button.svg new file mode 100644 index 0000000..5475113 --- /dev/null +++ b/static/assets/data/assets/text-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/data/assets/text-view.svg b/static/assets/data/assets/text-view.svg new file mode 100644 index 0000000..8a4325f --- /dev/null +++ b/static/assets/data/assets/text-view.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/static/assets/data/data/comp_data.json b/static/assets/data/data/comp_data.json new file mode 100644 index 0000000..dec0e61 --- /dev/null +++ b/static/assets/data/data/comp_data.json @@ -0,0 +1,1906 @@ +{ + "0": { + "speaker": "conceptNULL", + "text": " I always hated presentations, because I feel like I always got way too nervous and then just talked for way too long, which kind of happens here as well, as you can see. But I get nervous when I talk. But one of the questions I think might lead well for this is, in your processes of basically making these events, what are the biggest difficulties that come your way, and how do you kind of get over them? Is it kind of like a structural thing you do? Yeah, that's really just a question.", + "sequence": 2, + "Technology": 0.0415959843, + "Art": -0.0149132358, + "Ireland": -0.0676915869, + "Organisation": 0.1369727403, + "Digital": -0.1290723383, + "Community": 0.0132778306, + "Events": 0.1025209799, + "x": -8.580907, + "y": -6.124051 + }, + "1": { + "speaker": "Tom", + "text": " roping other people in, you know, like, I mean, a lot of times, like, kind of a joke, but like, we definitely, like, we, you know, all of us, we're, I suppose, working in this area, we all know people in this area, but we only know so many people. And we think you know for it to be more interesting it would be much more interesting if that widened out beyond us into whole other sets of people doing whole other sets of things and while we really like that to happen the thing is everyone's really busy in the world you know this pressure like rent people can't afford to live for their work all this sort of stuff so uh While people are always like, this is great, we'd really love to get involved, the practicalities are quite difficult. And we also haven't always been graded because we are ourselves quite busy. And we tried to institute the structure where we'd meet once a week, or sorry, we'd meet the following week after an event. And especially recently, we've just been kind of up the walls. And so we haven't always managed to do that. And when you I've been involved in a number of organizations, and I think it's really important to have quite clear structures because it allows people to get involved. And as we said at the start, we don't really have them because we haven't quite. So it's kind of on us to maybe also find ways to make it more open to other people to get involved. But that also is a big job, and it takes a lot of labor to set up those systems. And also, the risk, because you don't know if you do them, but anyone wants to be involved anyway. So it's a funny one. I don't know.", + "sequence": 3, + "Technology": 0.0198384617, + "Art": 0.0060142493, + "Ireland": -0.0464651659, + "Organisation": -0.00542389, + "Digital": -0.1506244689, + "Community": 0.1301781833, + "Events": 0.0646481961, + "x": -7.202645, + "y": -4.764115 + }, + "2": { + "speaker": "conceptNULL", + "text": " Do I head hush?", + "sequence": 4, + "Technology": 0.0560337752, + "Art": 0.041655086, + "Ireland": 0.1189015433, + "Organisation": -0.0188594144, + "Digital": 0.0736947507, + "Community": 0.0576674193, + "Events": 0.026060842, + "x": -0.41552874, + "y": 3.0291958 + }, + "3": { + "speaker": "Aisling", + "text": "No, you go, Falco.", + "sequence": 5, + "Technology": 0.1060419753, + "Art": 0.08917851, + "Ireland": 0.276741147, + "Organisation": 0.0167829767, + "Digital": 0.0366919376, + "Community": 0.0716870725, + "Events": 0.1389241219, + "x": 4.755789, + "y": 4.511425 + }, + "4": { + "speaker": "conceptNULL", + "text": " I was trying to find, I hadn't written notes on this.", + "sequence": 6, + "Technology": 0.0525202937, + "Art": 0.0597619116, + "Ireland": 0.1841824055, + "Organisation": 0.0153159965, + "Digital": 0.0292911865, + "Community": 0.0534745045, + "Events": 0.1138431579, + "x": 2.9560292, + "y": 3.8656237 + }, + "5": { + "speaker": "Paul", + "text": "Yeah, I mean, I guess what Tom said, but I had just kind of written money and time, and it's kind of crass and like, you know, talk about money and time and quantify it, you know, but I guess time more so than money. Like Tom said, we're all busy. We're not making money out of this. It's not about money, but we've got to make money elsewhere. Thanks.", + "sequence": 7, + "Technology": -0.1168898121, + "Art": -0.0339839682, + "Ireland": -0.1332846433, + "Organisation": -0.0504594222, + "Digital": -0.1407146752, + "Community": -0.0902514532, + "Events": -0.1207195967, + "x": -12.849203, + "y": -0.18915209 + }, + "6": { + "speaker": "conceptNULL", + "text": "I don't know what you can find here. The crassus belt would have came in, like, you know.", + "sequence": 8, + "Technology": 0.0178131573, + "Art": 0.0475087911, + "Ireland": 0.1391175985, + "Organisation": 0.0095177609, + "Digital": 0.0781993419, + "Community": 0.0315025821, + "Events": 0.0473324805, + "x": 0.20089366, + "y": 3.0300672 + }, + "7": { + "speaker": "Paul", + "text": "So, yeah. And also, you know, it's like ensuring a second... No, yeah, I mean, ensuring access and not always kind of... Trying not to always take the easy way, but at the same time, trying not to make it too difficult. You know, I think it's kind of important as well. Time is a big, big, big factor. Even as Tom said, you know, like it would be nice to do things a certain way. And like there is, we've tried to put in kind of structures, but again, it's kind of hard to maintain them, like meet the following week, but one of us might have to do something. And again, that's something that usually is there.", + "sequence": 9, + "Technology": 0.0105584087, + "Art": -0.0847603679, + "Ireland": -0.07731428, + "Organisation": 0.1524886638, + "Digital": -0.1192948222, + "Community": -0.0237281285, + "Events": -0.0184380189, + "x": -9.798663, + "y": -5.685506 + }, + "8": { + "speaker": "conceptNULL", + "text": " As you said earlier, I think that's also maybe the thing that's kept you going for so long, that over time, the needs or the possibilities of the members change, and therefore data changes and keeps itself going that way. I think that's also a good thing, to be honest.", + "sequence": 10, + "Technology": 0.1784094572, + "Art": 0.0422811545, + "Ireland": 0.0277226791, + "Organisation": 0.1386207342, + "Digital": 0.0948825181, + "Community": 0.1990260482, + "Events": 0.1637868136, + "x": 11.144796, + "y": -3.3375642 + }, + "9": { + "speaker": "Aisling", + "text": "And I wonder also if maybe this could be a hot take, if the lack of structure is potentially why it lasts so long because I think like if there was such a if there was such a strong like structure and then you don't you don't like adhere to that and then it begins to kind of fall apart and then you feel like you're not kind of up to speed but I feel like even if we miss an event we're still just like or we miss a a talk like every like after the the event like our meeting we still kind of stick with like okay that that fell through but like we're going to keep going and we're going to plan for the next event and you know for this one we're planning to do one at the end of the month and then I think we are still doing one at the end of the month, I shouldn't have gotten into this.", + "sequence": 11, + "Technology": -0.0839504302, + "Art": -0.0968198776, + "Ireland": -0.0136202499, + "Organisation": 0.1255734116, + "Digital": -0.2256757915, + "Community": -0.0142062604, + "Events": 0.073444888, + "x": -10.429002, + "y": -4.998892 + }, + "10": { + "speaker": "conceptNULL", + "text": "I love the hot take though, you're right, and it is the kind of space, the disorganization", + "sequence": 12, + "Technology": 0.0777099282, + "Art": 0.0611422658, + "Ireland": 0.0115954047, + "Organisation": 0.0569533482, + "Digital": -0.110423401, + "Community": 0.0056139487, + "Events": 0.0207064953, + "x": -3.872421, + "y": -2.639733 + }, + "11": { + "speaker": "Paul", + "text": " Okay, maybe disorganization, maybe lack of commitment to organization due to time also is good because we all know like it's like we're kind of the three of us are like in touch, we've got like a WhatsApp group, Discord and email. So different messages are kind of pinging off about different things, more or less all the time, but then you know someone won't answer for a while and that's because that person's like obviously busy like that could be me and that that's fine or they might pick up a different trend and stuff so it's a little bit chaotic but that's you know that's good as well so i'm i'm with ash on the hot take there definitely yeah i think we definitely", + "sequence": 13, + "Technology": -0.0261055119, + "Art": -0.0370677225, + "Ireland": -0.0110555151, + "Organisation": -0.1093355715, + "Digital": -0.1893326044, + "Community": -0.0770493597, + "Events": -0.0722745806, + "x": -11.498349, + "y": -0.4016193 + }, + "12": { + "speaker": "Tom", + "text": " Well done. I know Paul and I are both, like, I'm not sure if you are into Critical Art Ensemble, you know, and they wrote a lot about, like, digital resistance and resistance to, like, nomadic power, which is this thing of being, like, not having a structure because if you have a structure, ultimately you're kind of going to be defeated by whatever neoliberalism and the forces and power and so on. And so like they've all this theory about disability to just kind of recombine all the time and just pop up regardless of what happens. So we can pretend we had totally like theorized this over the years.", + "sequence": 14, + "Technology": -0.0081527159, + "Art": 0.0242494717, + "Ireland": -0.0013273302, + "Organisation": -0.0373520032, + "Digital": -0.073822841, + "Community": -0.1172466576, + "Events": -0.0619581342, + "x": -10.957805, + "y": 1.0386072 + }, + "13": { + "speaker": "Paul", + "text": "Yeah, by any media necessary. By any WhatsApp Discord channel necessary.", + "sequence": 15, + "Technology": 0.1676934063, + "Art": 0.120802775, + "Ireland": 0.0753270462, + "Organisation": -0.0146850534, + "Digital": 0.184404701, + "Community": 0.1563051939, + "Events": 0.0806205273, + "x": 7.4271894, + "y": -1.1288115 + }, + "14": { + "speaker": "conceptNULL", + "text": "Yeah, one goes down, you have the other two like.", + "sequence": 16, + "Technology": 0.0279477406, + "Art": 0.0090855379, + "Ireland": 0.1719368994, + "Organisation": 0.1079989374, + "Digital": 0.0936128199, + "Community": 0.0399963781, + "Events": 0.1668020338, + "x": 4.539073, + "y": 2.2762976 + }, + "15": { + "speaker": "Aisling", + "text": " That kind of idea that data never dies. I think one of you said that to me pretty soon after I joined you. You were like, data never dies. It just went to sleep for a while. And the kind of idea that even if there's some form of lack of engagement, it's because there's no solid structure and it's not a space that we're renting that we need to continuously pay for and upkeep, it's like, there's actually always something to pick back up because it's just an idea at the end of the day.", + "sequence": 17, + "Technology": 0.0475997664, + "Art": 0.016848091, + "Ireland": 0.1028159857, + "Organisation": -0.0508093238, + "Digital": -0.0483692065, + "Community": -0.0481552593, + "Events": 0.0173090138, + "x": -6.2378697, + "y": 1.158635 + }, + "16": { + "speaker": "Paul", + "text": "Even that kind of drifting off, and I think it might be in one of the questions later on, but you know, so Jonah and Nikki set it up 20 years ago, Tim, Rachel, Ben, I think Tom mentioned them, kind of carrying it in after that as well, and other people we're not mentioning, but, you know, we can kind of go with those. Like, we're kind of all still in some way, shape or form in touch with them in some way. So, without getting too much into it, Tom, I know myself knew, and Rachel were emailing the other day about something. Ben, Aisling, I know maybe for the summer, you're going to be like over there in that kind of world. Jonah's in touch with me about kind of web site related stuff. I like, they haven't been around here for years, but like, they still, those people in the past still care about it. And we're still like in touch with them. So, you know, if you look at it, it's kind of quiet, but like, yeah. So what it's like, we're all still chatting away.", + "sequence": 18, + "Technology": 0.0367595926, + "Art": -0.1542481482, + "Ireland": 0.0794157833, + "Organisation": -0.091669865, + "Digital": -0.0913265198, + "Community": -0.0404306054, + "Events": -0.0744722188, + "x": -8.542198, + "y": 2.0854943 + }, + "17": { + "speaker": "Tom", + "text": "I mean, I think it goes back to that thing at the very start of, Right. Whether, you know, a collective or whatever, but we do, it's all a bunch of people who are interested in the same thing. And so that, you know, broadly speaking, if you look back over like your work, it tends that, you know, whenever you look back at it, you're like, Oh, I've been doing the same thing forever. So people tend to be interested in it. Their interest tends to stick around for a while. So we did the data 20 event in October last year, which was the 20th anniversary of data. And of course, a lot of the same people who'd been at the first one were there because there's still interest in technology and they're still interested in how it impacts in the world. And they're also making art about it, you know. So I think that's one of the reasons it persists.", + "sequence": 19, + "Technology": 0.0777643323, + "Art": -0.0206213053, + "Ireland": 0.0710924193, + "Organisation": 0.0994318575, + "Digital": 0.0627220422, + "Community": 0.0697718933, + "Events": 0.0076868022, + "x": -0.0086771, + "y": 1.4574904 + }, + "18": { + "speaker": "Paul", + "text": "Yeah. And there was people there who were possibly not born. Yeah. Data was on. How cool is that? I think my mom's the first one.", + "sequence": 20, + "Technology": 0.2900774479, + "Art": 0.0590181388, + "Ireland": 0.1426964253, + "Organisation": -0.0790828764, + "Digital": 0.145046562, + "Community": 0.1154695749, + "Events": 0.1147556603, + "x": 6.3702087, + "y": -2.6190917 + }, + "19": { + "speaker": "Aisling", + "text": "Yeah.", + "sequence": 21, + "Technology": 0.2798177004, + "Art": 0.267590493, + "Ireland": 0.264179945, + "Organisation": 0.4656565487, + "Digital": 0.2740884721, + "Community": 0.4323056936, + "Events": 0.3351562321, + "x": 18.153908, + "y": 1.320851 + }, + "20": { + "speaker": "conceptNULL", + "text": "Today's me too.", + "sequence": 22, + "Technology": 0.2658236921, + "Art": 0.1770493388, + "Ireland": 0.310798943, + "Organisation": 0.2921786904, + "Digital": 0.2313743681, + "Community": 0.2231067121, + "Events": 0.1357066035, + "x": 14.737614, + "y": 1.3098454 + }, + "21": { + "speaker": "Aisling", + "text": " Okay.", + "sequence": 23, + "Technology": 0.2676827312, + "Art": 0.2452247441, + "Ireland": 0.2158894688, + "Organisation": 0.4329919219, + "Digital": 0.2245706022, + "Community": 0.3400434852, + "Events": 0.3220648766, + "x": 17.055216, + "y": 1.4848617 + }, + "22": { + "speaker": "conceptNULL", + "text": "No, I was too.", + "sequence": 24, + "Technology": 0.1786195338, + "Art": 0.1250375807, + "Ireland": 0.2926146388, + "Organisation": 0.1548645943, + "Digital": 0.216555655, + "Community": 0.1816014349, + "Events": 0.1528212875, + "x": 13.275076, + "y": 1.1202672 + }, + "23": { + "speaker": "Paul", + "text": "So that's, you know, that's, so that's, that's cool. And again, the 20, I know there, I think there's a question about, uh, highlights. I don't know, but like, that was definitely one. Cause we got like a lot of artists came together, gave up their time, gave up their labor presented. Um, and we had like, like Jonah on a call from New York, Nikki was in Spain, Ben was in France. So they all kind of tuned in at one point. Then we had like, you know, kind of new artists who had never maybe presented or shown their work in public before. Sorry, I'm picking up us here. It was a really nice kind of like, for me anyway, it was like, ah yeah, okay, this is why we're doing it, you know.", + "sequence": 25, + "Technology": 0.0486630648, + "Art": 0.0279255155, + "Ireland": 0.0807128251, + "Organisation": -0.0036019301, + "Digital": 0.0505030826, + "Community": 0.0459861159, + "Events": -0.0928061306, + "x": -4.0518575, + "y": 3.4952278 + }, + "24": { + "speaker": "Aisling", + "text": " Yeah, I think that was also a really important one for me to have experienced or I felt very privileged to have been able to experience it because I was so new to it at that point. But I remember one of them saying, I think it was either Nikki or Ben, they said something that completely stuck with me the whole time, that they were like, focus on the people in the room. And I think in, I guess whether it's to do with my age and my generation, there's such an idea of just growth and like, more people you want to like sell out events and you want everybody to know you and like it's all very clout based and it was such a refreshing thing to hear and from from someone who started something 20 years ago that I was now part of you know it was like actually even if there's a load of empty seats like there's people here interested and that kind of engagement is so much more invaluable so much more valuable than you know having a packed out room for the sake of it I think yeah that was like a really important message.", + "sequence": 26, + "Technology": 0.1034350172, + "Art": -0.0403258502, + "Ireland": 0.0106713083, + "Organisation": 0.0709014535, + "Digital": -0.085343495, + "Community": 0.1685914695, + "Events": 0.0716652125, + "x": -3.298498, + "y": -6.560659 + }, + "25": { + "speaker": "Paul", + "text": "Was that Ben when he was saying and like when he was doing it it was like when he and he's Ben would have done like a lot of kind of workshops and stuff you know trying to promote it but I think the way he put it was you know at first he was always kind of you're worried about how many people are going to turn up yeah and then he kind of learned that stop worrying about how many people turn up and just as ash says focus on the people who have turned up make make them your make them your world but uh really wise words you know", + "sequence": 27, + "Technology": -0.0065235449, + "Art": 0.0003651436, + "Ireland": -0.0299346708, + "Organisation": -0.0021288972, + "Digital": -0.2577835917, + "Community": 0.002510434, + "Events": -0.0625007451, + "x": -11.378324, + "y": -1.9598967 + }, + "26": { + "speaker": "conceptNULL", + "text": " Well, especially if you have all these people who have shown active, you know, like engagement in what you've done, as Ash was saying, it's like, you know, like having even one person be active is better than a thousand, a set out show and everyone's on their phone. It's like, you don't have the one person actually engaging and caring about what you do. And I think that's the really nice thing to see. Like, you know, community is really the most important thing. And I think it seems to be quite at the heart of it as well. I might throw in another question here, because it might be a little bit related to what you've just said as well. How have you found, if at all, that the landscape of digital art and technology have changed over, I would say, over the course of data? But I mean, like, you know, maybe everyone's obviously got a different time frame here. But if you have noticed a difference, and especially these people coming back and in, like, what would you kind of feel that has changed most, really? I can throw it over to Tom and Ash.", + "sequence": 28, + "Technology": 0.0778600052, + "Art": -0.0212756377, + "Ireland": 0.0228841212, + "Organisation": -0.010734912, + "Digital": -0.0730546266, + "Community": 0.2198007703, + "Events": 0.0318261683, + "x": -3.712961, + "y": -7.372546 + }, + "27": { + "speaker": "Tom", + "text": "Well, I mean, I kind of touched on it a bit earlier, but, you know, this thing around technology and its accessibility. So even now, we're making work around things like AI. But it's really at a kind of a input output level. You know, I know that's in the nature of AI a little bit, but it's a bit of a black box and it's much harder. A lot of technologies nowadays, well, they're not really based so much around, say, algorithms, they're much more based on things like data. And that's not something, if you open source it, that you can actually reproduce. So as an artist, you can't necessarily reproduce a training set. So I think there, I think there's something in technology over the last 20 years that specifically, I guess, with kind of technology in terms of like digital code-based technology, it's where they've become a bit less accessible. And I think that's also led to like, I think a lot about social media, which social media art, there was a certain amount of it, maybe kind of, you know, 10 years ago might've been at the peak of it or a little bit more recently than that. And now I teach in a college and very few of my students make work by social media, even though it's probably one of the biggest shaping forces in their life. And I think that's really kind of interesting that it's become almost invisible in a way.", + "sequence": 29, + "Technology": 0.3711454272, + "Art": 0.0705944821, + "Ireland": 0.0986962616, + "Organisation": 0.071710676, + "Digital": 0.1117110625, + "Community": 0.0515113883, + "Events": 0.0727614015, + "x": 6.5542226, + "y": -4.6796875 + }, + "28": { + "speaker": "conceptNULL", + "text": " What do you mean social media? Do you mean they post pictures or like they make artwork and post it on their social media? Are their works concerned with the topic of social media?", + "sequence": 30, + "Technology": 0.1292795092, + "Art": 0.4306221008, + "Ireland": -0.0452899486, + "Organisation": 0.0548152216, + "Digital": 0.2533343434, + "Community": 0.1886698604, + "Events": 0.2013403326, + "x": 9.681247, + "y": -2.0745218 + }, + "29": { + "speaker": "Tom", + "text": "Yeah, I mean, there's not so much work concerned with like critical over critiquing social media as I would expect it to be. And I don't, and I also don't mean this as a criticism of the students. It's more about the technology and it's, it's kind of disappearance, you know? And I think, I mean, maybe, you know, because people talk about infrastructure that, um, so an infrastructure is only something you know notice when it breaks and maybe things like social media have become infrastructural so that we don't see them anymore but I also think that that's a really interesting thing about technology and it really makes me dangerous. I know Paul will probably come on in just a minute because there's a whole pile of artwork that's actually, its focus is making infrastructure visible because actually it's a really shaping force in our lives and whether that's like Paul's working on infrastructures, but obviously there's, you know, whole histories of like in STS and stuff like that, looking at the unequal provision of services and services shape our possibilities and so on. So I don't know, that's one thing I think for sure that's happened. I also think as technology has really like up in terms of its capacity there became of course a focus on things like what you might call like finish so everything's like 4k now 8k you know and we're hopefully doing an event actually with this festival in canada and ireland called the small file media festival that kind of questions that idea of like more more more and i think that's something that's also it used to be the case that people were really like, you could only make a video that was like this many pixels. So you always went to as big as you could be, but now the technology is so capable, but also we've realized the kind of environmental cost of that are, I mean, other material costs of that. So people are beginning to say, oh yeah, maybe this kind of limitless horizon idea is no longer valid.", + "sequence": 31, + "Technology": 0.1506432593, + "Art": -0.0413450561, + "Ireland": -0.0806576982, + "Organisation": -0.1692917645, + "Digital": -0.0512232706, + "Community": -0.0450435579, + "Events": 0.0065543763, + "x": -10.848571, + "y": 4.939463 + }, + "30": { + "speaker": "conceptNULL", + "text": "Big time, yeah. Yeah, I think it also like what you're saying with the AI thing, I think also technological art suffers the novelty aspect, I think, much more than other art forms where it's like as soon as something new comes out, like every tech artist seems to have to have a piece coming out with it, even though it's like, why? You know, you have to try and jump onto the next thing always to stay relevant. But that's often also in the social media aspect as well. Yeah. Paul, anything to say?", + "sequence": 32, + "Technology": 0.2913823128, + "Art": 0.084133938, + "Ireland": -0.0609072149, + "Organisation": 0.0124704689, + "Digital": 0.0266917683, + "Community": 0.0321976878, + "Events": 0.0474276915, + "x": 3.1380155, + "y": -5.2062187 + }, + "31": { + "speaker": "Paul", + "text": " After you, Ash, I think you were going to come in there.", + "sequence": 33, + "Technology": 0.1283815056, + "Art": 0.0626056194, + "Ireland": 0.256072849, + "Organisation": -0.0149059948, + "Digital": 0.0384206101, + "Community": 0.0250820667, + "Events": 0.1278952807, + "x": 4.426768, + "y": 5.250013 + }, + "32": { + "speaker": "Aisling", + "text": "No, no, I was just...", + "sequence": 34, + "Technology": 0.1398984641, + "Art": 0.1702082455, + "Ireland": 0.1865070313, + "Organisation": 0.1090983003, + "Digital": 0.0613277107, + "Community": 0.1339837015, + "Events": 0.1385108829, + "x": 7.8582835, + "y": 1.7137591 + }, + "33": { + "speaker": "Paul", + "text": " So just in terms of the landscape of new media, digital art in Ireland, was that the original question? Yeah, absolutely. Yeah.", + "sequence": 35, + "Technology": 0.2713345289, + "Art": 0.3142337203, + "Ireland": 0.2894238234, + "Organisation": -0.0336532481, + "Digital": 0.259770155, + "Community": 0.0991421789, + "Events": 0.1300453246, + "x": 9.367558, + "y": 2.819691 + }, + "34": { + "speaker": "conceptNULL", + "text": "And how it's changed for you at all?", + "sequence": 36, + "Technology": 0.2131805718, + "Art": 0.0999245495, + "Ireland": 0.2115531117, + "Organisation": 0.0504866056, + "Digital": 0.1818054467, + "Community": 0.1771051884, + "Events": 0.2582301497, + "x": 10.557694, + "y": 0.7017671 + }, + "35": { + "speaker": "Paul", + "text": "I mean, I guess unavoidably so. And we kind of touched on it in different ways already. I mean, it's a 20 year span. When it began, it was in the beginning of the Celtic Tiger. And as kind of Tom alluded to, you know, there was a lot more kind of a lot more good vibes about technology, you know, but we've had like, to be real, like we've had Edward Snowden's revelations, although not too much has changed and so on. So the honeymoon period has worn off. You can even see that, like in relation to Ireland over the last few years, you know, you kind of have this dominant Silicon Docks narrative. Now there's kind of greater kind of criticality, more accessible to the public. We're seeing it specifically in language, like around data centers. Obviously, corporate tax rate, you know, we had it with Apple and so on and so forth, and it's changing and they're just hot off the presses. And on the subject of infrastructure, I was down in Grand Canal Dock last night with a group and Meta have actually, they've gone. Weird, they're not in offices anymore. They've gone somewhere else, like, but they're no longer in Grand Canal Dock. So, you know, shit's changed. Excuse my language, but language is all right. Things are changing. And obviously, you know, artwork is changing to reflect that, I would guess. Maybe Tom and Ashley, I'm not, I'm in academia, but not really kind of student focused so much at the moment. Although, you know, obviously, you know, we saw the last, event like Aoife's work, you know, on social media, on Twitter and so on. So, yeah, sorry, I'm kind of rambling on here. Yeah, perfect.", + "sequence": 37, + "Technology": 0.149878785, + "Art": -0.0513828471, + "Ireland": 0.1004690826, + "Organisation": -0.0801849365, + "Digital": 0.1002532914, + "Community": -0.0208189785, + "Events": -0.0890083238, + "x": -5.463541, + "y": 5.401068 + }, + "36": { + "speaker": "Aisling", + "text": "I think maybe in this sense of, like, I obviously, like I said, I'm with Dato only about a year, but I guess from my, oh, Paul's gone.", + "sequence": 38, + "Technology": 0.1988317817, + "Art": 0.1149772853, + "Ireland": 0.1801891625, + "Organisation": -0.1247201711, + "Digital": 0.1150932014, + "Community": -0.006567657, + "Events": 0.0116876643, + "x": -0.6340038, + "y": 6.349406 + }, + "37": { + "speaker": "Tom", + "text": "Are you away from him or?", + "sequence": 39, + "Technology": 0.1541781127, + "Art": 0.1616753936, + "Ireland": 0.1116891503, + "Organisation": -0.0159907155, + "Digital": 0.2252048552, + "Community": 0.136399731, + "Events": 0.1622900516, + "x": 8.375064, + "y": -0.44190797 + }, + "38": { + "speaker": "UNKNOWN_SPEAKER", + "text": " Amazing.", + "sequence": 40, + "Technology": 0.3555665612, + "Art": 0.2982919812, + "Ireland": 0.2666603625, + "Organisation": 0.2872280478, + "Digital": 0.2776271999, + "Community": 0.3117781281, + "Events": 0.4140433371, + "x": 17.543728, + "y": 2.655701 + }, + "39": { + "speaker": "Tom", + "text": " And we always need new members in data, you know, they keep getting killed.", + "sequence": 41, + "Technology": 0.1380765736, + "Art": 0.0316500142, + "Ireland": 0.0243819244, + "Organisation": -0.037270546, + "Digital": 0.093870081, + "Community": 0.0743172467, + "Events": 0.0818672925, + "x": 3.3673651, + "y": -2.1659873 + }, + "40": { + "speaker": "conceptNULL", + "text": "Yeah, this is it. I just keep getting hits, but I don't know, like, sorry.", + "sequence": 42, + "Technology": 0.0953068957, + "Art": 0.0846838951, + "Ireland": 0.1461725831, + "Organisation": 0.0622096993, + "Digital": -0.0130862705, + "Community": 0.1106051058, + "Events": 0.1383832991, + "x": 3.4920516, + "y": 2.7911732 + }, + "41": { + "speaker": "Aisling", + "text": "I guess just like the idea of actually growing up with technology as opposed to it being a new thing that enters your life. Like, I can't know what it would be like for, to not have the internet, you know, and I feel like maybe as data has progressed, like, technology is becoming more and more like like we said like ingrained in people's lives so kind of touching on what you said I guess Tom of like with your students maybe not making work about it is maybe because that kind of invisibility aspect of it, it's so ingrained that they can't really imagine their life without it. And I guess when you can't imagine that, the need for questioning maybe feels even less. I think the opposite. I think if you feel like you can't do without something, there's probably need to question it even more. Yeah, it's probably a generational thing. I think the fact that, yeah, data has been around so long, I think, um, it's probably almost accidentally like mapping how people are reacting to, to development technology.", + "sequence": 43, + "Technology": 0.3077362478, + "Art": -0.0116020245, + "Ireland": -0.0172153711, + "Organisation": -0.0341287479, + "Digital": 0.0727612749, + "Community": 0.0238857828, + "Events": 0.0020487113, + "x": 3.898569, + "y": -5.5068564 + }, + "42": { + "speaker": "conceptNULL", + "text": "Yeah.", + "sequence": 44, + "Technology": 0.2798177004, + "Art": 0.267590493, + "Ireland": 0.264179945, + "Organisation": 0.4656565487, + "Digital": 0.2740884721, + "Community": 0.4323056936, + "Events": 0.3351562321, + "x": 18.153908, + "y": 1.320851 + }, + "43": { + "speaker": "Tom", + "text": "I mean, at a practical level, almost any of the media formats that work would have been presented with data one are no longer existing, you know? Yeah.", + "sequence": 45, + "Technology": 0.2367161065, + "Art": 0.1312916428, + "Ireland": 0.1383283436, + "Organisation": 0.0005392544, + "Digital": 0.2366013229, + "Community": 0.140742451, + "Events": 0.1477493793, + "x": 8.9072075, + "y": 0.08552996 + }, + "44": { + "speaker": "conceptNULL", + "text": "I think I saw in one of the pictures that a PS2 icon or something. And I was just like, man, I wanted to see a video. I just want to know what the hell was done with that. Even though it's just a camera, but it's just like such a relic of a past thing that you can see. And like, for people who remember, they'll remember it.", + "sequence": 46, + "Technology": 0.1510233879, + "Art": 0.0460289679, + "Ireland": -0.0792539269, + "Organisation": -0.0560083836, + "Digital": 0.0923430994, + "Community": -0.0605378002, + "Events": 0.1123228744, + "x": 1.7623355, + "y": -4.00422 + }, + "45": { + "speaker": "Tom", + "text": "And maybe younger people look at it and be like, what the fuck is that? A little bit young. If you add up to really, I don't know if it's old or young, but one of the very first videos of Data and someone making a drum machine on a Game Boy.", + "sequence": 47, + "Technology": 0.2151622325, + "Art": -0.0524834879, + "Ireland": -0.0006950786, + "Organisation": -0.1162670255, + "Digital": 0.0749197453, + "Community": -0.0758163631, + "Events": -0.0673014075, + "x": -6.7649913, + "y": 6.1131377 + }, + "46": { + "speaker": "conceptNULL", + "text": " that's that's a vintage art by now like you know people people like we've gotten build dolls on it and build like you know synthesizers out them like and shit class okay let's pull out another question if anyone wants to help me pull it out absolutely although", + "sequence": 48, + "Technology": 0.1280140728, + "Art": 0.0158729907, + "Ireland": -0.0680998415, + "Organisation": -0.0764683634, + "Digital": -0.0152166504, + "Community": -0.0634984225, + "Events": -0.0972251147, + "x": -10.293972, + "y": 3.964844 + }, + "47": { + "speaker": "Aisling", + "text": " What's data going to be next month?", + "sequence": 49, + "Technology": 0.1767930984, + "Art": 0.1416885406, + "Ireland": 0.0607128851, + "Organisation": 0.046301946, + "Digital": 0.257338196, + "Community": 0.1539206505, + "Events": 0.2164798826, + "x": 9.577702, + "y": -0.6451263 + }, + "48": { + "speaker": "Tom", + "text": "I mean, people having this conversation would be great, I think, you know, and that's not because I'm lazy, but it's like, ultimately, as it's been touched upon, the idea that it would just continually change would be good.", + "sequence": 50, + "Technology": -0.0204928964, + "Art": -0.0391997248, + "Ireland": 0.0354682207, + "Organisation": 0.0042332169, + "Digital": -0.0485101715, + "Community": 0.0739278048, + "Events": 0.0443246439, + "x": -6.2536964, + "y": -3.006455 + }, + "49": { + "speaker": "Paul", + "text": " Yeah, other people involved, still going, you know, because there's always going to be a need for it. I mean, that's like, maybe other things will come along, you know, and that's fine as well. Like, you know, I think we were saying it last year around the 28th anniversary, like if Deja does go back asleep, like that's fine, you know, there's no shame in that or whatever, like something else comes along, that's great. One thing I did when I was looking at that question, and this is maybe not someone's data, I think it's just like, oh, my own little wish list. I'd love to see, like I have a dream that there will be like a physical place, studio, gallery for this kind of work, an independent one. don't need a shitload of funding from pick your big tech company want to get in on the action something small so you know i'm not talking about dublin it could be limerick it could be mayo i don't care it would just be great to see it happen somewhere for people to go but somewhere for people internationally to go like the agencies and stuff. So I think you, there's another, and I'm going to, sorry, I'm going off on one here. I know there was another question about inspiration and other organizations. So looking, and obviously there's, as I said at the beginning, there's lots of brilliant stuff going on here as well. Oh shit. Has everyone just turned their camera off? No, we're all still here, don't worry. I was like, oh man, they don't like what I'm saying. Like, there's places like Fergus Field in London, there's like N\u00eemes in Cyprus and Limassol, obviously bigger, kind of slightly bigger ones like Transmedia, like, well, that's a festival as such, but, you know, like the influencers in Barcelona, like, I think that's kind of dormant now. Like, there's all of these other great spaces. and events in Europe that are very much, you know, kind of community orientated, if I could say that. So we have that, you have that, not just somewhere data, but you guys think that everyone else is doing really great stuff, but it would be just nice to have a Hey, that's, oh, I'm coming up to here. Well, okay. Obviously we're all going to go and meet here and, you know, be nice. Hey, look, I'm pitching to the choir, maybe here, a gallery studio space for people working in media, digital media, arts, et cetera, et cetera.", + "sequence": 51, + "Technology": 0.0185112264, + "Art": -0.0524331816, + "Ireland": 0.073639676, + "Organisation": -0.1026906967, + "Digital": -0.1063778698, + "Community": -0.039320834, + "Events": 0.0182411503, + "x": -8.154863, + "y": 0.6175567 + }, + "50": { + "speaker": "conceptNULL", + "text": "That is my fucking map. You couldn't have said it better. Innovation lab or whatever. Incubation lab as they like to call it. Yeah, no I think this is also one of the problems with constant low that in the end why we shelved a lot of the event kind of side foot was it like because it just was so hard to find a space to even do anything in which and all the spaces were ill fit or needed lots of work and were expensive or had their clauses or didn't have insurance and in the end, it just kind of demeans, not demeans, but just breaks you down so much that you're just like, I can't, I can't keep doing, you know, can't keep doing this like in a consistent level. And as you've kind of shown consistency in whatever timeframe it is, is kind of the key to anything kind of standing on its own two legs. And I think definitely a space, a media space, whether that be in Dublin or wherever in the country, it would be absolutely amazing.", + "sequence": 52, + "Technology": -0.0746586025, + "Art": -0.0019416288, + "Ireland": -0.0455278493, + "Organisation": -0.0840799063, + "Digital": -0.1288158596, + "Community": -0.0920977145, + "Events": -0.0561002456, + "x": -11.911842, + "y": 0.2337793 + }, + "51": { + "speaker": "Paul", + "text": " Maybe a big monorail around the whole country to connect us to it?", + "sequence": 53, + "Technology": 0.080361858, + "Art": 0.1329458654, + "Ireland": -0.0324952304, + "Organisation": 0.213199079, + "Digital": 0.1294657141, + "Community": 0.1692872047, + "Events": 0.061405994, + "x": 12.117555, + "y": -4.37463 + }, + "52": { + "speaker": "Aisling", + "text": "So you said Meta were out. Do they know what they're doing with the offices?", + "sequence": 54, + "Technology": 0.1011168137, + "Art": 0.1274570078, + "Ireland": -0.034935873, + "Organisation": 0.0348453596, + "Digital": 0.0768957064, + "Community": 0.034224838, + "Events": 0.054662846, + "x": 1.8941096, + "y": -2.630803 + }, + "53": { + "speaker": "conceptNULL", + "text": "Yeah, actually, yeah. Occupy the building formerly known as Meta. Yeah, yeah. Just slap a derelict notice light straight away on it.", + "sequence": 55, + "Technology": 0.1294448674, + "Art": 0.0944697857, + "Ireland": 0.1819471419, + "Organisation": 0.114275977, + "Digital": 0.0095281601, + "Community": 0.0399985164, + "Events": 0.0517119989, + "x": 2.3166137, + "y": 2.3905282 + }, + "54": { + "speaker": "Paul", + "text": " Running like usual shit like security guard. I was like, where's the new place? He's like, well, you have to look online. He's like, can I come in? He's like, no.", + "sequence": 56, + "Technology": 0.0777767673, + "Art": 0.0055543943, + "Ireland": -0.029926084, + "Organisation": -0.0398809128, + "Digital": -0.0287393332, + "Community": -0.0853029191, + "Events": -0.0875127912, + "x": -10.468377, + "y": 3.1195278 + }, + "55": { + "speaker": "conceptNULL", + "text": "Don't open the app. You tried though. You tried. There you go. OK. Any questions from anyone that they feel? that they've read that they feel like answering as well, because there is still a lot of questions, but I feel like a lot of them have been touched on at this point, so there mightn't be too much need to ask some of them, I guess. There was one, I suppose, I was more kind of a little bit interested was, do you have any things that were crazy or wild that happened at any particular presentation or a fond memory or anything where you're like, fuck, that was crazy, or it was just like, I don't know, particularly memorable in any kind of way where you were like, Yeah, like, I don't know. Yeah, that's a good one. I wanted to know. Any juicy stories anyone booking?", + "sequence": 57, + "Technology": 0.1369611174, + "Art": 0.0814848095, + "Ireland": 0.0216420982, + "Organisation": -0.0695264563, + "Digital": -0.0386752822, + "Community": 0.0642645732, + "Events": 0.124920778, + "x": -0.71532166, + "y": -2.0725336 + }, + "56": { + "speaker": "Paul", + "text": "I have to say I've been pretty good at data events because I just tend to be wrecked after them or something. The first one, the reboot and A4 sounds. There's a story, but I ain't telling it. A lot of it. How was that in person? Nothing bad. It was the points and the post points part. It was really good fun. Yeah. I don't know. I'll turn it over to Ash.", + "sequence": 58, + "Technology": 0.100439705, + "Art": 0.028291354, + "Ireland": 0.0863581449, + "Organisation": -0.0436743014, + "Digital": -0.0279713105, + "Community": 0.0319302902, + "Events": 0.1159951836, + "x": -0.9651897, + "y": -0.5808797 + }, + "57": { + "speaker": "Aisling", + "text": "Come on, Tom. Any juicy gossip?", + "sequence": 59, + "Technology": 0.1926791668, + "Art": 0.0625333637, + "Ireland": 0.0112874182, + "Organisation": -0.0349868089, + "Digital": 0.1161818206, + "Community": 0.1037125736, + "Events": 0.0868525729, + "x": 4.4809065, + "y": -2.5383754 + }, + "58": { + "speaker": "Tom", + "text": "What about that time that Hirsch Daryl and Pierre Huey were doing Poppers and the Jacks? Other than that, I can't remember anything, really.", + "sequence": 60, + "Technology": 0.0824231356, + "Art": 0.0872747079, + "Ireland": 0.1051096171, + "Organisation": -0.0881358683, + "Digital": 0.0578710809, + "Community": -0.031726677, + "Events": 0.0790343136, + "x": -0.449625, + "y": 4.8332872 + }, + "59": { + "speaker": "conceptNULL", + "text": " I'm so smashed I can't remember the event.", + "sequence": 61, + "Technology": 0.1309801042, + "Art": 0.1378673017, + "Ireland": 0.1376490891, + "Organisation": 0.0954017714, + "Digital": 0.1197566763, + "Community": 0.1539358497, + "Events": 0.3888296783, + "x": 11.418129, + "y": 1.2075881 + }, + "60": { + "speaker": "Paul", + "text": "Ash, what about you?", + "sequence": 62, + "Technology": 0.1146477312, + "Art": 0.082764402, + "Ireland": 0.115177691, + "Organisation": -0.0544062182, + "Digital": 0.1423431188, + "Community": 0.1381556094, + "Events": 0.1457612813, + "x": 6.695937, + "y": -0.20215023 + }, + "61": { + "speaker": "Aisling", + "text": "I don't know. I don't think we've had two crazy events, have we, since I've joined?", + "sequence": 63, + "Technology": 0.0852425694, + "Art": -0.0646851957, + "Ireland": 0.1262159795, + "Organisation": -0.0062548006, + "Digital": -0.0172476918, + "Community": 0.0520334542, + "Events": 0.1355265379, + "x": -1.4334855, + "y": 0.31949866 + }, + "62": { + "speaker": "Paul", + "text": " No, but I think it's, yeah, me, not me, but like I said, I haven't really been out too much because I just, yeah, wrecked by the time we get there. They're usually on a Thursday evening. So I guess work on a Friday morning is usually, I sound so dull. Next question, please. Nobody's joking.", + "sequence": 64, + "Technology": 0.0010999329, + "Art": -0.0367012694, + "Ireland": 0.0635681748, + "Organisation": 0.1045937091, + "Digital": -0.1665164232, + "Community": -0.0751032755, + "Events": -0.0796835423, + "x": -11.5369425, + "y": -3.2152762 + }, + "63": { + "speaker": "Tom", + "text": "I do Friday morning, so it's like, well, you've got an option. I do cramps Friday morning, but it's like, no way I'm going to do it after drinking.", + "sequence": 65, + "Technology": -0.0715246499, + "Art": -0.0290833525, + "Ireland": 0.0297728926, + "Organisation": 0.0335513093, + "Digital": -0.0543327108, + "Community": -0.0390888825, + "Events": -0.0401275977, + "x": -9.7245655, + "y": -0.80345523 + }, + "64": { + "speaker": "Paul", + "text": "Yeah, we're going to have to open up our session again.", + "sequence": 66, + "Technology": 0.0764770359, + "Art": 0.0797454342, + "Ireland": 0.0965738669, + "Organisation": 0.3597000241, + "Digital": 0.0499910414, + "Community": 0.143071413, + "Events": 0.1978592128, + "x": 14.395142, + "y": -2.2512136 + }, + "65": { + "speaker": "Aisling", + "text": " Yeah, I think we need to reassess. Like when the craziest thing is driving a table home to Tom's in the snow. I think we need to do something.", + "sequence": 67, + "Technology": 0.0190062039, + "Art": 0.0161101762, + "Ireland": 0.0006978996, + "Organisation": -0.0027898978, + "Digital": -0.0699140579, + "Community": -0.0352349803, + "Events": -0.0917340815, + "x": -10.200551, + "y": 0.88504446 + }, + "66": { + "speaker": "Paul", + "text": " The crazy, or the opposite, the uncrazy, because we had an event down at the Electric Picnic and it was on the Sunday, like the worst time, but like nice to be there, but it was at like five o'clock on the Sunday So, like I went down on this Sunday and it was over at six and I think I was on the train in Strad Valley or wherever by like quarter to seven. I was just like, get me the hell out of here. That's how lame I am.", + "sequence": 68, + "Technology": 0.0084991939, + "Art": -0.0002004765, + "Ireland": 0.0176069718, + "Organisation": -0.0186302923, + "Digital": -0.0125064068, + "Community": 0.0653342828, + "Events": 0.0667021275, + "x": -5.528774, + "y": -2.7500474 + }, + "67": { + "speaker": "conceptNULL", + "text": "You were also like talking in print, okay.", + "sequence": 69, + "Technology": 0.0517399758, + "Art": 0.0351460353, + "Ireland": 0.0511397794, + "Organisation": 0.0532013513, + "Digital": 0.0243427865, + "Community": 0.0690242648, + "Events": 0.1599621922, + "x": 3.1844406, + "y": 0.5216458 + }, + "68": { + "speaker": "Aisling", + "text": "No, just when you mentioned it, like we were there chatting about like AI and you know all the ethics and everything in it and from the background there's just like like there was just the the spill from the other tent which is completely like there was yeah it was I was very grateful for the few people that were deciding to be at our talk about AI at five o'clock on Sunday I'd like to make an exception", + "sequence": 70, + "Technology": -0.0703718439, + "Art": -0.0889716893, + "Ireland": -0.0819084346, + "Organisation": -0.064448826, + "Digital": -0.1677710116, + "Community": 0.0629580319, + "Events": -0.02875988, + "x": -9.608776, + "y": -2.8553367 + }, + "69": { + "speaker": "conceptNULL", + "text": " You can see one person at the front just completely panned out.", + "sequence": 71, + "Technology": 0.1560747772, + "Art": 0.0970608369, + "Ireland": 0.033200331, + "Organisation": 0.0438271128, + "Digital": 0.0396155529, + "Community": 0.0518235527, + "Events": 0.0828519017, + "x": 2.0010345, + "y": -1.8103894 + }, + "70": { + "speaker": "Aisling", + "text": "Oh yeah, some people were like, they were just absolute stragglers who wanted to sit down for a while. No more than they bargained for. Class.", + "sequence": 72, + "Technology": -0.1220484078, + "Art": 0.0519647002, + "Ireland": 0.0435543172, + "Organisation": -0.0625110865, + "Digital": -0.0593193993, + "Community": 0.0376594961, + "Events": -0.0042805318, + "x": -7.0600023, + "y": -1.6032693 + }, + "71": { + "speaker": "conceptNULL", + "text": " Where would you love to do it? This is actually just from, this wasn't written down. If you could have one place to do a data event, and it was anywhere in Ireland, where would you do it? Good question. I had that one on Tapburner, like, you know, do you want to write that one down, like a hook?", + "sequence": 73, + "Technology": 0.1550737917, + "Art": 0.1002990305, + "Ireland": 0.2797958851, + "Organisation": -0.0469782688, + "Digital": 0.0319193937, + "Community": 0.0420073159, + "Events": 0.1831197441, + "x": 5.5027485, + "y": 5.182532 + }, + "72": { + "speaker": "Tom", + "text": "We could use it for our upcoming data event in the complex. There you go. It would be in the complex gallery in October. My favorite building was knocked down to make way for a Google building, so it was the old Bowling's Mill, and now it's the new Google Apartments. So maybe doing something with one of those apartments would be kind of cool.", + "sequence": 74, + "Technology": 0.2232721746, + "Art": 0.1641711593, + "Ireland": 0.0494637452, + "Organisation": 0.0808515549, + "Digital": 0.1303915679, + "Community": 0.1385353953, + "Events": 0.1001276597, + "x": 8.181175, + "y": -2.5248132 + }, + "73": { + "speaker": "Paul", + "text": "Yeah, that'd be amazing. Yeah, like maybe Valencia Island. you know, where the... Yeah, it would be nice. But also, and I know we've talked about it, I'm going to say Moor Street because it's where we know, it's where I know, but like phone repair shops are of big interest and it would be really nice to do a data event within the context of repair culture or something like that. We have kind of mentioned that on one of our many chats, platforms, whatever. Sorry, Ash, over to you.", + "sequence": 75, + "Technology": 0.1674370915, + "Art": 0.0618523099, + "Ireland": -0.0105948979, + "Organisation": 0.0550721586, + "Digital": -0.0477576889, + "Community": 0.1122504696, + "Events": 0.0739857256, + "x": -1.0024674, + "y": -5.1136184 + }, + "74": { + "speaker": "Aisling", + "text": "No, I was just back in the islands thing, just like not, you know, in a building, but just, I don't know, big audio walk tour in the middle of nowhere, somewhere in nature would be nice.", + "sequence": 76, + "Technology": 0.0581802391, + "Art": 0.0640764236, + "Ireland": 0.1700389236, + "Organisation": -0.0467775315, + "Digital": -0.0332324542, + "Community": 0.1016450375, + "Events": 0.0876181796, + "x": 2.1143217, + "y": 4.7104464 + }, + "75": { + "speaker": "Tom", + "text": "We're at a place in Colorado, is it Colorado? Wisconsin, where they're, you know, the place with the no electronic signals? Okay. It's kind of nice to do something there.", + "sequence": 77, + "Technology": 0.0628995746, + "Art": 0.0495181754, + "Ireland": 0.0585073568, + "Organisation": -0.0462561175, + "Digital": 0.0106730834, + "Community": 0.0707378387, + "Events": 0.0229896009, + "x": -2.8041816, + "y": -0.17871359 + }, + "76": { + "speaker": "Paul", + "text": "And you can come out to the other side. Running, you have to go that far to find those situations.", + "sequence": 78, + "Technology": 0.1540652215, + "Art": 0.0919264331, + "Ireland": 0.1562890112, + "Organisation": 0.1434711218, + "Digital": 0.1415187865, + "Community": 0.1350248605, + "Events": 0.2343844324, + "x": 11.47592, + "y": 0.1384782 + }, + "77": { + "speaker": "Tom", + "text": "Yeah. Yeah, Ballycroy and Mayo is a similar spot. Yeah.", + "sequence": 79, + "Technology": 0.0308422539, + "Art": 0.0534070916, + "Ireland": 0.2139565647, + "Organisation": 0.2473538369, + "Digital": 0.0027028266, + "Community": 0.1258111, + "Events": 0.1327510178, + "x": 14.532128, + "y": -3.1641135 + }, + "78": { + "speaker": "conceptNULL", + "text": "If I walk down to my field, man, I'll have that like, you know. That works as well if you want to come here and do it. Yo. All right. I feel like we should probably wrap it up because we still have to transcribe all this and as much as I'm having all this conversation. It might be a good time to wrap it up. But maybe we can have another conversation at some point anyway. And we can talk maybe about some sort of events or something maybe we could do together. Maybe some sort of collaborative thing. I think I'd enjoy that.", + "sequence": 80, + "Technology": 0.0185805149, + "Art": -0.0422833562, + "Ireland": -0.0019574021, + "Organisation": 0.0427509621, + "Digital": -0.0608809143, + "Community": 0.0492794663, + "Events": 0.126662761, + "x": -5.407543, + "y": -4.268926 + }, + "79": { + "speaker": "Paul", + "text": "Yeah. I think that would be really, really, really good. And then also, just again, I know we're up here. We're kind of Dublin-centric. But if anyone just comes on your radar who you think might like the opportunity to present, it could be a good time to finish with them. If it's not going to be an impressor, we will make it. It might take us a bit of whatever, but we'll make it happen. You guys, whatever you're doing in your own practice, or even if you want to come along and just present what it is you're doing now at the moment, we'll make it work.", + "sequence": 81, + "Technology": 0.1207714155, + "Art": 0.0669942722, + "Ireland": 0.0947911888, + "Organisation": 0.0920387134, + "Digital": 0.0457230359, + "Community": -0.018134255, + "Events": 0.0473377556, + "x": 1.4687567, + "y": 0.7860516 + }, + "80": { + "speaker": "conceptNULL", + "text": "Absolutely. We'd love to do that. We'd love to do that because I think I think something I definitely would, like, I feel like I'm gathering knowledge that I'd like to talk about, and also talking to you is really interesting, is like about, yeah, community building, you know, actually collective building. I don't know if that's the right word, but it's like how to actually tie people together who are all doing the same thing, you know, and especially in the time of the internet when it's seemingly so easy, but sometimes it can be so easy to also fall disconnected with things. Yeah.", + "sequence": 82, + "Technology": 0.1138495132, + "Art": -0.0093062483, + "Ireland": 0.0189237073, + "Organisation": 0.100193575, + "Digital": -0.0398513451, + "Community": 0.2115151733, + "Events": 0.0891289711, + "x": -2.7378263, + "y": -6.948479 + }, + "81": { + "speaker": "Tom", + "text": "So this might be totally, obviously quite short notice in some ways, but tomorrow, I know, but on the 1st of June, the data event is actually about like community building technologies. So it's, currently there are two speakers, which is me and John Finnan from Dublin Digital Radio. And so we're talking about like technologies to help to maintain or like produce like infrastructural technologies to help to produce some sort of community. So that would be one that actually, if one of you was interested, I mean, the one thing that we would say is that we won't really have a panel of all male presenters. So, yeah, that's, I mean, there might be another group presenting as well, but we tend to try and keep things quite balanced. In fact, we tend to try and balance things in the opposite direction. This would probably be, the most well on one panel because you know technology art has had a particularly male context for a long time and so yeah definitely yeah.", + "sequence": 83, + "Technology": 0.2554141879, + "Art": -0.1316922605, + "Ireland": 0.0739280209, + "Organisation": -0.0411982909, + "Digital": -0.0166218877, + "Community": -0.0212112851, + "Events": -0.0076150354, + "x": -8.102731, + "y": 6.2909155 + }, + "82": { + "speaker": "conceptNULL", + "text": "I'm also going to be in Berlin the 1st of June. I could Skype in but I don't know if you guys ever do a Skype in presentation. I think it's not a very good one.", + "sequence": 84, + "Technology": 0.1675563306, + "Art": -0.0252006594, + "Ireland": 0.0490498841, + "Organisation": 0.0094171558, + "Digital": -0.0311206896, + "Community": -0.0625530332, + "Events": -0.0510735624, + "x": -8.022642, + "y": 4.6314588 + }, + "83": { + "speaker": "Tom", + "text": "I think we'd like to keep it in person but if I don't know if anybody else is interested. Since we're talking specifically about that community building technology, you can just be like, going back to what we talked about, it's not about like, where's the super polished presentation? It's like, Here's what we've been doing with concept null. We're not really sure where we're going with it, or we are sure, or whatever. And we kind of want to tease it out, because what I'm going to be talking about is this idea for a listing site. And basically, so it's kind of similar, right? And I'm talking about the structure of it. I want to do a workshop about how kind of decentralized listings could work. So it would also, then, of course, be really good to have some of the after discussion since it's the year.", + "sequence": 85, + "Technology": 0.2068860084, + "Art": 0.0256706234, + "Ireland": -0.094320491, + "Organisation": -0.0274016764, + "Digital": -0.0702403039, + "Community": 0.0325928815, + "Events": 0.0524595082, + "x": 0.39177582, + "y": -4.957529 + }, + "84": { + "speaker": "conceptNULL", + "text": "Cool, yeah. Yeah, yeah. So what's the decentralized listing of like web pages or like of actual physical spaces?", + "sequence": 86, + "Technology": 0.2151434124, + "Art": 0.1942465752, + "Ireland": 0.0708830357, + "Organisation": 0.0214069746, + "Digital": 0.1399711967, + "Community": 0.1345408559, + "Events": 0.209859997, + "x": 8.747507, + "y": -1.3653961 + }, + "85": { + "speaker": "Tom", + "text": "Yeah, so just like stuff that's happening. So again, moving away from finding out about stuff on social media. But having a site that's an infrastructure that people, different people can use. So for example, Concept Null events can all be on it and you can find them if you're looking at Concept Null, but the local Badminton club could also be using it and their events would be on it. And if you wanted to see both, you'd see both. And if you only wanted to see Concept Null, you'd only see that.", + "sequence": 87, + "Technology": 0.1000205129, + "Art": 0.001793731, + "Ireland": -0.0602570884, + "Organisation": -0.0997958332, + "Digital": -0.0092524653, + "Community": 0.08296749, + "Events": 0.0821593404, + "x": -1.3062904, + "y": -3.1628788 + }, + "86": { + "speaker": "conceptNULL", + "text": " Interesting. Our friends were trying to build the same kind of idea as a site, but it was like based on blockchain. I don't know if that's the same idea of decentralized, but they were basically had like an events page and their tickets were basically based on blockchains that you couldn't have tickets. Not exactly the same thing, but it was definitely the same vein of trying to get away from social media events basically of like, you know, Facebook events was like the biggest thing for Facebook. Like it was the handiest thing. Like, you know, you could make an event and invite people and That's the one thing I still mourn with Facebook. I'm like, that was actually kind of handy, like, you know, getting invited to a wedding and finding out what was going on.", + "sequence": 88, + "Technology": 0.0234699342, + "Art": 0.0629973412, + "Ireland": -0.0204334836, + "Organisation": 0.0397511125, + "Digital": -0.0135349855, + "Community": 0.1521802843, + "Events": 0.1606983542, + "x": -5.0041413, + "y": -6.1404233 + }, + "87": { + "speaker": "Aisling", + "text": "Who were your friends that were trying to build it?", + "sequence": 89, + "Technology": 0.137083739, + "Art": 0.0872242451, + "Ireland": 0.0933372229, + "Organisation": 0.1185161248, + "Digital": 0.0105665661, + "Community": 0.2936511934, + "Events": 0.1733222902, + "x": 11.895587, + "y": -2.3727713 + }, + "88": { + "speaker": "conceptNULL", + "text": "It was actually your brother and Colin Cullum. I thought you were asking me this.", + "sequence": 90, + "Technology": 0.0347195491, + "Art": -0.0077758338, + "Ireland": 0.0764258355, + "Organisation": -0.0054918472, + "Digital": 0.0809376836, + "Community": 0.0066082031, + "Events": -0.0860975683, + "x": -4.302978, + "y": 3.7756934 + }, + "89": { + "speaker": "Tom", + "text": "He's in the same building. Wait a second, turn the camera around. I'm still out here.", + "sequence": 91, + "Technology": 0.0450324789, + "Art": 0.0079737175, + "Ireland": 0.0709144622, + "Organisation": 0.0577686578, + "Digital": -0.0402822159, + "Community": -0.0031684926, + "Events": 0.0369877368, + "x": -4.608613, + "y": -1.6732967 + }, + "90": { + "speaker": "conceptNULL", + "text": " Um... It was, what was it?", + "sequence": 92, + "Technology": 0.1579794139, + "Art": 0.1138813347, + "Ireland": 0.2594420314, + "Organisation": -0.0405229628, + "Digital": 0.1411259025, + "Community": 0.0773904473, + "Events": 0.1829835325, + "x": 6.5693765, + "y": 4.243448 + }, + "91": { + "speaker": "Aisling", + "text": "That one, yeah. Yeah, yeah, yeah. Yeah, I know what you're talking about.", + "sequence": 93, + "Technology": 0.139710471, + "Art": 0.1191093698, + "Ireland": 0.1406740248, + "Organisation": 0.2392685711, + "Digital": 0.1039162874, + "Community": 0.2032199949, + "Events": 0.1633237898, + "x": 13.536354, + "y": -1.3670807 + }, + "92": { + "speaker": "conceptNULL", + "text": "Shows how much you talk to your brother right now, anyway. Yeah. That's why.", + "sequence": 94, + "Technology": 0.128154695, + "Art": 0.003356854, + "Ireland": -0.044370681, + "Organisation": 0.1185553074, + "Digital": -0.0098796748, + "Community": 0.0415692963, + "Events": 0.0695676282, + "x": -2.0760655, + "y": -4.939035 + }, + "93": { + "speaker": "Paul", + "text": "But I think they shall have a feeling family panel event the next time.", + "sequence": 95, + "Technology": -0.0135565568, + "Art": 0.0055780327, + "Ireland": 0.0215840079, + "Organisation": -0.0177237485, + "Digital": -0.066394493, + "Community": 0.1346477568, + "Events": 0.1401366889, + "x": -5.7430615, + "y": -5.3782854 + }, + "94": { + "speaker": "conceptNULL", + "text": "Yeah. You'd be surprised what's in that family, man. Goddamn. We got it all.", + "sequence": 96, + "Technology": 0.0980327874, + "Art": 0.085191533, + "Ireland": 0.1533022225, + "Organisation": -0.0253697559, + "Digital": 0.0450497121, + "Community": 0.048488982, + "Events": 0.0515942648, + "x": 0.7449215, + "y": 3.9942174 + }, + "95": { + "speaker": "Aisling", + "text": "We'll get Dean Rich in there as well, sure. Why not?", + "sequence": 97, + "Technology": -0.0571262687, + "Art": 0.0295772459, + "Ireland": 0.0661578178, + "Organisation": -0.0103701297, + "Digital": 0.0176749807, + "Community": -0.0119773448, + "Events": 0.0406000577, + "x": -6.0606637, + "y": -0.9238262 + }, + "96": { + "speaker": "conceptNULL", + "text": " Oh, please, yes, with the big hat again. I guess one last question. How would you guys feel about calling this the big data interview?", + "sequence": 98, + "Technology": 0.1834568828, + "Art": 0.1016845182, + "Ireland": 0.0744446591, + "Organisation": 0.0082895607, + "Digital": 0.1434313506, + "Community": 0.0831352696, + "Events": 0.136344552, + "x": 6.6183586, + "y": -1.311184 + }, + "97": { + "speaker": "UNKNOWN_SPEAKER", + "text": "Big data.", + "sequence": 99, + "Technology": 0.3240047097, + "Art": 0.236335665, + "Ireland": 0.1524737924, + "Organisation": 0.3093729615, + "Digital": 0.3839444518, + "Community": 0.337410748, + "Events": 0.3200583458, + "x": 16.588356, + "y": 2.5195816 + }, + "98": { + "speaker": "Tom", + "text": "I think you can call it whatever you want, for sure.", + "sequence": 100, + "Technology": 0.1434690356, + "Art": 0.1399530917, + "Ireland": 0.1146589369, + "Organisation": 0.0325538032, + "Digital": 0.0886203498, + "Community": 0.1483799219, + "Events": 0.1446833462, + "x": 7.4925437, + "y": 0.44302577 + }, + "99": { + "speaker": "Paul", + "text": "But even big data, Tom, this is on the back, Tom said you said something about big data. in our last conversation but it wasn't and I took it like big data as in like big tech I was like what the fuck is he talking about and then I you were saying big data presence that no school or a big data connection oh yeah the organization I was like no man that's no don't do whatever you want", + "sequence": 101, + "Technology": 0.0792150497, + "Art": -0.1074697301, + "Ireland": -0.0921461433, + "Organisation": -0.1762625128, + "Digital": -0.133826226, + "Community": -0.2099771053, + "Events": -0.1191948205, + "x": -12.540102, + "y": 2.8369312 + }, + "100": { + "speaker": "conceptNULL", + "text": " Okay, well, we'll come back to you with the script in about three years and then... On a defunct platform that we can't access.", + "sequence": 102, + "Technology": 0.1120433584, + "Art": 0.0311819576, + "Ireland": 0.0705917925, + "Organisation": -0.0470770225, + "Digital": 0.0432564616, + "Community": -0.0082763461, + "Events": 0.1107729599, + "x": 0.030054636, + "y": -0.28247046 + }, + "101": { + "speaker": "Paul", + "text": "Yeah, literally.", + "sequence": 103, + "Technology": 0.2258704901, + "Art": 0.248430714, + "Ireland": 0.2560866475, + "Organisation": 0.3798061311, + "Digital": 0.247472167, + "Community": 0.3025097847, + "Events": 0.2811346054, + "x": 16.423088, + "y": 1.1440326 + }, + "102": { + "speaker": "conceptNULL", + "text": "Yeah, on some blockchain somewhere like... Okay, well, look, we might wrap it up, but I hope this is the last time we get to talk to each other anyway. Absolutely. If I'm back in Ireland and in Dublin, I'll give you guys a shout. Anyway.", + "sequence": 104, + "Technology": 0.0621548444, + "Art": 0.0524238013, + "Ireland": 0.2577371597, + "Organisation": -0.0457628332, + "Digital": 0.0052126739, + "Community": 0.040994782, + "Events": 0.1090841293, + "x": 3.4289658, + "y": 5.278118 + }, + "103": { + "speaker": "Paul", + "text": " I am. Yeah. I mean, we'll see if we get through all of them, but we could be here for a while. That's it. Like, to be honest, I was going to whittle it down. I was like, going to make it like all sleek and be like having like a conversation. Then I was like, I actually never written it. Yeah, yeah, yeah. No, I think it's good. I mean, it's always good to have more than less. Sorry, my computer is ringing because someone's calling me on signal. It's blowing up, man.", + "sequence": 2, + "Technology": 0.1555153728, + "Art": -0.0434233733, + "Ireland": 0.0368795544, + "Organisation": -0.0494164973, + "Digital": -0.0637621209, + "Community": -0.082887575, + "Events": -0.0403678156, + "x": -8.585102, + "y": 4.2509303 + }, + "104": { + "speaker": "UNKNOWN_SPEAKER", + "text": "Really annoying.", + "sequence": 3, + "Technology": 0.1485467702, + "Art": 0.184471041, + "Ireland": 0.1895683557, + "Organisation": 0.3019199073, + "Digital": 0.1226770729, + "Community": 0.2070094794, + "Events": 0.1746111065, + "x": 14.5079565, + "y": -0.629168 + }, + "105": { + "speaker": "Paul", + "text": " But, so come here, I like, I mean, I know this sounds like a kind of silly thing to say, but it's really Ash and Paul who are kind of more familiar with your whole thing than I am. I know that sounds like a kind of silly thing to say when you're being like, oh, hi guys. But are you, you're all in Limerick, is it Limerick based? Pretty much, outside of Kayleen. Kayleen is from Waterford, but we would have all come across each other in Limerick. And I am currently living in Berlin now. We are kind of all a little bit in and out, but I guess we just through Limerick, we kind of all connected and me, Scott and Roshi worked a lot in Limerick doing our projects there. So it's a bit confusing, but I don't know. I don't really know how to say it, like, you know. Yeah, that's great. I'm just wondering if it's, like, location-based or that's just like... Yeah. Yeah, that just happens. I think we're limerick at heart, so that's maybe the cheesiest way I can put it to you without getting sick myself, like, you know. Yeah, yeah, yeah. If you all just reveal a tattoo at some point, it's fine. We actually do. There's actually some of us sitting here with an 061 tattoo, so... And it looks a little bit like a prison stamp.", + "sequence": 4, + "Technology": 0.0711382627, + "Art": 0.0091824438, + "Ireland": 0.1795510203, + "Organisation": -0.0556425266, + "Digital": 0.0258497894, + "Community": -0.0029368065, + "Events": -0.0196123384, + "x": -2.2908463, + "y": 4.138079 + }, + "106": { + "speaker": "conceptNULL", + "text": "Yeah, a small bit.", + "sequence": 5, + "Technology": 0.2504484057, + "Art": 0.2004081309, + "Ireland": 0.2365642041, + "Organisation": 0.2703081965, + "Digital": 0.210082978, + "Community": 0.2746633291, + "Events": 0.2094201595, + "x": 15.289422, + "y": 0.7948524 + }, + "107": { + "speaker": "Paul", + "text": "Were you in an old school prison where they still tattooed you? And I was like, no, actually, I just tattooed myself. Yeah, and now prison tattoos are just QR codes, actually. Really? Interesting. Yeah, they just check you on the way out, you know? Yeah, yeah. Not many mobiles in prison, so yeah. Yeah. That don't really work like that anymore. How's it going, Paul?", + "sequence": 6, + "Technology": 0.0952856839, + "Art": 0.0902603641, + "Ireland": 0.1014807224, + "Organisation": -0.0938990265, + "Digital": 0.0109238653, + "Community": -0.035041485, + "Events": -0.0402304344, + "x": -2.3923597, + "y": 5.303616 + }, + "108": { + "speaker": "conceptNULL", + "text": "All good, folks. How yous all doing?", + "sequence": 7, + "Technology": 0.1183175817, + "Art": 0.1037433222, + "Ireland": 0.1338981539, + "Organisation": 0.1139900833, + "Digital": 0.1462951303, + "Community": 0.3248049021, + "Events": 0.2649856806, + "x": 12.05442, + "y": -0.9979931 + }, + "109": { + "speaker": "Paul", + "text": "All right?", + "sequence": 8, + "Technology": 0.1539135128, + "Art": 0.2682009935, + "Ireland": 0.2261368483, + "Organisation": 0.3180603385, + "Digital": 0.1844813079, + "Community": 0.2711578608, + "Events": 0.2984077036, + "x": 16.190702, + "y": 0.13290405 + }, + "110": { + "speaker": "Aisling", + "text": " Yeah, good.", + "sequence": 9, + "Technology": 0.1809566319, + "Art": 0.2173746675, + "Ireland": 0.270001173, + "Organisation": 0.3921536207, + "Digital": 0.2301275283, + "Community": 0.4022478759, + "Events": 0.3031215668, + "x": 17.372677, + "y": 0.3076943 + }, + "111": { + "speaker": "Paul", + "text": "Thanks for talking to us. I'm Walt. I've been annoying. As I said, I've been annoying on the email and yeah, there's Kayleen, there's Scott and Roshin who were basically, yeah, we're trying to explain it. We were kind of limerick based, not so much anymore. Some of us, Roshin and Scott still mostly air and I'm in Berlin, but traveling back and forth a lot and Kayleen is in Waterford. Okay. But yeah, I mean from us, concept novel was kind of a limerick thing. So I guess through that we were kind of, yeah, bound through that. Oh, Ash is here. Woo! Maybe this is a silly question and I should know the answer already because I've been here a bit more, but are you all artists? Mostly artists, trying to be. Attempting it anyway, like, you know, giving it his best shot. Yeah, great. Yeah, I think this is one of the, this is actually one of the problems, um, with the, this is kind of one of the reasons we did the Constant Metal Newsletter, because we had such an annoyance with not really sometimes knowing ourselves what we were, like, and having this problem of, like, you know, definition, and especially externally as well, towards sometimes other people. I've been, like, like, even a project I was doing there, I was, like, working with Fidgetfee in, like, an aerial dance center, and they brought me in, and they're, like, literally the first I joined the meeting, and they were all dancers and aerialists, and they're, and then, like, they're, like, oh, we have, Ger here, our lighting designer, is going to help us with the lights. And we have Walter. And Walter does, what do you do, Walter? And I was like, I don't know. Lazy. Depends on who's asking. It depends on what you want from me. So after two weeks of R&D, we still didn't know what I really did. But I did something, so it was fine. I don't know if that's the imposter syndrome sometimes coming through. But maybe you guys have some experience with that, too. And maybe that will kind of show as well.", + "sequence": 10, + "Technology": 0.0970435366, + "Art": -0.0380035341, + "Ireland": 0.1445246935, + "Organisation": -0.0407690406, + "Digital": -0.0550765097, + "Community": -0.0736054108, + "Events": -0.080970183, + "x": -7.2426453, + "y": 3.2637012 + }, + "112": { + "speaker": "conceptNULL", + "text": " Yeah, I mean, I have no idea what I'm at or who I am or what I'm doing. It's been forever. And, you know, it is what it is. I hate that expression. It is what it is.", + "sequence": 11, + "Technology": 0.0930510238, + "Art": 0.0721358135, + "Ireland": 0.1708486229, + "Organisation": 0.0407164395, + "Digital": -0.0028012386, + "Community": 0.0660773516, + "Events": 0.0347504877, + "x": 1.8184232, + "y": 3.2720292 + }, + "113": { + "speaker": "Paul", + "text": "But yeah, it is what it is. Yeah. Maybe that's something, I don't know, inherent to like technological artworks or art that deals with lots of newer technologies, because they are like, you know, inherently", + "sequence": 12, + "Technology": 0.4582695961, + "Art": 0.2999589443, + "Ireland": 0.0377700813, + "Organisation": 0.0632027537, + "Digital": 0.1377278417, + "Community": 0.0639585257, + "Events": 0.0744087249, + "x": 7.4247956, + "y": -5.704541 + }, + "114": { + "speaker": "conceptNULL", + "text": " you know of undefined state so maybe that's also why sometimes you don't quite know where to place it like you know sure um also i don't know that you shouldn't need to place it like if you're if you're just interested in doing new things all the time then maybe maybe titles aren't necessary i don't know i guess it helps yeah and stuff but like sometimes it can be hindering to yes to say that you're one thing you know absolutely", + "sequence": 13, + "Technology": 0.1336357147, + "Art": 0.0675807744, + "Ireland": -0.0216873456, + "Organisation": -0.0174765587, + "Digital": -0.0091200387, + "Community": 0.0103394836, + "Events": 0.0449104086, + "x": 0.2953689, + "y": -3.3388505 + }, + "115": { + "speaker": "Paul", + "text": " And I think that's also something like with curiosity, which is a good thing that actors have, like most actors can be quite curious about the world. And that curiosity will take you in lots of different ways. And I'm pretty sure most of us here feel like doing projects. Sometimes we're like, I don't know why I'm doing this. And this has nothing to do with my field of expertise anymore. But here I am, like, working with bugs. Yeah, for sure. So yeah, thank you for actually all firstly coming here in this virtual space, of course. Yeah, I just wanted to say firstly, but with the interview side of this, so we're going to be screencapping this, I'm already screencapping it, but obviously whatever, I don't feel like you have to like be concise or talk in a certain way about anything. We're going to transcribe everything and work through it and basically write it all together and get that sent to you and you can like, okay, everything. So this is really just like, It's a meeting, you know, so don't worry too much about being concise or having to talk about it, like, you know, in a certain way. We haven't figured out how we'll do the transcription yet, but that's also our problem. So it also might take some time for us to do that.", + "sequence": 14, + "Technology": 0.2351983041, + "Art": 0.070754081, + "Ireland": 0.0291659087, + "Organisation": 0.005228065, + "Digital": 0.061834123, + "Community": 0.1062960848, + "Events": 0.0063407831, + "x": 4.061478, + "y": -3.914198 + }, + "116": { + "speaker": "conceptNULL", + "text": " That's, that's no problem. No problem for me anyway. Yeah. I know I was the one who was asking about the cameras set up and so on. So as a general rule, I don't like my face to be online for stuff. So I've stopped doing video and stuff. So that's my, I'm, I am that one. Uh, so that's fair enough. Yeah.", + "sequence": 15, + "Technology": 0.1476340592, + "Art": 0.0696398914, + "Ireland": 0.0256152507, + "Organisation": -0.0317488536, + "Digital": -0.0027578436, + "Community": 0.079206273, + "Events": 0.0253255945, + "x": 0.23603585, + "y": -2.6505947 + }, + "117": { + "speaker": "Paul", + "text": "How do we use my real face? So you're not an AI. I'm very happy about that. I was getting worried there. So yeah, it will all be transcribed and we'll just kind of, yeah, work through that and make it something that's readable for the news editor. It'd probably be like, I don't know, we haven't figured out yet, might be part of the news editor, might be its own publishing thing, if it's very long and has lots of interesting points, because I don't want to cut out too much as well. Because yeah, honestly, like we, like just a little bit backstory of also like, We started this newsletter thing. Constable L has been kind of doing its own thing for a while. Between me, Scott, and Roisin, we've been just trying to do new media, audiovisual events. They were quite hard to do, so they were quite spaced out in time. And after the last one, it was just such a big endeavor that we were like, we're going to pack this for a good long while, because we just need to get some space. It was amazing, it was great fun, but like just the logistic hurdles of like being both the curator and the technical manager and the events provider and space provider and all that stuff, it was just crazy. So we practiced for a while and then me and Kayleigh got talking I don't actually know what we're talking about. I think we were just kind of having a Zoom chat, and we were talking about basically that Denise McDonough from Culture Works, who was basically doing some stuff for the Arts Council, helping them devise the digital strategy. I don't know if you guys have seen that thing, but the digital strategy came out. This was like before, it was while it was still in kind of its last process of being worked on. and we were kind of at that time getting quite frustrated with the discipline side of things where we didn't really quite know how to label us and also like we felt like that in the Arts Council process it's hard to kind of say oh I'm a visual artist well that's not quite descriptive of what you're actually doing so Big old grievances there, we've written about it anyway. But basically, we were kind of thinking like, I was saying this to Kayleen that we had thought about like, you know, how to remedy this. One of the things was a newsletter. And then we were kind of thinking like, well, maybe there's someone in Ireland that has done this before. And then Kayleen had mentioned you guys dated. I was like, I actually had never heard of you, which I felt like a really bad disgrace because you guys have been around for so long. I was like, yeah, we tried to suss out, do you guys cover this newsletter side? We didn't really have a newsletter, so that's why we went off and did this. But that's the start of seeing your stuff. And I was like, fuck, this is really odd. I feel bad for not having known this sooner. So that's why I was like, you know what? Maybe a chat and getting to meet you guys was the best way to do this.", + "sequence": 16, + "Technology": 0.0035384446, + "Art": -0.0425687395, + "Ireland": -0.0045873104, + "Organisation": -0.0450770482, + "Digital": -0.1008016616, + "Community": -0.0046331212, + "Events": 0.0368828811, + "x": -8.300797, + "y": -1.2980546 + }, + "118": { + "speaker": "conceptNULL", + "text": " Can I, can I come in on that one? Is that all right? Yeah. Do we have to do the hand thing or whatever? We, we, in the latest tech cookbacks, we respect our promotional team. So that's why you haven't heard of us. I'm only joking. No, just first of all to say, yeah, I think it's deadly what you're doing. And it's so, so good. And it is so good to get that mailer. It's and I guess I've been doubling around this for ages and there was a need for it but I guess we'll probably get into it now just our time and what we're up to couldn't really do it but it's really it's just so I'm just like fair play to you I think it's brilliant and it's even really nice to be here chatting with you I know I'm kind of ahead here but what I know you just come over Dublin Limerick thing at the beginning, and we're called Deja, and obviously it's very Dublin-centric, but we're doing our utmost for it, not being Dublin-centric in any way. So, yeah, I mean, it's a conversation maybe for another day, but I mean, me on a personal level, anything I can do to help you is what yous are doing. Yeah, absolutely. I'm sorry to speak for yous as well. Yous can speak for yourself. Can we say the same thing? Yeah.", + "sequence": 17, + "Technology": 0.0792208761, + "Art": -0.0095981108, + "Ireland": 0.0663993135, + "Organisation": -0.0396473482, + "Digital": -0.0487301834, + "Community": 0.0550793782, + "Events": -0.0049446477, + "x": -4.0184555, + "y": -0.40077314 + }, + "119": { + "speaker": "Paul", + "text": " So yeah, cool. Yeah, but I also think there's a bit of strength as well with also keeping things in scope. So as you were saying, like you're a Dublin century, but you're not anti anything outside of Dublin. It's just sometimes having a scope like what you are doing and having that clear is also quite handy because that's also some of the cause of knowledge. Like now it's like, okay, we're writing. We didn't actually know how to tackle this problem of like new media art not being in Ireland until I think between us, we're like, oh, a newsletter. just write a newsletter, put open calls in it. It's not the best thing in the world, but it's a start. It's very simple, it's quite concise. And it's a start to something more than like, you know, and you can see where it comes from. So I think, I think rather than sitting around sometimes and pontificating about what you could do, maybe this, maybe that, like, you know, it's better just to do something like, you know, and get to meet cool people, like, you know, along the way. And that's kind of how it all kind of grows, you know? Sure.", + "sequence": 18, + "Technology": 0.1148663312, + "Art": 0.0766166225, + "Ireland": 0.1480251402, + "Organisation": -0.0407462716, + "Digital": 0.0235671028, + "Community": -0.0188616067, + "Events": 0.0125249578, + "x": -1.3422394, + "y": 4.628128 + }, + "120": { + "speaker": "conceptNULL", + "text": "Yeah. I think that's also how it develops, like, it kind of grows in a in a very natural way like if you're trying to do something really really big to have like a massive impact it often maybe that thing happens and you like pull it off but then it was so stressful that you don't do it for another year or you know like i think yeah that's something i've very much enjoyed since joining the lads like it's been nearly a year now with data and i feel like i just love that like somehow we just pull the events off, like we're all so busy but it's just committing to certain times and just being like this is an event all we need to do is just find a venue, find the speakers and you know kind of yeah smaller smaller actionable steps I think just more consistently is better than trying to do lots of things.", + "sequence": 19, + "Technology": 0.0929416865, + "Art": -0.0447727554, + "Ireland": 0.0392964333, + "Organisation": 0.0561955236, + "Digital": -0.0796722695, + "Community": 0.0504091941, + "Events": 0.0928222835, + "x": -4.1456227, + "y": -4.1129694 + }, + "121": { + "speaker": "Paul", + "text": "And I guess I can, okay, I'll come back to the start of the questions, but maybe we're going to do a little lovely nonlinear thing. But there is a question actually about basically, how do you organize data events? Like, do you have a process behind it? Has there always been this kind of rubric where you're like, this is all we ever do? Or is it kind of very, just DIY? So yeah, Maybe I can, I don't know, Paul, do you want to? No, no, Tom, that's on you. One thing that I think is worth saying at the start, because I did look at the questions a little bit, or a few of them, is, and you used the word, like, collective a lot, you know, which would be kind of a reasonable. I did not praise that one, yeah. But I suppose it's worth saying that, like, data is, it's just, it's been a lot of things over the years, and it's kind of really a very loose association of people who have an interest in art about, with technology. And it's been running for over 20 years and different people at different times have done kind of more or less of the labor of that. So that like people like Jonah Booker-Cohen, Nikki Gogan, Ben Doolan, Rachel Dwyer, Tim Redfern. At the moment, Ashley and Paul and I are the people who kind of do most of that labor. Only, I suppose, just because it's kind of, you know, the hand is spinning and it's landing on us at the moment. it is quite a loose thing and it's changed a lot in its form. And so we don't really have, I mean, to some extent, we don't really have codified ways of working. What we do have and what is collective is an interest in art about technology. And so we're quite, I wouldn't say it's totally ad hoc in the way we organize things at all. Like we, there's some consistency where we're doing them at the moment. Every month we have a structure, we have certain rules about trying to I suppose, represent things in a certain way. But we really don't have a very organized and kind of set identity because we ultimately don't, well, I don't know, maybe this is where the other guys might come in on this, but we don't really want to be like the owners of data. We just happen to be the people at the moment who are booking the venues. And we constantly are talking at events about like, well, who wants to propose a thing or who wants to do a thing? Sometimes people have no time for doing that. Other times they do and they suggest something or someone says, I'd like to present. And so we have people either coming to us saying, oh, I was at the data event or I heard about it. I'd like to do something. And equally, we spend our time sometimes thinking about it. But it is very fluid, I guess is worth saying.", + "sequence": 20, + "Technology": 0.1632272899, + "Art": 0.0441042408, + "Ireland": 0.0602897033, + "Organisation": 0.0406373292, + "Digital": 0.0913037658, + "Community": -0.0125012845, + "Events": 0.0825965479, + "x": 1.7957124, + "y": -0.58214736 + }, + "122": { + "speaker": "conceptNULL", + "text": " And I think each event kind of informs the next one as well. Like, I think, you know, if we do a full funny, like visually based event, like the next one, we were like, actually, we haven't really done something on sound. Why don't we do all sound stuff and just book a PA? And then there's like no projector, no anything. And it's a purely sound based. And then, you know, then we're like, okay, well, we've had it in NCAD a few times. And that's been like with an institution, which is also like amazing to have the space and stuff. But we were like, maybe we can move around the city and go to different places and like each one is just kind of like okay we did that and then yeah well I guess since since I've been part of it that's kind of the which is is cool because each one you learn something from and then you're you're like okay well we've covered a certain amount of ground with that and now how do we want to move on and stay open to loads of different like art forms and mediums and stuff", + "sequence": 21, + "Technology": -0.0104051828, + "Art": -0.0366583206, + "Ireland": 0.1041174605, + "Organisation": -0.0618989542, + "Digital": -0.102263853, + "Community": -0.0819249377, + "Events": 0.0309389066, + "x": -7.5100317, + "y": 0.81434876 + }, + "123": { + "speaker": "Paul", + "text": " But one thing I didn't say is that while, like I say, the labor currently of booking, which is like, as Ash said, booking a space, making sure there's a PA there, making a post there, like, you know, emailing, putting it up on social media, that's the labor of data. But really, most of the labor of data is people who are willing to talk about and share their work in public. And that's really important. So actually, the labor that we do is like facilitation rather than organization. We facilitate that. people come, they decide how they want to present their work, they decide, you know, really what they want to present, and we kind of hand that over to them. So actually, it's kind of incorrect of me to say that we're the labourers landing on us, because actually, that's not true. Fair. So would you say that's kind of your recipe for how it's been running so long, this kind of like, no plan is the best plan, you know, working on just going from event to event and kind of having it as a collect, like, sorry, collective is the wrong word, but a communal like ground for people to share work like more of a platform rather than as you said you don't deliver the content of data there is no content outside of what people bring like you know would you say that that is the kind of recipe for how it's been running for so long or is there maybe something beneath it all that again.", + "sequence": 22, + "Technology": 0.0721498281, + "Art": 0.043167755, + "Ireland": 0.0399400778, + "Organisation": -0.011130278, + "Digital": -0.1000796631, + "Community": 0.0558424443, + "Events": 0.0361945443, + "x": -3.6836727, + "y": -2.0039957 + }, + "124": { + "speaker": "conceptNULL", + "text": " Sorry, first of all, I think Tom kind of got it right, like there has been many different forms, so this current form, like the one that we're working on, is like in previous iterations it was, you know, it was being held on a regular basis in the Science Gallery, it was kind of like a different way of doing it, so It's never been the same, I guess, you know, it kind of comes and goes in different waves and cycles. I like even if you look back on it. Sorry, this is me nerding out over it over like a 20 year period. You know, it kind of started, I guess, kind of Celtic Tiger years. Then you have the recession and it's kept going after the recession, but it wound down kind of slowly, maturely. Then it was gone during the pandemic. So, you know, if you want to get into it, you can see different kind of societal things kind of framing it a bit as well. I don't know if that makes sense. Does that make sense?", + "sequence": 23, + "Technology": 0.2063950449, + "Art": -0.0079566753, + "Ireland": 0.0261195898, + "Organisation": -0.0568902865, + "Digital": 0.0557765253, + "Community": -0.0702795833, + "Events": -0.0525541604, + "x": -6.8712745, + "y": 5.5246935 + }, + "125": { + "speaker": "Paul", + "text": "Yeah, I get you. It's change, but it's environment basically. I think there's also something about that that's interesting is that at the time when that data started and it came after some other things as well, like media house and that that was quite an early time in what you might call new media art or, you know, technologies were much more open and open to both. And there was quite a crossover between people, artists in particular, and maybe people working with technology at a, at a, like making it level, you know, so it was a real crossover there. And you had people working in various kind of tech, like it was before even the term kind of tech was knocking around to the same extent. So there was a, I think there was a different social alliance there, you know, And now I think we exist at a time which, you know, we have, I suppose, what is called big tech, maybe, you know, we've got a lot of platforms that shape a huge aspect of our life. They tend to be closed platforms. The role of a kind of media artist is very changed in that context. So in Dublin, for example, we have the headquarters of, you know, Google, Facebook, all these companies. We have a huge amount of the economy of Ireland is driven by these things, but we don't have a strong technology critical, um, context, like a really strong one in the sense of like, for example, the universities, there's no, you know, like courses in like technology and society. There's no, you know, of course, there's lots of individual work and academics doing really great stuff. And so I'm not suggesting I'm an artist doing really great stuff around it.", + "sequence": 24, + "Technology": 0.3389029205, + "Art": 0.078685388, + "Ireland": 0.0063394718, + "Organisation": 0.0521632507, + "Digital": 0.104183048, + "Community": 0.141213119, + "Events": 0.1326716542, + "x": 7.4344473, + "y": -4.266719 + }, + "126": { + "speaker": "conceptNULL", + "text": "Yeah.", + "sequence": 25, + "Technology": 0.2798177004, + "Art": 0.267590493, + "Ireland": 0.264179945, + "Organisation": 0.4656565487, + "Digital": 0.2740884721, + "Community": 0.4323056936, + "Events": 0.3351562321, + "x": 18.153908, + "y": 1.320851 + }, + "127": { + "speaker": "Paul", + "text": "But that context now, I think, has shaped a little bit the way we think about data. And so one of the things we really think about is that all the events should be kind of free. And we try, since we've been kind of running it together, we've tried to make that the case. And I think because the project is so closed, it's harder for there to be a kind of a bedrock of people who are cracking it open. Certainly for me, one of the interests is trying to reproduce a community, not reproduce a particular community, but produce the context in which a community of technology-critical people can make work. I think in the past, you know, there's been loads of really good work that was funded by tech companies. And that was because it was in a different context now. But at the moment, we're a little bit, we'd be wary, let's say, of that and of being kind of connected with that in some way. Certainly I would. I imagine the others as well. So we want to make it as an outside space that maybe doesn't think exists hugely in the city. Does that make sense, sir? I think it does.", + "sequence": 26, + "Technology": 0.315740943, + "Art": 0.0738474578, + "Ireland": -0.0072528864, + "Organisation": 0.1957291663, + "Digital": 0.0564189255, + "Community": 0.2250987291, + "Events": 0.1828210503, + "x": 10.166331, + "y": -4.234038 + }, + "128": { + "speaker": "conceptNULL", + "text": "Yeah, absolutely. Yeah, I mean, I totally agree with everything Tom said. So like, you know, there needs to be this critical counterpoint to this kind of dominant narrative that permeates through has permeated through kind of Ireland over the last two decades. I'm not saying data is it, it's just like one part of it. It shouldn't just be it, you know. And as we all know, there's plenty of artists and academics who are doing kind of critical work in that space. It's just over the last few years, my experience is it's felt kind of fragmented again because of stuff like post-recession kind of pandemic and stuff but like it's great things are popping up not just data obviously you guys and you know there's plenty of other stuff going on as well so yeah so yeah it's cool", + "sequence": 27, + "Technology": 0.0797020346, + "Art": -0.0562076792, + "Ireland": 0.0089654382, + "Organisation": -0.1138406992, + "Digital": -0.0854954869, + "Community": -0.06913203, + "Events": -0.0782910734, + "x": -9.643759, + "y": 2.679666 + }, + "129": { + "speaker": "Paul", + "text": " I think one very interesting thing I'm quite interested in is this idea of third space, which I don't know if you guys know, is like, I can't remember from, I think it was an architect who kind of put this philosophy down, which is basically like your first space is your home, your second space is your work, and the third space is kind of like it's somehow a public space where everyone can access. Usually these spaces are, again, public and low cost barrier. So it should be free to go there or almost free to go there, very cheap. And these spaces, he says, are like, or they kind of say, is basically a place where ideas of society can flow. A barrister might meet a worker, like, you know, or, you know, artists will talk to politicians. It's a place, and there's no, there is law, there's order, but there's no classes. So in these, in these spaces, people can talk freely and be, are open to criticism and be criticized. And there's no one there to basically censor anyone. And I think this is something that kind of lacks in Ireland a little bit. I think the pub was the closest we ever get to a third space. And I think that's why pubs are so important in Ireland, because they have this, you know, yeah, the stratification of society, I guess, turns sideways a little bit at least. But I think that's something I definitely would love to see in Ireland, as you were saying, like having a space where big data companies and people who work in these data companies might be in contact with artists and academics and a space where people can talk freely about these things without maybe criticism.", + "sequence": 28, + "Technology": 0.0766743869, + "Art": -0.0137213431, + "Ireland": -0.0479860455, + "Organisation": -0.0629578009, + "Digital": -0.1211640388, + "Community": -0.0713328645, + "Events": -0.0579777099, + "x": -10.787082, + "y": 2.2236953 + }, + "130": { + "speaker": "conceptNULL", + "text": "On the back of the mention of the pub from the last event, I just kind of had this realisation that a lot of the most interesting conversations that come off the back of data are in the pub afterwards. because we all like a lot of the time after every event we would just choose like the closest pub and say we're heading over if anyone wants to join and there's actually usually quite a big take up on that and it's lovely because it's like we I think because people have been at the event then there's like this kind of like remnants of criticality but then they have the freedom of just being in the pub and That's it. People are chatting about actually very interesting, sometimes tech related, sometimes not, sometimes art related, sometimes not, but I find it's very interesting to kind of get people in a space and have people present ideas and new ways of thinking, but then to kind of I think it's a very important part for the events to hold that space for a little while longer and allow the conversation to happen. Because I think for the speakers as well, because everything is done free and we don't get paid and we don't charge and the speakers don't get paid, it's important that they get something out of it themselves. And I think that's why there's so much freedom in terms of like what they can present. It's always just like what is most helpful for them. But I think the discussion is a lot of the time where kind of the richness is. Yeah, I've had that a lot so to be honest. Just to kind of piggyback on that, just a question of support and obviously money and people aren't getting paid and kind of Tom touched on the context of labour. I think that's something that we do our best to try and kind of facilitate this platform. Let's just really just kind of general like emails like come along, this is informal, don't stress, you know, we're all BSV, you know, you don't have to spend loads of time on this, we'll take whatever you have, and, you know, supportive, critical, like if needs be in it, but in a kind of like, you know, I don't know what the word, like critical but sound. Yeah, slightly informal. Yeah, informal and supportive, you know. So that's the kind of space I think that we're, I'm going to say, I think we're pretty good at creating.", + "sequence": 29, + "Technology": -0.0433107242, + "Art": -0.0415007174, + "Ireland": -0.0374554731, + "Organisation": -0.0276835449, + "Digital": -0.1165461987, + "Community": 0.0846315175, + "Events": 0.0723546743, + "x": -7.634373, + "y": -3.5644486 + }, + "131": { + "speaker": "Paul", + "text": " I mean, you've got a lot of experience at this point. What we're saying, though, is, you know, so this idea of like a third space or like a public sphere in which this kind of conversation can happen is, of course, this ideal that we would really love to have. But I think it actually touched on earlier on about us moving around the city. I think we're also aware that actually spaces aren't neutral at all. And so the pub is a space for some people that they're quite happy to have a chat in. We had a couple of events in NCAD because they were provided with a space, which was great, but obviously an institution that a lot of people aren't comfortable with. And I mean, if you look at, say, the institution of technology and technology-based art, historically, it has a very, you know, like non-diverse bunch of people working in it. And the art as an institution itself is also like that. So quite aware of I suppose one, the failings of art, our own failings of running data, not that it's on us specifically to address that on our own, but that, you know, Like, it's very hard to have events. One, that someone will give you a space for free that has a projector, has a thing. It's very hard to find spaces that will reach beyond those kind of limitations. And arguably, there is no space that isn't limited in some way in terms of access to certain people or certain groups. And so I think it's really great. This third space idea is, I mean, it is a really great idea. And this idea of like a free public sphere is, I think, in the world at the moment, like a really important thing. But it's something that unfortunately, I think we will never really get to either. I think it's more of an ideological thinking of like how you can think of how they thought of spaces, how you can divide up and categorize certain spaces kind of like, you know, when they're purposing. And I think there's a lot of conversation and books written about third space being online and how open forums and the new third space is realistically like, you know, so. Even doing this, like, you know, this could be seen or like, you know, like even a newsletter with a comment section, you could call that a third space. So it's, I guess it's more of an exceptional kind of thought process. But I might get back to the questions because I feel like we could talk about this for an hour.", + "sequence": 30, + "Technology": -0.0007819735, + "Art": -0.0167045649, + "Ireland": -0.0584527403, + "Organisation": -0.000455897, + "Digital": -0.1184439659, + "Community": 0.0781031549, + "Events": 0.0304106176, + "x": -7.925726, + "y": -4.082867 + }, + "132": { + "speaker": "Aisling", + "text": "So, let me see. Can I actually just quickly ask what format do the events, is it a consistent format in terms of like, is it presentations? Is it more kind of show and tell? Is it a mix mash? Has it changed over the years? What's the kind of story with that kind of stuff?", + "sequence": 31, + "Technology": 0.1154226363, + "Art": 0.0505468734, + "Ireland": 0.037162032, + "Organisation": 0.077987127, + "Digital": 0.0735651851, + "Community": 0.0023547336, + "Events": 0.2833886743, + "x": 4.292091, + "y": 0.31191784 + }, + "133": { + "speaker": "conceptNULL", + "text": " I would say it's definitely changed though, given that it's been going for for 20 years, you know, so I mean, I like I, I wasn't at the first ones I kind of came to data. around my first ones would have been around 2010 as in I start going like seeing what they were and there were there was different things then there was like workshops as well when Ben Gowlon was was running it and Rachel O'Dwyer and so there was lots of different formats I have seen and it's on the website there's obviously a lot of kind of archival footage as well which was just like people kind of turning up and with their work, like if that was an interactive piece, and just having fun with it. Tom, you probably came in earlier than 2010, were you?", + "sequence": 32, + "Technology": 0.1900036037, + "Art": -0.0428354219, + "Ireland": 0.1334884763, + "Organisation": -0.0274407212, + "Digital": 0.0815691054, + "Community": -0.0004831832, + "Events": 0.038051866, + "x": -2.2550645, + "y": 2.6557643 + }, + "134": { + "speaker": "Paul", + "text": "Kind of somewhere similar. Maybe I think 2009 was the first one I was involved in. Yeah. Or it could be 2008, I'm not sure. But yeah, I mean, just to kind of reiterate what Paul said, there were, and at one point also again, there was funding maybe as part of it to organize and pay people to do workshops. there's been a really big, I mean one thing that like it did start in the pub, going back to what Ashley was saying, it started in the pub and it was like an open projector, that was the kind of format that it started with, so not quite but just like screen based and so that's something that's new, the last one was a student open projector, so it was for undergraduate students in colleges around the country, I mean it was mostly Dublin based but actually a Limerick student or artist as well and So that's something we still do is open projectors as Ashley also mentioned earlier on, we did one that was just fine by so no screens and I think that was probably the only data ever that didn't have a screen. So, we did that in partnership with your and three people just presented sound work. So there is often a presentation-y type format, but we, and I think that's because when people see a screen, they take a PowerPoint and that sort of thing. We are certainly always encouraging it to be something other than that, and whether that's a screening or something like a workshop interactive, like I'm actually presenting it now next month, and it'll hopefully be a workshop discussion rather than a presentation. So I haven't really worked that yet. But you know what I mean? So we're certainly trying for it to be more open. But of course, when people are pressed for time, one of the easier things to do is to say, here's the work. I'm thinking this about it. What do you think about it? And it's a really good, like, there's a reason presentations exist. They're actually a way of communicating things, even if they aren't. Of course, yeah. Yeah, you know, so.", + "sequence": 33, + "Technology": -0.0219321772, + "Art": 0.0516736209, + "Ireland": 0.060557764, + "Organisation": 0.162450701, + "Digital": -0.1133933812, + "Community": 0.1086513251, + "Events": 0.1392899156, + "x": -6.349522, + "y": -7.2391043 + }, + "135": { + "speaker": "conceptNULL", + "text": "Just to finish, Aisling, no, I was going to throw it over to you, Aisling. No, go ahead. I was just going to say, obviously, I'm way more recent to it, but I do find that the format of allowing people do what they want kind of opens it up as well, because we're not saying you have to do a presentation. So even with the sound event that we did, someone did a live radio show and we had a live chat box going. sometimes that openness when it's really just like let this be like the most beneficial thing for you possible like that should be your main thing for you to get something out of this it means that it it opens up the format to be to be new things, which I think is really exciting. And it also allows the community of presenters and stuff actually have quite a strong influence in data and what it is and what the events are. So I think it's nice. And I think we enjoy allowing people kind of decide what they're comfortable with and having that. Yeah. Yeah, exactly that. I don't know about you guys, but I've had to do presentations before and it can be stressful and it takes time. So it's just nice to go do what you want. We'll make it work and we'll work with you. Yeah. No problem.", + "sequence": 34, + "Technology": 0.0301229768, + "Art": -0.0299336743, + "Ireland": 0.0393990092, + "Organisation": -0.0825184509, + "Digital": -0.1034852564, + "Community": -0.0093505681, + "Events": 0.0564398281, + "x": -7.8410635, + "y": -0.3134022 + } +} diff --git a/static/assets/data/data/comp_data_P1.json b/static/assets/data/data/comp_data_P1.json new file mode 100644 index 0000000..be3711e --- /dev/null +++ b/static/assets/data/data/comp_data_P1.json @@ -0,0 +1,982 @@ +{ + "0": { + "speaker": "conceptNULL", + "text": " I always hated presentations, because I feel like I always got way too nervous and then just talked for way too long, which kind of happens here as well, as you can see. But I get nervous when I talk. But one of the questions I think might lead well for this is, in your processes of basically making these events, what are the biggest difficulties that come your way, and how do you kind of get over them? Is it kind of like a structural thing you do? Yeah, that's really just a question.", + "sequence": 2, + "Technology": 0.0415959843, + "Art": -0.0149132358, + "Ireland": -0.0676915869, + "Organisation": 0.1369727403, + "Digital": -0.1290723383, + "Community": 0.0132778306, + "Events": 0.1025209799, + "x": -8.580907, + "y": -6.124051 + }, + "1": { + "speaker": "Tom", + "text": " roping other people in, you know, like, I mean, a lot of times, like, kind of a joke, but like, we definitely, like, we, you know, all of us, we're, I suppose, working in this area, we all know people in this area, but we only know so many people. And we think you know for it to be more interesting it would be much more interesting if that widened out beyond us into whole other sets of people doing whole other sets of things and while we really like that to happen the thing is everyone's really busy in the world you know this pressure like rent people can't afford to live for their work all this sort of stuff so uh While people are always like, this is great, we'd really love to get involved, the practicalities are quite difficult. And we also haven't always been graded because we are ourselves quite busy. And we tried to institute the structure where we'd meet once a week, or sorry, we'd meet the following week after an event. And especially recently, we've just been kind of up the walls. And so we haven't always managed to do that. And when you I've been involved in a number of organizations, and I think it's really important to have quite clear structures because it allows people to get involved. And as we said at the start, we don't really have them because we haven't quite. So it's kind of on us to maybe also find ways to make it more open to other people to get involved. But that also is a big job, and it takes a lot of labor to set up those systems. And also, the risk, because you don't know if you do them, but anyone wants to be involved anyway. So it's a funny one. I don't know.", + "sequence": 3, + "Technology": 0.0198384617, + "Art": 0.0060142493, + "Ireland": -0.0464651659, + "Organisation": -0.00542389, + "Digital": -0.1506244689, + "Community": 0.1301781833, + "Events": 0.0646481961, + "x": -7.202645, + "y": -4.764115 + }, + "2": { + "speaker": "conceptNULL", + "text": " Do I head hush?", + "sequence": 4, + "Technology": 0.0560337752, + "Art": 0.041655086, + "Ireland": 0.1189015433, + "Organisation": -0.0188594144, + "Digital": 0.0736947507, + "Community": 0.0576674193, + "Events": 0.026060842, + "x": -0.41552874, + "y": 3.0291958 + }, + "3": { + "speaker": "Aisling", + "text": "No, you go, Falco.", + "sequence": 5, + "Technology": 0.1060419753, + "Art": 0.08917851, + "Ireland": 0.276741147, + "Organisation": 0.0167829767, + "Digital": 0.0366919376, + "Community": 0.0716870725, + "Events": 0.1389241219, + "x": 4.755789, + "y": 4.511425 + }, + "4": { + "speaker": "conceptNULL", + "text": " I was trying to find, I hadn't written notes on this.", + "sequence": 6, + "Technology": 0.0525202937, + "Art": 0.0597619116, + "Ireland": 0.1841824055, + "Organisation": 0.0153159965, + "Digital": 0.0292911865, + "Community": 0.0534745045, + "Events": 0.1138431579, + "x": 2.9560292, + "y": 3.8656237 + }, + "5": { + "speaker": "Paul", + "text": "Yeah, I mean, I guess what Tom said, but I had just kind of written money and time, and it's kind of crass and like, you know, talk about money and time and quantify it, you know, but I guess time more so than money. Like Tom said, we're all busy. We're not making money out of this. It's not about money, but we've got to make money elsewhere. Thanks.", + "sequence": 7, + "Technology": -0.1168898121, + "Art": -0.0339839682, + "Ireland": -0.1332846433, + "Organisation": -0.0504594222, + "Digital": -0.1407146752, + "Community": -0.0902514532, + "Events": -0.1207195967, + "x": -12.849203, + "y": -0.18915209 + }, + "6": { + "speaker": "conceptNULL", + "text": "I don't know what you can find here. The crassus belt would have came in, like, you know.", + "sequence": 8, + "Technology": 0.0178131573, + "Art": 0.0475087911, + "Ireland": 0.1391175985, + "Organisation": 0.0095177609, + "Digital": 0.0781993419, + "Community": 0.0315025821, + "Events": 0.0473324805, + "x": 0.20089366, + "y": 3.0300672 + }, + "7": { + "speaker": "Paul", + "text": "So, yeah. And also, you know, it's like ensuring a second... No, yeah, I mean, ensuring access and not always kind of... Trying not to always take the easy way, but at the same time, trying not to make it too difficult. You know, I think it's kind of important as well. Time is a big, big, big factor. Even as Tom said, you know, like it would be nice to do things a certain way. And like there is, we've tried to put in kind of structures, but again, it's kind of hard to maintain them, like meet the following week, but one of us might have to do something. And again, that's something that usually is there.", + "sequence": 9, + "Technology": 0.0105584087, + "Art": -0.0847603679, + "Ireland": -0.07731428, + "Organisation": 0.1524886638, + "Digital": -0.1192948222, + "Community": -0.0237281285, + "Events": -0.0184380189, + "x": -9.798663, + "y": -5.685506 + }, + "8": { + "speaker": "conceptNULL", + "text": " As you said earlier, I think that's also maybe the thing that's kept you going for so long, that over time, the needs or the possibilities of the members change, and therefore data changes and keeps itself going that way. I think that's also a good thing, to be honest.", + "sequence": 10, + "Technology": 0.1784094572, + "Art": 0.0422811545, + "Ireland": 0.0277226791, + "Organisation": 0.1386207342, + "Digital": 0.0948825181, + "Community": 0.1990260482, + "Events": 0.1637868136, + "x": 11.144796, + "y": -3.3375642 + }, + "9": { + "speaker": "Aisling", + "text": "And I wonder also if maybe this could be a hot take, if the lack of structure is potentially why it lasts so long because I think like if there was such a if there was such a strong like structure and then you don't you don't like adhere to that and then it begins to kind of fall apart and then you feel like you're not kind of up to speed but I feel like even if we miss an event we're still just like or we miss a a talk like every like after the the event like our meeting we still kind of stick with like okay that that fell through but like we're going to keep going and we're going to plan for the next event and you know for this one we're planning to do one at the end of the month and then I think we are still doing one at the end of the month, I shouldn't have gotten into this.", + "sequence": 11, + "Technology": -0.0839504302, + "Art": -0.0968198776, + "Ireland": -0.0136202499, + "Organisation": 0.1255734116, + "Digital": -0.2256757915, + "Community": -0.0142062604, + "Events": 0.073444888, + "x": -10.429002, + "y": -4.998892 + }, + "10": { + "speaker": "conceptNULL", + "text": "I love the hot take though, you're right, and it is the kind of space, the disorganization", + "sequence": 12, + "Technology": 0.0777099282, + "Art": 0.0611422658, + "Ireland": 0.0115954047, + "Organisation": 0.0569533482, + "Digital": -0.110423401, + "Community": 0.0056139487, + "Events": 0.0207064953, + "x": -3.872421, + "y": -2.639733 + }, + "11": { + "speaker": "Paul", + "text": " Okay, maybe disorganization, maybe lack of commitment to organization due to time also is good because we all know like it's like we're kind of the three of us are like in touch, we've got like a WhatsApp group, Discord and email. So different messages are kind of pinging off about different things, more or less all the time, but then you know someone won't answer for a while and that's because that person's like obviously busy like that could be me and that that's fine or they might pick up a different trend and stuff so it's a little bit chaotic but that's you know that's good as well so i'm i'm with ash on the hot take there definitely yeah i think we definitely", + "sequence": 13, + "Technology": -0.0261055119, + "Art": -0.0370677225, + "Ireland": -0.0110555151, + "Organisation": -0.1093355715, + "Digital": -0.1893326044, + "Community": -0.0770493597, + "Events": -0.0722745806, + "x": -11.498349, + "y": -0.4016193 + }, + "12": { + "speaker": "Tom", + "text": " Well done. I know Paul and I are both, like, I'm not sure if you are into Critical Art Ensemble, you know, and they wrote a lot about, like, digital resistance and resistance to, like, nomadic power, which is this thing of being, like, not having a structure because if you have a structure, ultimately you're kind of going to be defeated by whatever neoliberalism and the forces and power and so on. And so like they've all this theory about disability to just kind of recombine all the time and just pop up regardless of what happens. So we can pretend we had totally like theorized this over the years.", + "sequence": 14, + "Technology": -0.0081527159, + "Art": 0.0242494717, + "Ireland": -0.0013273302, + "Organisation": -0.0373520032, + "Digital": -0.073822841, + "Community": -0.1172466576, + "Events": -0.0619581342, + "x": -10.957805, + "y": 1.0386072 + }, + "13": { + "speaker": "Paul", + "text": "Yeah, by any media necessary. By any WhatsApp Discord channel necessary.", + "sequence": 15, + "Technology": 0.1676934063, + "Art": 0.120802775, + "Ireland": 0.0753270462, + "Organisation": -0.0146850534, + "Digital": 0.184404701, + "Community": 0.1563051939, + "Events": 0.0806205273, + "x": 7.4271894, + "y": -1.1288115 + }, + "14": { + "speaker": "conceptNULL", + "text": "Yeah, one goes down, you have the other two like.", + "sequence": 16, + "Technology": 0.0279477406, + "Art": 0.0090855379, + "Ireland": 0.1719368994, + "Organisation": 0.1079989374, + "Digital": 0.0936128199, + "Community": 0.0399963781, + "Events": 0.1668020338, + "x": 4.539073, + "y": 2.2762976 + }, + "15": { + "speaker": "Aisling", + "text": " That kind of idea that data never dies. I think one of you said that to me pretty soon after I joined you. You were like, data never dies. It just went to sleep for a while. And the kind of idea that even if there's some form of lack of engagement, it's because there's no solid structure and it's not a space that we're renting that we need to continuously pay for and upkeep, it's like, there's actually always something to pick back up because it's just an idea at the end of the day.", + "sequence": 17, + "Technology": 0.0475997664, + "Art": 0.016848091, + "Ireland": 0.1028159857, + "Organisation": -0.0508093238, + "Digital": -0.0483692065, + "Community": -0.0481552593, + "Events": 0.0173090138, + "x": -6.2378697, + "y": 1.158635 + }, + "16": { + "speaker": "Paul", + "text": "Even that kind of drifting off, and I think it might be in one of the questions later on, but you know, so Jonah and Nikki set it up 20 years ago, Tim, Rachel, Ben, I think Tom mentioned them, kind of carrying it in after that as well, and other people we're not mentioning, but, you know, we can kind of go with those. Like, we're kind of all still in some way, shape or form in touch with them in some way. So, without getting too much into it, Tom, I know myself knew, and Rachel were emailing the other day about something. Ben, Aisling, I know maybe for the summer, you're going to be like over there in that kind of world. Jonah's in touch with me about kind of web site related stuff. I like, they haven't been around here for years, but like, they still, those people in the past still care about it. And we're still like in touch with them. So, you know, if you look at it, it's kind of quiet, but like, yeah. So what it's like, we're all still chatting away.", + "sequence": 18, + "Technology": 0.0367595926, + "Art": -0.1542481482, + "Ireland": 0.0794157833, + "Organisation": -0.091669865, + "Digital": -0.0913265198, + "Community": -0.0404306054, + "Events": -0.0744722188, + "x": -8.542198, + "y": 2.0854943 + }, + "17": { + "speaker": "Tom", + "text": "I mean, I think it goes back to that thing at the very start of, Right. Whether, you know, a collective or whatever, but we do, it's all a bunch of people who are interested in the same thing. And so that, you know, broadly speaking, if you look back over like your work, it tends that, you know, whenever you look back at it, you're like, Oh, I've been doing the same thing forever. So people tend to be interested in it. Their interest tends to stick around for a while. So we did the data 20 event in October last year, which was the 20th anniversary of data. And of course, a lot of the same people who'd been at the first one were there because there's still interest in technology and they're still interested in how it impacts in the world. And they're also making art about it, you know. So I think that's one of the reasons it persists.", + "sequence": 19, + "Technology": 0.0777643323, + "Art": -0.0206213053, + "Ireland": 0.0710924193, + "Organisation": 0.0994318575, + "Digital": 0.0627220422, + "Community": 0.0697718933, + "Events": 0.0076868022, + "x": -0.0086771, + "y": 1.4574904 + }, + "18": { + "speaker": "Paul", + "text": "Yeah. And there was people there who were possibly not born. Yeah. Data was on. How cool is that? I think my mom's the first one.", + "sequence": 20, + "Technology": 0.2900774479, + "Art": 0.0590181388, + "Ireland": 0.1426964253, + "Organisation": -0.0790828764, + "Digital": 0.145046562, + "Community": 0.1154695749, + "Events": 0.1147556603, + "x": 6.3702087, + "y": -2.6190917 + }, + "19": { + "speaker": "Aisling", + "text": "Yeah.", + "sequence": 21, + "Technology": 0.2798177004, + "Art": 0.267590493, + "Ireland": 0.264179945, + "Organisation": 0.4656565487, + "Digital": 0.2740884721, + "Community": 0.4323056936, + "Events": 0.3351562321, + "x": 18.153908, + "y": 1.320851 + }, + "20": { + "speaker": "conceptNULL", + "text": "Today's me too.", + "sequence": 22, + "Technology": 0.2658236921, + "Art": 0.1770493388, + "Ireland": 0.310798943, + "Organisation": 0.2921786904, + "Digital": 0.2313743681, + "Community": 0.2231067121, + "Events": 0.1357066035, + "x": 14.737614, + "y": 1.3098454 + }, + "21": { + "speaker": "Aisling", + "text": " Okay.", + "sequence": 23, + "Technology": 0.2676827312, + "Art": 0.2452247441, + "Ireland": 0.2158894688, + "Organisation": 0.4329919219, + "Digital": 0.2245706022, + "Community": 0.3400434852, + "Events": 0.3220648766, + "x": 17.055216, + "y": 1.4848617 + }, + "22": { + "speaker": "conceptNULL", + "text": "No, I was too.", + "sequence": 24, + "Technology": 0.1786195338, + "Art": 0.1250375807, + "Ireland": 0.2926146388, + "Organisation": 0.1548645943, + "Digital": 0.216555655, + "Community": 0.1816014349, + "Events": 0.1528212875, + "x": 13.275076, + "y": 1.1202672 + }, + "23": { + "speaker": "Paul", + "text": "So that's, you know, that's, so that's, that's cool. And again, the 20, I know there, I think there's a question about, uh, highlights. I don't know, but like, that was definitely one. Cause we got like a lot of artists came together, gave up their time, gave up their labor presented. Um, and we had like, like Jonah on a call from New York, Nikki was in Spain, Ben was in France. So they all kind of tuned in at one point. Then we had like, you know, kind of new artists who had never maybe presented or shown their work in public before. Sorry, I'm picking up us here. It was a really nice kind of like, for me anyway, it was like, ah yeah, okay, this is why we're doing it, you know.", + "sequence": 25, + "Technology": 0.0486630648, + "Art": 0.0279255155, + "Ireland": 0.0807128251, + "Organisation": -0.0036019301, + "Digital": 0.0505030826, + "Community": 0.0459861159, + "Events": -0.0928061306, + "x": -4.0518575, + "y": 3.4952278 + }, + "24": { + "speaker": "Aisling", + "text": " Yeah, I think that was also a really important one for me to have experienced or I felt very privileged to have been able to experience it because I was so new to it at that point. But I remember one of them saying, I think it was either Nikki or Ben, they said something that completely stuck with me the whole time, that they were like, focus on the people in the room. And I think in, I guess whether it's to do with my age and my generation, there's such an idea of just growth and like, more people you want to like sell out events and you want everybody to know you and like it's all very clout based and it was such a refreshing thing to hear and from from someone who started something 20 years ago that I was now part of you know it was like actually even if there's a load of empty seats like there's people here interested and that kind of engagement is so much more invaluable so much more valuable than you know having a packed out room for the sake of it I think yeah that was like a really important message.", + "sequence": 26, + "Technology": 0.1034350172, + "Art": -0.0403258502, + "Ireland": 0.0106713083, + "Organisation": 0.0709014535, + "Digital": -0.085343495, + "Community": 0.1685914695, + "Events": 0.0716652125, + "x": -3.298498, + "y": -6.560659 + }, + "25": { + "speaker": "Paul", + "text": "Was that Ben when he was saying and like when he was doing it it was like when he and he's Ben would have done like a lot of kind of workshops and stuff you know trying to promote it but I think the way he put it was you know at first he was always kind of you're worried about how many people are going to turn up yeah and then he kind of learned that stop worrying about how many people turn up and just as ash says focus on the people who have turned up make make them your make them your world but uh really wise words you know", + "sequence": 27, + "Technology": -0.0065235449, + "Art": 0.0003651436, + "Ireland": -0.0299346708, + "Organisation": -0.0021288972, + "Digital": -0.2577835917, + "Community": 0.002510434, + "Events": -0.0625007451, + "x": -11.378324, + "y": -1.9598967 + }, + "26": { + "speaker": "conceptNULL", + "text": " Well, especially if you have all these people who have shown active, you know, like engagement in what you've done, as Ash was saying, it's like, you know, like having even one person be active is better than a thousand, a set out show and everyone's on their phone. It's like, you don't have the one person actually engaging and caring about what you do. And I think that's the really nice thing to see. Like, you know, community is really the most important thing. And I think it seems to be quite at the heart of it as well. I might throw in another question here, because it might be a little bit related to what you've just said as well. How have you found, if at all, that the landscape of digital art and technology have changed over, I would say, over the course of data? But I mean, like, you know, maybe everyone's obviously got a different time frame here. But if you have noticed a difference, and especially these people coming back and in, like, what would you kind of feel that has changed most, really? I can throw it over to Tom and Ash.", + "sequence": 28, + "Technology": 0.0778600052, + "Art": -0.0212756377, + "Ireland": 0.0228841212, + "Organisation": -0.010734912, + "Digital": -0.0730546266, + "Community": 0.2198007703, + "Events": 0.0318261683, + "x": -3.712961, + "y": -7.372546 + }, + "27": { + "speaker": "Tom", + "text": "Well, I mean, I kind of touched on it a bit earlier, but, you know, this thing around technology and its accessibility. So even now, we're making work around things like AI. But it's really at a kind of a input output level. You know, I know that's in the nature of AI a little bit, but it's a bit of a black box and it's much harder. A lot of technologies nowadays, well, they're not really based so much around, say, algorithms, they're much more based on things like data. And that's not something, if you open source it, that you can actually reproduce. So as an artist, you can't necessarily reproduce a training set. So I think there, I think there's something in technology over the last 20 years that specifically, I guess, with kind of technology in terms of like digital code-based technology, it's where they've become a bit less accessible. And I think that's also led to like, I think a lot about social media, which social media art, there was a certain amount of it, maybe kind of, you know, 10 years ago might've been at the peak of it or a little bit more recently than that. And now I teach in a college and very few of my students make work by social media, even though it's probably one of the biggest shaping forces in their life. And I think that's really kind of interesting that it's become almost invisible in a way.", + "sequence": 29, + "Technology": 0.3711454272, + "Art": 0.0705944821, + "Ireland": 0.0986962616, + "Organisation": 0.071710676, + "Digital": 0.1117110625, + "Community": 0.0515113883, + "Events": 0.0727614015, + "x": 6.5542226, + "y": -4.6796875 + }, + "28": { + "speaker": "conceptNULL", + "text": " What do you mean social media? Do you mean they post pictures or like they make artwork and post it on their social media? Are their works concerned with the topic of social media?", + "sequence": 30, + "Technology": 0.1292795092, + "Art": 0.4306221008, + "Ireland": -0.0452899486, + "Organisation": 0.0548152216, + "Digital": 0.2533343434, + "Community": 0.1886698604, + "Events": 0.2013403326, + "x": 9.681247, + "y": -2.0745218 + }, + "29": { + "speaker": "Tom", + "text": "Yeah, I mean, there's not so much work concerned with like critical over critiquing social media as I would expect it to be. And I don't, and I also don't mean this as a criticism of the students. It's more about the technology and it's, it's kind of disappearance, you know? And I think, I mean, maybe, you know, because people talk about infrastructure that, um, so an infrastructure is only something you know notice when it breaks and maybe things like social media have become infrastructural so that we don't see them anymore but I also think that that's a really interesting thing about technology and it really makes me dangerous. I know Paul will probably come on in just a minute because there's a whole pile of artwork that's actually, its focus is making infrastructure visible because actually it's a really shaping force in our lives and whether that's like Paul's working on infrastructures, but obviously there's, you know, whole histories of like in STS and stuff like that, looking at the unequal provision of services and services shape our possibilities and so on. So I don't know, that's one thing I think for sure that's happened. I also think as technology has really like up in terms of its capacity there became of course a focus on things like what you might call like finish so everything's like 4k now 8k you know and we're hopefully doing an event actually with this festival in canada and ireland called the small file media festival that kind of questions that idea of like more more more and i think that's something that's also it used to be the case that people were really like, you could only make a video that was like this many pixels. So you always went to as big as you could be, but now the technology is so capable, but also we've realized the kind of environmental cost of that are, I mean, other material costs of that. So people are beginning to say, oh yeah, maybe this kind of limitless horizon idea is no longer valid.", + "sequence": 31, + "Technology": 0.1506432593, + "Art": -0.0413450561, + "Ireland": -0.0806576982, + "Organisation": -0.1692917645, + "Digital": -0.0512232706, + "Community": -0.0450435579, + "Events": 0.0065543763, + "x": -10.848571, + "y": 4.939463 + }, + "30": { + "speaker": "conceptNULL", + "text": "Big time, yeah. Yeah, I think it also like what you're saying with the AI thing, I think also technological art suffers the novelty aspect, I think, much more than other art forms where it's like as soon as something new comes out, like every tech artist seems to have to have a piece coming out with it, even though it's like, why? You know, you have to try and jump onto the next thing always to stay relevant. But that's often also in the social media aspect as well. Yeah. Paul, anything to say?", + "sequence": 32, + "Technology": 0.2913823128, + "Art": 0.084133938, + "Ireland": -0.0609072149, + "Organisation": 0.0124704689, + "Digital": 0.0266917683, + "Community": 0.0321976878, + "Events": 0.0474276915, + "x": 3.1380155, + "y": -5.2062187 + }, + "31": { + "speaker": "Paul", + "text": " After you, Ash, I think you were going to come in there.", + "sequence": 33, + "Technology": 0.1283815056, + "Art": 0.0626056194, + "Ireland": 0.256072849, + "Organisation": -0.0149059948, + "Digital": 0.0384206101, + "Community": 0.0250820667, + "Events": 0.1278952807, + "x": 4.426768, + "y": 5.250013 + }, + "32": { + "speaker": "Aisling", + "text": "No, no, I was just...", + "sequence": 34, + "Technology": 0.1398984641, + "Art": 0.1702082455, + "Ireland": 0.1865070313, + "Organisation": 0.1090983003, + "Digital": 0.0613277107, + "Community": 0.1339837015, + "Events": 0.1385108829, + "x": 7.8582835, + "y": 1.7137591 + }, + "33": { + "speaker": "Paul", + "text": " So just in terms of the landscape of new media, digital art in Ireland, was that the original question? Yeah, absolutely. Yeah.", + "sequence": 35, + "Technology": 0.2713345289, + "Art": 0.3142337203, + "Ireland": 0.2894238234, + "Organisation": -0.0336532481, + "Digital": 0.259770155, + "Community": 0.0991421789, + "Events": 0.1300453246, + "x": 9.367558, + "y": 2.819691 + }, + "34": { + "speaker": "conceptNULL", + "text": "And how it's changed for you at all?", + "sequence": 36, + "Technology": 0.2131805718, + "Art": 0.0999245495, + "Ireland": 0.2115531117, + "Organisation": 0.0504866056, + "Digital": 0.1818054467, + "Community": 0.1771051884, + "Events": 0.2582301497, + "x": 10.557694, + "y": 0.7017671 + }, + "35": { + "speaker": "Paul", + "text": "I mean, I guess unavoidably so. And we kind of touched on it in different ways already. I mean, it's a 20 year span. When it began, it was in the beginning of the Celtic Tiger. And as kind of Tom alluded to, you know, there was a lot more kind of a lot more good vibes about technology, you know, but we've had like, to be real, like we've had Edward Snowden's revelations, although not too much has changed and so on. So the honeymoon period has worn off. You can even see that, like in relation to Ireland over the last few years, you know, you kind of have this dominant Silicon Docks narrative. Now there's kind of greater kind of criticality, more accessible to the public. We're seeing it specifically in language, like around data centers. Obviously, corporate tax rate, you know, we had it with Apple and so on and so forth, and it's changing and they're just hot off the presses. And on the subject of infrastructure, I was down in Grand Canal Dock last night with a group and Meta have actually, they've gone. Weird, they're not in offices anymore. They've gone somewhere else, like, but they're no longer in Grand Canal Dock. So, you know, shit's changed. Excuse my language, but language is all right. Things are changing. And obviously, you know, artwork is changing to reflect that, I would guess. Maybe Tom and Ashley, I'm not, I'm in academia, but not really kind of student focused so much at the moment. Although, you know, obviously, you know, we saw the last, event like Aoife's work, you know, on social media, on Twitter and so on. So, yeah, sorry, I'm kind of rambling on here. Yeah, perfect.", + "sequence": 37, + "Technology": 0.149878785, + "Art": -0.0513828471, + "Ireland": 0.1004690826, + "Organisation": -0.0801849365, + "Digital": 0.1002532914, + "Community": -0.0208189785, + "Events": -0.0890083238, + "x": -5.463541, + "y": 5.401068 + }, + "36": { + "speaker": "Aisling", + "text": "I think maybe in this sense of, like, I obviously, like I said, I'm with Dato only about a year, but I guess from my, oh, Paul's gone.", + "sequence": 38, + "Technology": 0.1988317817, + "Art": 0.1149772853, + "Ireland": 0.1801891625, + "Organisation": -0.1247201711, + "Digital": 0.1150932014, + "Community": -0.006567657, + "Events": 0.0116876643, + "x": -0.6340038, + "y": 6.349406 + }, + "37": { + "speaker": "Tom", + "text": "Are you away from him or?", + "sequence": 39, + "Technology": 0.1541781127, + "Art": 0.1616753936, + "Ireland": 0.1116891503, + "Organisation": -0.0159907155, + "Digital": 0.2252048552, + "Community": 0.136399731, + "Events": 0.1622900516, + "x": 8.375064, + "y": -0.44190797 + }, + "38": { + "speaker": "UNKNOWN_SPEAKER", + "text": " Amazing.", + "sequence": 40, + "Technology": 0.3555665612, + "Art": 0.2982919812, + "Ireland": 0.2666603625, + "Organisation": 0.2872280478, + "Digital": 0.2776271999, + "Community": 0.3117781281, + "Events": 0.4140433371, + "x": 17.543728, + "y": 2.655701 + }, + "39": { + "speaker": "Tom", + "text": " And we always need new members in data, you know, they keep getting killed.", + "sequence": 41, + "Technology": 0.1380765736, + "Art": 0.0316500142, + "Ireland": 0.0243819244, + "Organisation": -0.037270546, + "Digital": 0.093870081, + "Community": 0.0743172467, + "Events": 0.0818672925, + "x": 3.3673651, + "y": -2.1659873 + }, + "40": { + "speaker": "conceptNULL", + "text": "Yeah, this is it. I just keep getting hits, but I don't know, like, sorry.", + "sequence": 42, + "Technology": 0.0953068957, + "Art": 0.0846838951, + "Ireland": 0.1461725831, + "Organisation": 0.0622096993, + "Digital": -0.0130862705, + "Community": 0.1106051058, + "Events": 0.1383832991, + "x": 3.4920516, + "y": 2.7911732 + }, + "41": { + "speaker": "Aisling", + "text": "I guess just like the idea of actually growing up with technology as opposed to it being a new thing that enters your life. Like, I can't know what it would be like for, to not have the internet, you know, and I feel like maybe as data has progressed, like, technology is becoming more and more like like we said like ingrained in people's lives so kind of touching on what you said I guess Tom of like with your students maybe not making work about it is maybe because that kind of invisibility aspect of it, it's so ingrained that they can't really imagine their life without it. And I guess when you can't imagine that, the need for questioning maybe feels even less. I think the opposite. I think if you feel like you can't do without something, there's probably need to question it even more. Yeah, it's probably a generational thing. I think the fact that, yeah, data has been around so long, I think, um, it's probably almost accidentally like mapping how people are reacting to, to development technology.", + "sequence": 43, + "Technology": 0.3077362478, + "Art": -0.0116020245, + "Ireland": -0.0172153711, + "Organisation": -0.0341287479, + "Digital": 0.0727612749, + "Community": 0.0238857828, + "Events": 0.0020487113, + "x": 3.898569, + "y": -5.5068564 + }, + "42": { + "speaker": "conceptNULL", + "text": "Yeah.", + "sequence": 44, + "Technology": 0.2798177004, + "Art": 0.267590493, + "Ireland": 0.264179945, + "Organisation": 0.4656565487, + "Digital": 0.2740884721, + "Community": 0.4323056936, + "Events": 0.3351562321, + "x": 18.153908, + "y": 1.320851 + }, + "43": { + "speaker": "Tom", + "text": "I mean, at a practical level, almost any of the media formats that work would have been presented with data one are no longer existing, you know? Yeah.", + "sequence": 45, + "Technology": 0.2367161065, + "Art": 0.1312916428, + "Ireland": 0.1383283436, + "Organisation": 0.0005392544, + "Digital": 0.2366013229, + "Community": 0.140742451, + "Events": 0.1477493793, + "x": 8.9072075, + "y": 0.08552996 + }, + "44": { + "speaker": "conceptNULL", + "text": "I think I saw in one of the pictures that a PS2 icon or something. And I was just like, man, I wanted to see a video. I just want to know what the hell was done with that. Even though it's just a camera, but it's just like such a relic of a past thing that you can see. And like, for people who remember, they'll remember it.", + "sequence": 46, + "Technology": 0.1510233879, + "Art": 0.0460289679, + "Ireland": -0.0792539269, + "Organisation": -0.0560083836, + "Digital": 0.0923430994, + "Community": -0.0605378002, + "Events": 0.1123228744, + "x": 1.7623355, + "y": -4.00422 + }, + "45": { + "speaker": "Tom", + "text": "And maybe younger people look at it and be like, what the fuck is that? A little bit young. If you add up to really, I don't know if it's old or young, but one of the very first videos of Data and someone making a drum machine on a Game Boy.", + "sequence": 47, + "Technology": 0.2151622325, + "Art": -0.0524834879, + "Ireland": -0.0006950786, + "Organisation": -0.1162670255, + "Digital": 0.0749197453, + "Community": -0.0758163631, + "Events": -0.0673014075, + "x": -6.7649913, + "y": 6.1131377 + }, + "46": { + "speaker": "conceptNULL", + "text": " that's that's a vintage art by now like you know people people like we've gotten build dolls on it and build like you know synthesizers out them like and shit class okay let's pull out another question if anyone wants to help me pull it out absolutely although", + "sequence": 48, + "Technology": 0.1280140728, + "Art": 0.0158729907, + "Ireland": -0.0680998415, + "Organisation": -0.0764683634, + "Digital": -0.0152166504, + "Community": -0.0634984225, + "Events": -0.0972251147, + "x": -10.293972, + "y": 3.964844 + }, + "47": { + "speaker": "Aisling", + "text": " What's data going to be next month?", + "sequence": 49, + "Technology": 0.1767930984, + "Art": 0.1416885406, + "Ireland": 0.0607128851, + "Organisation": 0.046301946, + "Digital": 0.257338196, + "Community": 0.1539206505, + "Events": 0.2164798826, + "x": 9.577702, + "y": -0.6451263 + }, + "48": { + "speaker": "Tom", + "text": "I mean, people having this conversation would be great, I think, you know, and that's not because I'm lazy, but it's like, ultimately, as it's been touched upon, the idea that it would just continually change would be good.", + "sequence": 50, + "Technology": -0.0204928964, + "Art": -0.0391997248, + "Ireland": 0.0354682207, + "Organisation": 0.0042332169, + "Digital": -0.0485101715, + "Community": 0.0739278048, + "Events": 0.0443246439, + "x": -6.2536964, + "y": -3.006455 + }, + "49": { + "speaker": "Paul", + "text": " Yeah, other people involved, still going, you know, because there's always going to be a need for it. I mean, that's like, maybe other things will come along, you know, and that's fine as well. Like, you know, I think we were saying it last year around the 28th anniversary, like if Deja does go back asleep, like that's fine, you know, there's no shame in that or whatever, like something else comes along, that's great. One thing I did when I was looking at that question, and this is maybe not someone's data, I think it's just like, oh, my own little wish list. I'd love to see, like I have a dream that there will be like a physical place, studio, gallery for this kind of work, an independent one. don't need a shitload of funding from pick your big tech company want to get in on the action something small so you know i'm not talking about dublin it could be limerick it could be mayo i don't care it would just be great to see it happen somewhere for people to go but somewhere for people internationally to go like the agencies and stuff. So I think you, there's another, and I'm going to, sorry, I'm going off on one here. I know there was another question about inspiration and other organizations. So looking, and obviously there's, as I said at the beginning, there's lots of brilliant stuff going on here as well. Oh shit. Has everyone just turned their camera off? No, we're all still here, don't worry. I was like, oh man, they don't like what I'm saying. Like, there's places like Fergus Field in London, there's like N\u00eemes in Cyprus and Limassol, obviously bigger, kind of slightly bigger ones like Transmedia, like, well, that's a festival as such, but, you know, like the influencers in Barcelona, like, I think that's kind of dormant now. Like, there's all of these other great spaces. and events in Europe that are very much, you know, kind of community orientated, if I could say that. So we have that, you have that, not just somewhere data, but you guys think that everyone else is doing really great stuff, but it would be just nice to have a Hey, that's, oh, I'm coming up to here. Well, okay. Obviously we're all going to go and meet here and, you know, be nice. Hey, look, I'm pitching to the choir, maybe here, a gallery studio space for people working in media, digital media, arts, et cetera, et cetera.", + "sequence": 51, + "Technology": 0.0185112264, + "Art": -0.0524331816, + "Ireland": 0.073639676, + "Organisation": -0.1026906967, + "Digital": -0.1063778698, + "Community": -0.039320834, + "Events": 0.0182411503, + "x": -8.154863, + "y": 0.6175567 + }, + "50": { + "speaker": "conceptNULL", + "text": "That is my fucking map. You couldn't have said it better. Innovation lab or whatever. Incubation lab as they like to call it. Yeah, no I think this is also one of the problems with constant low that in the end why we shelved a lot of the event kind of side foot was it like because it just was so hard to find a space to even do anything in which and all the spaces were ill fit or needed lots of work and were expensive or had their clauses or didn't have insurance and in the end, it just kind of demeans, not demeans, but just breaks you down so much that you're just like, I can't, I can't keep doing, you know, can't keep doing this like in a consistent level. And as you've kind of shown consistency in whatever timeframe it is, is kind of the key to anything kind of standing on its own two legs. And I think definitely a space, a media space, whether that be in Dublin or wherever in the country, it would be absolutely amazing.", + "sequence": 52, + "Technology": -0.0746586025, + "Art": -0.0019416288, + "Ireland": -0.0455278493, + "Organisation": -0.0840799063, + "Digital": -0.1288158596, + "Community": -0.0920977145, + "Events": -0.0561002456, + "x": -11.911842, + "y": 0.2337793 + }, + "51": { + "speaker": "Paul", + "text": " Maybe a big monorail around the whole country to connect us to it?", + "sequence": 53, + "Technology": 0.080361858, + "Art": 0.1329458654, + "Ireland": -0.0324952304, + "Organisation": 0.213199079, + "Digital": 0.1294657141, + "Community": 0.1692872047, + "Events": 0.061405994, + "x": 12.117555, + "y": -4.37463 + }, + "52": { + "speaker": "Aisling", + "text": "So you said Meta were out. Do they know what they're doing with the offices?", + "sequence": 54, + "Technology": 0.1011168137, + "Art": 0.1274570078, + "Ireland": -0.034935873, + "Organisation": 0.0348453596, + "Digital": 0.0768957064, + "Community": 0.034224838, + "Events": 0.054662846, + "x": 1.8941096, + "y": -2.630803 + }, + "53": { + "speaker": "conceptNULL", + "text": "Yeah, actually, yeah. Occupy the building formerly known as Meta. Yeah, yeah. Just slap a derelict notice light straight away on it.", + "sequence": 55, + "Technology": 0.1294448674, + "Art": 0.0944697857, + "Ireland": 0.1819471419, + "Organisation": 0.114275977, + "Digital": 0.0095281601, + "Community": 0.0399985164, + "Events": 0.0517119989, + "x": 2.3166137, + "y": 2.3905282 + }, + "54": { + "speaker": "Paul", + "text": " Running like usual shit like security guard. I was like, where's the new place? He's like, well, you have to look online. He's like, can I come in? He's like, no.", + "sequence": 56, + "Technology": 0.0777767673, + "Art": 0.0055543943, + "Ireland": -0.029926084, + "Organisation": -0.0398809128, + "Digital": -0.0287393332, + "Community": -0.0853029191, + "Events": -0.0875127912, + "x": -10.468377, + "y": 3.1195278 + }, + "55": { + "speaker": "conceptNULL", + "text": "Don't open the app. You tried though. You tried. There you go. OK. Any questions from anyone that they feel? that they've read that they feel like answering as well, because there is still a lot of questions, but I feel like a lot of them have been touched on at this point, so there mightn't be too much need to ask some of them, I guess. There was one, I suppose, I was more kind of a little bit interested was, do you have any things that were crazy or wild that happened at any particular presentation or a fond memory or anything where you're like, fuck, that was crazy, or it was just like, I don't know, particularly memorable in any kind of way where you were like, Yeah, like, I don't know. Yeah, that's a good one. I wanted to know. Any juicy stories anyone booking?", + "sequence": 57, + "Technology": 0.1369611174, + "Art": 0.0814848095, + "Ireland": 0.0216420982, + "Organisation": -0.0695264563, + "Digital": -0.0386752822, + "Community": 0.0642645732, + "Events": 0.124920778, + "x": -0.71532166, + "y": -2.0725336 + }, + "56": { + "speaker": "Paul", + "text": "I have to say I've been pretty good at data events because I just tend to be wrecked after them or something. The first one, the reboot and A4 sounds. There's a story, but I ain't telling it. A lot of it. How was that in person? Nothing bad. It was the points and the post points part. It was really good fun. Yeah. I don't know. I'll turn it over to Ash.", + "sequence": 58, + "Technology": 0.100439705, + "Art": 0.028291354, + "Ireland": 0.0863581449, + "Organisation": -0.0436743014, + "Digital": -0.0279713105, + "Community": 0.0319302902, + "Events": 0.1159951836, + "x": -0.9651897, + "y": -0.5808797 + }, + "57": { + "speaker": "Aisling", + "text": "Come on, Tom. Any juicy gossip?", + "sequence": 59, + "Technology": 0.1926791668, + "Art": 0.0625333637, + "Ireland": 0.0112874182, + "Organisation": -0.0349868089, + "Digital": 0.1161818206, + "Community": 0.1037125736, + "Events": 0.0868525729, + "x": 4.4809065, + "y": -2.5383754 + }, + "58": { + "speaker": "Tom", + "text": "What about that time that Hirsch Daryl and Pierre Huey were doing Poppers and the Jacks? Other than that, I can't remember anything, really.", + "sequence": 60, + "Technology": 0.0824231356, + "Art": 0.0872747079, + "Ireland": 0.1051096171, + "Organisation": -0.0881358683, + "Digital": 0.0578710809, + "Community": -0.031726677, + "Events": 0.0790343136, + "x": -0.449625, + "y": 4.8332872 + }, + "59": { + "speaker": "conceptNULL", + "text": " I'm so smashed I can't remember the event.", + "sequence": 61, + "Technology": 0.1309801042, + "Art": 0.1378673017, + "Ireland": 0.1376490891, + "Organisation": 0.0954017714, + "Digital": 0.1197566763, + "Community": 0.1539358497, + "Events": 0.3888296783, + "x": 11.418129, + "y": 1.2075881 + }, + "60": { + "speaker": "Paul", + "text": "Ash, what about you?", + "sequence": 62, + "Technology": 0.1146477312, + "Art": 0.082764402, + "Ireland": 0.115177691, + "Organisation": -0.0544062182, + "Digital": 0.1423431188, + "Community": 0.1381556094, + "Events": 0.1457612813, + "x": 6.695937, + "y": -0.20215023 + }, + "61": { + "speaker": "Aisling", + "text": "I don't know. I don't think we've had two crazy events, have we, since I've joined?", + "sequence": 63, + "Technology": 0.0852425694, + "Art": -0.0646851957, + "Ireland": 0.1262159795, + "Organisation": -0.0062548006, + "Digital": -0.0172476918, + "Community": 0.0520334542, + "Events": 0.1355265379, + "x": -1.4334855, + "y": 0.31949866 + }, + "62": { + "speaker": "Paul", + "text": " No, but I think it's, yeah, me, not me, but like I said, I haven't really been out too much because I just, yeah, wrecked by the time we get there. They're usually on a Thursday evening. So I guess work on a Friday morning is usually, I sound so dull. Next question, please. Nobody's joking.", + "sequence": 64, + "Technology": 0.0010999329, + "Art": -0.0367012694, + "Ireland": 0.0635681748, + "Organisation": 0.1045937091, + "Digital": -0.1665164232, + "Community": -0.0751032755, + "Events": -0.0796835423, + "x": -11.5369425, + "y": -3.2152762 + }, + "63": { + "speaker": "Tom", + "text": "I do Friday morning, so it's like, well, you've got an option. I do cramps Friday morning, but it's like, no way I'm going to do it after drinking.", + "sequence": 65, + "Technology": -0.0715246499, + "Art": -0.0290833525, + "Ireland": 0.0297728926, + "Organisation": 0.0335513093, + "Digital": -0.0543327108, + "Community": -0.0390888825, + "Events": -0.0401275977, + "x": -9.7245655, + "y": -0.80345523 + }, + "64": { + "speaker": "Paul", + "text": "Yeah, we're going to have to open up our session again.", + "sequence": 66, + "Technology": 0.0764770359, + "Art": 0.0797454342, + "Ireland": 0.0965738669, + "Organisation": 0.3597000241, + "Digital": 0.0499910414, + "Community": 0.143071413, + "Events": 0.1978592128, + "x": 14.395142, + "y": -2.2512136 + }, + "65": { + "speaker": "Aisling", + "text": " Yeah, I think we need to reassess. Like when the craziest thing is driving a table home to Tom's in the snow. I think we need to do something.", + "sequence": 67, + "Technology": 0.0190062039, + "Art": 0.0161101762, + "Ireland": 0.0006978996, + "Organisation": -0.0027898978, + "Digital": -0.0699140579, + "Community": -0.0352349803, + "Events": -0.0917340815, + "x": -10.200551, + "y": 0.88504446 + }, + "66": { + "speaker": "Paul", + "text": " The crazy, or the opposite, the uncrazy, because we had an event down at the Electric Picnic and it was on the Sunday, like the worst time, but like nice to be there, but it was at like five o'clock on the Sunday So, like I went down on this Sunday and it was over at six and I think I was on the train in Strad Valley or wherever by like quarter to seven. I was just like, get me the hell out of here. That's how lame I am.", + "sequence": 68, + "Technology": 0.0084991939, + "Art": -0.0002004765, + "Ireland": 0.0176069718, + "Organisation": -0.0186302923, + "Digital": -0.0125064068, + "Community": 0.0653342828, + "Events": 0.0667021275, + "x": -5.528774, + "y": -2.7500474 + }, + "67": { + "speaker": "conceptNULL", + "text": "You were also like talking in print, okay.", + "sequence": 69, + "Technology": 0.0517399758, + "Art": 0.0351460353, + "Ireland": 0.0511397794, + "Organisation": 0.0532013513, + "Digital": 0.0243427865, + "Community": 0.0690242648, + "Events": 0.1599621922, + "x": 3.1844406, + "y": 0.5216458 + }, + "68": { + "speaker": "Aisling", + "text": "No, just when you mentioned it, like we were there chatting about like AI and you know all the ethics and everything in it and from the background there's just like like there was just the the spill from the other tent which is completely like there was yeah it was I was very grateful for the few people that were deciding to be at our talk about AI at five o'clock on Sunday I'd like to make an exception", + "sequence": 70, + "Technology": -0.0703718439, + "Art": -0.0889716893, + "Ireland": -0.0819084346, + "Organisation": -0.064448826, + "Digital": -0.1677710116, + "Community": 0.0629580319, + "Events": -0.02875988, + "x": -9.608776, + "y": -2.8553367 + }, + "69": { + "speaker": "conceptNULL", + "text": " You can see one person at the front just completely panned out.", + "sequence": 71, + "Technology": 0.1560747772, + "Art": 0.0970608369, + "Ireland": 0.033200331, + "Organisation": 0.0438271128, + "Digital": 0.0396155529, + "Community": 0.0518235527, + "Events": 0.0828519017, + "x": 2.0010345, + "y": -1.8103894 + } +} \ No newline at end of file diff --git a/static/assets/data/data/comp_data_P2.json b/static/assets/data/data/comp_data_P2.json new file mode 100644 index 0000000..13f03c3 --- /dev/null +++ b/static/assets/data/data/comp_data_P2.json @@ -0,0 +1,926 @@ +{ + "70": { + "speaker": "Aisling", + "text": "Oh yeah, some people were like, they were just absolute stragglers who wanted to sit down for a while. No more than they bargained for. Class.", + "sequence": 72, + "Technology": -0.1220484078, + "Art": 0.0519647002, + "Ireland": 0.0435543172, + "Organisation": -0.0625110865, + "Digital": -0.0593193993, + "Community": 0.0376594961, + "Events": -0.0042805318, + "x": -7.0600023, + "y": -1.6032693 + }, + "71": { + "speaker": "conceptNULL", + "text": " Where would you love to do it? This is actually just from, this wasn't written down. If you could have one place to do a data event, and it was anywhere in Ireland, where would you do it? Good question. I had that one on Tapburner, like, you know, do you want to write that one down, like a hook?", + "sequence": 73, + "Technology": 0.1550737917, + "Art": 0.1002990305, + "Ireland": 0.2797958851, + "Organisation": -0.0469782688, + "Digital": 0.0319193937, + "Community": 0.0420073159, + "Events": 0.1831197441, + "x": 5.5027485, + "y": 5.182532 + }, + "72": { + "speaker": "Tom", + "text": "We could use it for our upcoming data event in the complex. There you go. It would be in the complex gallery in October. My favorite building was knocked down to make way for a Google building, so it was the old Bowling's Mill, and now it's the new Google Apartments. So maybe doing something with one of those apartments would be kind of cool.", + "sequence": 74, + "Technology": 0.2232721746, + "Art": 0.1641711593, + "Ireland": 0.0494637452, + "Organisation": 0.0808515549, + "Digital": 0.1303915679, + "Community": 0.1385353953, + "Events": 0.1001276597, + "x": 8.181175, + "y": -2.5248132 + }, + "73": { + "speaker": "Paul", + "text": "Yeah, that'd be amazing. Yeah, like maybe Valencia Island. you know, where the... Yeah, it would be nice. But also, and I know we've talked about it, I'm going to say Moor Street because it's where we know, it's where I know, but like phone repair shops are of big interest and it would be really nice to do a data event within the context of repair culture or something like that. We have kind of mentioned that on one of our many chats, platforms, whatever. Sorry, Ash, over to you.", + "sequence": 75, + "Technology": 0.1674370915, + "Art": 0.0618523099, + "Ireland": -0.0105948979, + "Organisation": 0.0550721586, + "Digital": -0.0477576889, + "Community": 0.1122504696, + "Events": 0.0739857256, + "x": -1.0024674, + "y": -5.1136184 + }, + "74": { + "speaker": "Aisling", + "text": "No, I was just back in the islands thing, just like not, you know, in a building, but just, I don't know, big audio walk tour in the middle of nowhere, somewhere in nature would be nice.", + "sequence": 76, + "Technology": 0.0581802391, + "Art": 0.0640764236, + "Ireland": 0.1700389236, + "Organisation": -0.0467775315, + "Digital": -0.0332324542, + "Community": 0.1016450375, + "Events": 0.0876181796, + "x": 2.1143217, + "y": 4.7104464 + }, + "75": { + "speaker": "Tom", + "text": "We're at a place in Colorado, is it Colorado? Wisconsin, where they're, you know, the place with the no electronic signals? Okay. It's kind of nice to do something there.", + "sequence": 77, + "Technology": 0.0628995746, + "Art": 0.0495181754, + "Ireland": 0.0585073568, + "Organisation": -0.0462561175, + "Digital": 0.0106730834, + "Community": 0.0707378387, + "Events": 0.0229896009, + "x": -2.8041816, + "y": -0.17871359 + }, + "76": { + "speaker": "Paul", + "text": "And you can come out to the other side. Running, you have to go that far to find those situations.", + "sequence": 78, + "Technology": 0.1540652215, + "Art": 0.0919264331, + "Ireland": 0.1562890112, + "Organisation": 0.1434711218, + "Digital": 0.1415187865, + "Community": 0.1350248605, + "Events": 0.2343844324, + "x": 11.47592, + "y": 0.1384782 + }, + "77": { + "speaker": "Tom", + "text": "Yeah. Yeah, Ballycroy and Mayo is a similar spot. Yeah.", + "sequence": 79, + "Technology": 0.0308422539, + "Art": 0.0534070916, + "Ireland": 0.2139565647, + "Organisation": 0.2473538369, + "Digital": 0.0027028266, + "Community": 0.1258111, + "Events": 0.1327510178, + "x": 14.532128, + "y": -3.1641135 + }, + "78": { + "speaker": "conceptNULL", + "text": "If I walk down to my field, man, I'll have that like, you know. That works as well if you want to come here and do it. Yo. All right. I feel like we should probably wrap it up because we still have to transcribe all this and as much as I'm having all this conversation. It might be a good time to wrap it up. But maybe we can have another conversation at some point anyway. And we can talk maybe about some sort of events or something maybe we could do together. Maybe some sort of collaborative thing. I think I'd enjoy that.", + "sequence": 80, + "Technology": 0.0185805149, + "Art": -0.0422833562, + "Ireland": -0.0019574021, + "Organisation": 0.0427509621, + "Digital": -0.0608809143, + "Community": 0.0492794663, + "Events": 0.126662761, + "x": -5.407543, + "y": -4.268926 + }, + "79": { + "speaker": "Paul", + "text": "Yeah. I think that would be really, really, really good. And then also, just again, I know we're up here. We're kind of Dublin-centric. But if anyone just comes on your radar who you think might like the opportunity to present, it could be a good time to finish with them. If it's not going to be an impressor, we will make it. It might take us a bit of whatever, but we'll make it happen. You guys, whatever you're doing in your own practice, or even if you want to come along and just present what it is you're doing now at the moment, we'll make it work.", + "sequence": 81, + "Technology": 0.1207714155, + "Art": 0.0669942722, + "Ireland": 0.0947911888, + "Organisation": 0.0920387134, + "Digital": 0.0457230359, + "Community": -0.018134255, + "Events": 0.0473377556, + "x": 1.4687567, + "y": 0.7860516 + }, + "80": { + "speaker": "conceptNULL", + "text": "Absolutely. We'd love to do that. We'd love to do that because I think I think something I definitely would, like, I feel like I'm gathering knowledge that I'd like to talk about, and also talking to you is really interesting, is like about, yeah, community building, you know, actually collective building. I don't know if that's the right word, but it's like how to actually tie people together who are all doing the same thing, you know, and especially in the time of the internet when it's seemingly so easy, but sometimes it can be so easy to also fall disconnected with things. Yeah.", + "sequence": 82, + "Technology": 0.1138495132, + "Art": -0.0093062483, + "Ireland": 0.0189237073, + "Organisation": 0.100193575, + "Digital": -0.0398513451, + "Community": 0.2115151733, + "Events": 0.0891289711, + "x": -2.7378263, + "y": -6.948479 + }, + "81": { + "speaker": "Tom", + "text": "So this might be totally, obviously quite short notice in some ways, but tomorrow, I know, but on the 1st of June, the data event is actually about like community building technologies. So it's, currently there are two speakers, which is me and John Finnan from Dublin Digital Radio. And so we're talking about like technologies to help to maintain or like produce like infrastructural technologies to help to produce some sort of community. So that would be one that actually, if one of you was interested, I mean, the one thing that we would say is that we won't really have a panel of all male presenters. So, yeah, that's, I mean, there might be another group presenting as well, but we tend to try and keep things quite balanced. In fact, we tend to try and balance things in the opposite direction. This would probably be, the most well on one panel because you know technology art has had a particularly male context for a long time and so yeah definitely yeah.", + "sequence": 83, + "Technology": 0.2554141879, + "Art": -0.1316922605, + "Ireland": 0.0739280209, + "Organisation": -0.0411982909, + "Digital": -0.0166218877, + "Community": -0.0212112851, + "Events": -0.0076150354, + "x": -8.102731, + "y": 6.2909155 + }, + "82": { + "speaker": "conceptNULL", + "text": "I'm also going to be in Berlin the 1st of June. I could Skype in but I don't know if you guys ever do a Skype in presentation. I think it's not a very good one.", + "sequence": 84, + "Technology": 0.1675563306, + "Art": -0.0252006594, + "Ireland": 0.0490498841, + "Organisation": 0.0094171558, + "Digital": -0.0311206896, + "Community": -0.0625530332, + "Events": -0.0510735624, + "x": -8.022642, + "y": 4.6314588 + }, + "83": { + "speaker": "Tom", + "text": "I think we'd like to keep it in person but if I don't know if anybody else is interested. Since we're talking specifically about that community building technology, you can just be like, going back to what we talked about, it's not about like, where's the super polished presentation? It's like, Here's what we've been doing with concept null. We're not really sure where we're going with it, or we are sure, or whatever. And we kind of want to tease it out, because what I'm going to be talking about is this idea for a listing site. And basically, so it's kind of similar, right? And I'm talking about the structure of it. I want to do a workshop about how kind of decentralized listings could work. So it would also, then, of course, be really good to have some of the after discussion since it's the year.", + "sequence": 85, + "Technology": 0.2068860084, + "Art": 0.0256706234, + "Ireland": -0.094320491, + "Organisation": -0.0274016764, + "Digital": -0.0702403039, + "Community": 0.0325928815, + "Events": 0.0524595082, + "x": 0.39177582, + "y": -4.957529 + }, + "84": { + "speaker": "conceptNULL", + "text": "Cool, yeah. Yeah, yeah. So what's the decentralized listing of like web pages or like of actual physical spaces?", + "sequence": 86, + "Technology": 0.2151434124, + "Art": 0.1942465752, + "Ireland": 0.0708830357, + "Organisation": 0.0214069746, + "Digital": 0.1399711967, + "Community": 0.1345408559, + "Events": 0.209859997, + "x": 8.747507, + "y": -1.3653961 + }, + "85": { + "speaker": "Tom", + "text": "Yeah, so just like stuff that's happening. So again, moving away from finding out about stuff on social media. But having a site that's an infrastructure that people, different people can use. So for example, Concept Null events can all be on it and you can find them if you're looking at Concept Null, but the local Badminton club could also be using it and their events would be on it. And if you wanted to see both, you'd see both. And if you only wanted to see Concept Null, you'd only see that.", + "sequence": 87, + "Technology": 0.1000205129, + "Art": 0.001793731, + "Ireland": -0.0602570884, + "Organisation": -0.0997958332, + "Digital": -0.0092524653, + "Community": 0.08296749, + "Events": 0.0821593404, + "x": -1.3062904, + "y": -3.1628788 + }, + "86": { + "speaker": "conceptNULL", + "text": " Interesting. Our friends were trying to build the same kind of idea as a site, but it was like based on blockchain. I don't know if that's the same idea of decentralized, but they were basically had like an events page and their tickets were basically based on blockchains that you couldn't have tickets. Not exactly the same thing, but it was definitely the same vein of trying to get away from social media events basically of like, you know, Facebook events was like the biggest thing for Facebook. Like it was the handiest thing. Like, you know, you could make an event and invite people and That's the one thing I still mourn with Facebook. I'm like, that was actually kind of handy, like, you know, getting invited to a wedding and finding out what was going on.", + "sequence": 88, + "Technology": 0.0234699342, + "Art": 0.0629973412, + "Ireland": -0.0204334836, + "Organisation": 0.0397511125, + "Digital": -0.0135349855, + "Community": 0.1521802843, + "Events": 0.1606983542, + "x": -5.0041413, + "y": -6.1404233 + }, + "87": { + "speaker": "Aisling", + "text": "Who were your friends that were trying to build it?", + "sequence": 89, + "Technology": 0.137083739, + "Art": 0.0872242451, + "Ireland": 0.0933372229, + "Organisation": 0.1185161248, + "Digital": 0.0105665661, + "Community": 0.2936511934, + "Events": 0.1733222902, + "x": 11.895587, + "y": -2.3727713 + }, + "88": { + "speaker": "conceptNULL", + "text": "It was actually your brother and Colin Cullum. I thought you were asking me this.", + "sequence": 90, + "Technology": 0.0347195491, + "Art": -0.0077758338, + "Ireland": 0.0764258355, + "Organisation": -0.0054918472, + "Digital": 0.0809376836, + "Community": 0.0066082031, + "Events": -0.0860975683, + "x": -4.302978, + "y": 3.7756934 + }, + "89": { + "speaker": "Tom", + "text": "He's in the same building. Wait a second, turn the camera around. I'm still out here.", + "sequence": 91, + "Technology": 0.0450324789, + "Art": 0.0079737175, + "Ireland": 0.0709144622, + "Organisation": 0.0577686578, + "Digital": -0.0402822159, + "Community": -0.0031684926, + "Events": 0.0369877368, + "x": -4.608613, + "y": -1.6732967 + }, + "90": { + "speaker": "conceptNULL", + "text": " Um... It was, what was it?", + "sequence": 92, + "Technology": 0.1579794139, + "Art": 0.1138813347, + "Ireland": 0.2594420314, + "Organisation": -0.0405229628, + "Digital": 0.1411259025, + "Community": 0.0773904473, + "Events": 0.1829835325, + "x": 6.5693765, + "y": 4.243448 + }, + "91": { + "speaker": "Aisling", + "text": "That one, yeah. Yeah, yeah, yeah. Yeah, I know what you're talking about.", + "sequence": 93, + "Technology": 0.139710471, + "Art": 0.1191093698, + "Ireland": 0.1406740248, + "Organisation": 0.2392685711, + "Digital": 0.1039162874, + "Community": 0.2032199949, + "Events": 0.1633237898, + "x": 13.536354, + "y": -1.3670807 + }, + "92": { + "speaker": "conceptNULL", + "text": "Shows how much you talk to your brother right now, anyway. Yeah. That's why.", + "sequence": 94, + "Technology": 0.128154695, + "Art": 0.003356854, + "Ireland": -0.044370681, + "Organisation": 0.1185553074, + "Digital": -0.0098796748, + "Community": 0.0415692963, + "Events": 0.0695676282, + "x": -2.0760655, + "y": -4.939035 + }, + "93": { + "speaker": "Paul", + "text": "But I think they shall have a feeling family panel event the next time.", + "sequence": 95, + "Technology": -0.0135565568, + "Art": 0.0055780327, + "Ireland": 0.0215840079, + "Organisation": -0.0177237485, + "Digital": -0.066394493, + "Community": 0.1346477568, + "Events": 0.1401366889, + "x": -5.7430615, + "y": -5.3782854 + }, + "94": { + "speaker": "conceptNULL", + "text": "Yeah. You'd be surprised what's in that family, man. Goddamn. We got it all.", + "sequence": 96, + "Technology": 0.0980327874, + "Art": 0.085191533, + "Ireland": 0.1533022225, + "Organisation": -0.0253697559, + "Digital": 0.0450497121, + "Community": 0.048488982, + "Events": 0.0515942648, + "x": 0.7449215, + "y": 3.9942174 + }, + "95": { + "speaker": "Aisling", + "text": "We'll get Dean Rich in there as well, sure. Why not?", + "sequence": 97, + "Technology": -0.0571262687, + "Art": 0.0295772459, + "Ireland": 0.0661578178, + "Organisation": -0.0103701297, + "Digital": 0.0176749807, + "Community": -0.0119773448, + "Events": 0.0406000577, + "x": -6.0606637, + "y": -0.9238262 + }, + "96": { + "speaker": "conceptNULL", + "text": " Oh, please, yes, with the big hat again. I guess one last question. How would you guys feel about calling this the big data interview?", + "sequence": 98, + "Technology": 0.1834568828, + "Art": 0.1016845182, + "Ireland": 0.0744446591, + "Organisation": 0.0082895607, + "Digital": 0.1434313506, + "Community": 0.0831352696, + "Events": 0.136344552, + "x": 6.6183586, + "y": -1.311184 + }, + "97": { + "speaker": "UNKNOWN_SPEAKER", + "text": "Big data.", + "sequence": 99, + "Technology": 0.3240047097, + "Art": 0.236335665, + "Ireland": 0.1524737924, + "Organisation": 0.3093729615, + "Digital": 0.3839444518, + "Community": 0.337410748, + "Events": 0.3200583458, + "x": 16.588356, + "y": 2.5195816 + }, + "98": { + "speaker": "Tom", + "text": "I think you can call it whatever you want, for sure.", + "sequence": 100, + "Technology": 0.1434690356, + "Art": 0.1399530917, + "Ireland": 0.1146589369, + "Organisation": 0.0325538032, + "Digital": 0.0886203498, + "Community": 0.1483799219, + "Events": 0.1446833462, + "x": 7.4925437, + "y": 0.44302577 + }, + "99": { + "speaker": "Paul", + "text": "But even big data, Tom, this is on the back, Tom said you said something about big data. in our last conversation but it wasn't and I took it like big data as in like big tech I was like what the fuck is he talking about and then I you were saying big data presence that no school or a big data connection oh yeah the organization I was like no man that's no don't do whatever you want", + "sequence": 101, + "Technology": 0.0792150497, + "Art": -0.1074697301, + "Ireland": -0.0921461433, + "Organisation": -0.1762625128, + "Digital": -0.133826226, + "Community": -0.2099771053, + "Events": -0.1191948205, + "x": -12.540102, + "y": 2.8369312 + }, + "100": { + "speaker": "conceptNULL", + "text": " Okay, well, we'll come back to you with the script in about three years and then... On a defunct platform that we can't access.", + "sequence": 102, + "Technology": 0.1120433584, + "Art": 0.0311819576, + "Ireland": 0.0705917925, + "Organisation": -0.0470770225, + "Digital": 0.0432564616, + "Community": -0.0082763461, + "Events": 0.1107729599, + "x": 0.030054636, + "y": -0.28247046 + }, + "101": { + "speaker": "Paul", + "text": "Yeah, literally.", + "sequence": 103, + "Technology": 0.2258704901, + "Art": 0.248430714, + "Ireland": 0.2560866475, + "Organisation": 0.3798061311, + "Digital": 0.247472167, + "Community": 0.3025097847, + "Events": 0.2811346054, + "x": 16.423088, + "y": 1.1440326 + }, + "102": { + "speaker": "conceptNULL", + "text": "Yeah, on some blockchain somewhere like... Okay, well, look, we might wrap it up, but I hope this is the last time we get to talk to each other anyway. Absolutely. If I'm back in Ireland and in Dublin, I'll give you guys a shout. Anyway.", + "sequence": 104, + "Technology": 0.0621548444, + "Art": 0.0524238013, + "Ireland": 0.2577371597, + "Organisation": -0.0457628332, + "Digital": 0.0052126739, + "Community": 0.040994782, + "Events": 0.1090841293, + "x": 3.4289658, + "y": 5.278118 + }, + "103": { + "speaker": "Paul", + "text": " I am. Yeah. I mean, we'll see if we get through all of them, but we could be here for a while. That's it. Like, to be honest, I was going to whittle it down. I was like, going to make it like all sleek and be like having like a conversation. Then I was like, I actually never written it. Yeah, yeah, yeah. No, I think it's good. I mean, it's always good to have more than less. Sorry, my computer is ringing because someone's calling me on signal. It's blowing up, man.", + "sequence": 2, + "Technology": 0.1555153728, + "Art": -0.0434233733, + "Ireland": 0.0368795544, + "Organisation": -0.0494164973, + "Digital": -0.0637621209, + "Community": -0.082887575, + "Events": -0.0403678156, + "x": -8.585102, + "y": 4.2509303 + }, + "104": { + "speaker": "UNKNOWN_SPEAKER", + "text": "Really annoying.", + "sequence": 3, + "Technology": 0.1485467702, + "Art": 0.184471041, + "Ireland": 0.1895683557, + "Organisation": 0.3019199073, + "Digital": 0.1226770729, + "Community": 0.2070094794, + "Events": 0.1746111065, + "x": 14.5079565, + "y": -0.629168 + }, + "105": { + "speaker": "Paul", + "text": " But, so come here, I like, I mean, I know this sounds like a kind of silly thing to say, but it's really Ash and Paul who are kind of more familiar with your whole thing than I am. I know that sounds like a kind of silly thing to say when you're being like, oh, hi guys. But are you, you're all in Limerick, is it Limerick based? Pretty much, outside of Kayleen. Kayleen is from Waterford, but we would have all come across each other in Limerick. And I am currently living in Berlin now. We are kind of all a little bit in and out, but I guess we just through Limerick, we kind of all connected and me, Scott and Roshi worked a lot in Limerick doing our projects there. So it's a bit confusing, but I don't know. I don't really know how to say it, like, you know. Yeah, that's great. I'm just wondering if it's, like, location-based or that's just like... Yeah. Yeah, that just happens. I think we're limerick at heart, so that's maybe the cheesiest way I can put it to you without getting sick myself, like, you know. Yeah, yeah, yeah. If you all just reveal a tattoo at some point, it's fine. We actually do. There's actually some of us sitting here with an 061 tattoo, so... And it looks a little bit like a prison stamp.", + "sequence": 4, + "Technology": 0.0711382627, + "Art": 0.0091824438, + "Ireland": 0.1795510203, + "Organisation": -0.0556425266, + "Digital": 0.0258497894, + "Community": -0.0029368065, + "Events": -0.0196123384, + "x": -2.2908463, + "y": 4.138079 + }, + "106": { + "speaker": "conceptNULL", + "text": "Yeah, a small bit.", + "sequence": 5, + "Technology": 0.2504484057, + "Art": 0.2004081309, + "Ireland": 0.2365642041, + "Organisation": 0.2703081965, + "Digital": 0.210082978, + "Community": 0.2746633291, + "Events": 0.2094201595, + "x": 15.289422, + "y": 0.7948524 + }, + "107": { + "speaker": "Paul", + "text": "Were you in an old school prison where they still tattooed you? And I was like, no, actually, I just tattooed myself. Yeah, and now prison tattoos are just QR codes, actually. Really? Interesting. Yeah, they just check you on the way out, you know? Yeah, yeah. Not many mobiles in prison, so yeah. Yeah. That don't really work like that anymore. How's it going, Paul?", + "sequence": 6, + "Technology": 0.0952856839, + "Art": 0.0902603641, + "Ireland": 0.1014807224, + "Organisation": -0.0938990265, + "Digital": 0.0109238653, + "Community": -0.035041485, + "Events": -0.0402304344, + "x": -2.3923597, + "y": 5.303616 + }, + "108": { + "speaker": "conceptNULL", + "text": "All good, folks. How yous all doing?", + "sequence": 7, + "Technology": 0.1183175817, + "Art": 0.1037433222, + "Ireland": 0.1338981539, + "Organisation": 0.1139900833, + "Digital": 0.1462951303, + "Community": 0.3248049021, + "Events": 0.2649856806, + "x": 12.05442, + "y": -0.9979931 + }, + "109": { + "speaker": "Paul", + "text": "All right?", + "sequence": 8, + "Technology": 0.1539135128, + "Art": 0.2682009935, + "Ireland": 0.2261368483, + "Organisation": 0.3180603385, + "Digital": 0.1844813079, + "Community": 0.2711578608, + "Events": 0.2984077036, + "x": 16.190702, + "y": 0.13290405 + }, + "110": { + "speaker": "Aisling", + "text": " Yeah, good.", + "sequence": 9, + "Technology": 0.1809566319, + "Art": 0.2173746675, + "Ireland": 0.270001173, + "Organisation": 0.3921536207, + "Digital": 0.2301275283, + "Community": 0.4022478759, + "Events": 0.3031215668, + "x": 17.372677, + "y": 0.3076943 + }, + "111": { + "speaker": "Paul", + "text": "Thanks for talking to us. I'm Walt. I've been annoying. As I said, I've been annoying on the email and yeah, there's Kayleen, there's Scott and Roshin who were basically, yeah, we're trying to explain it. We were kind of limerick based, not so much anymore. Some of us, Roshin and Scott still mostly air and I'm in Berlin, but traveling back and forth a lot and Kayleen is in Waterford. Okay. But yeah, I mean from us, concept novel was kind of a limerick thing. So I guess through that we were kind of, yeah, bound through that. Oh, Ash is here. Woo! Maybe this is a silly question and I should know the answer already because I've been here a bit more, but are you all artists? Mostly artists, trying to be. Attempting it anyway, like, you know, giving it his best shot. Yeah, great. Yeah, I think this is one of the, this is actually one of the problems, um, with the, this is kind of one of the reasons we did the Constant Metal Newsletter, because we had such an annoyance with not really sometimes knowing ourselves what we were, like, and having this problem of, like, you know, definition, and especially externally as well, towards sometimes other people. I've been, like, like, even a project I was doing there, I was, like, working with Fidgetfee in, like, an aerial dance center, and they brought me in, and they're, like, literally the first I joined the meeting, and they were all dancers and aerialists, and they're, and then, like, they're, like, oh, we have, Ger here, our lighting designer, is going to help us with the lights. And we have Walter. And Walter does, what do you do, Walter? And I was like, I don't know. Lazy. Depends on who's asking. It depends on what you want from me. So after two weeks of R&D, we still didn't know what I really did. But I did something, so it was fine. I don't know if that's the imposter syndrome sometimes coming through. But maybe you guys have some experience with that, too. And maybe that will kind of show as well.", + "sequence": 10, + "Technology": 0.0970435366, + "Art": -0.0380035341, + "Ireland": 0.1445246935, + "Organisation": -0.0407690406, + "Digital": -0.0550765097, + "Community": -0.0736054108, + "Events": -0.080970183, + "x": -7.2426453, + "y": 3.2637012 + }, + "112": { + "speaker": "conceptNULL", + "text": " Yeah, I mean, I have no idea what I'm at or who I am or what I'm doing. It's been forever. And, you know, it is what it is. I hate that expression. It is what it is.", + "sequence": 11, + "Technology": 0.0930510238, + "Art": 0.0721358135, + "Ireland": 0.1708486229, + "Organisation": 0.0407164395, + "Digital": -0.0028012386, + "Community": 0.0660773516, + "Events": 0.0347504877, + "x": 1.8184232, + "y": 3.2720292 + }, + "113": { + "speaker": "Paul", + "text": "But yeah, it is what it is. Yeah. Maybe that's something, I don't know, inherent to like technological artworks or art that deals with lots of newer technologies, because they are like, you know, inherently", + "sequence": 12, + "Technology": 0.4582695961, + "Art": 0.2999589443, + "Ireland": 0.0377700813, + "Organisation": 0.0632027537, + "Digital": 0.1377278417, + "Community": 0.0639585257, + "Events": 0.0744087249, + "x": 7.4247956, + "y": -5.704541 + }, + "114": { + "speaker": "conceptNULL", + "text": " you know of undefined state so maybe that's also why sometimes you don't quite know where to place it like you know sure um also i don't know that you shouldn't need to place it like if you're if you're just interested in doing new things all the time then maybe maybe titles aren't necessary i don't know i guess it helps yeah and stuff but like sometimes it can be hindering to yes to say that you're one thing you know absolutely", + "sequence": 13, + "Technology": 0.1336357147, + "Art": 0.0675807744, + "Ireland": -0.0216873456, + "Organisation": -0.0174765587, + "Digital": -0.0091200387, + "Community": 0.0103394836, + "Events": 0.0449104086, + "x": 0.2953689, + "y": -3.3388505 + }, + "115": { + "speaker": "Paul", + "text": " And I think that's also something like with curiosity, which is a good thing that actors have, like most actors can be quite curious about the world. And that curiosity will take you in lots of different ways. And I'm pretty sure most of us here feel like doing projects. Sometimes we're like, I don't know why I'm doing this. And this has nothing to do with my field of expertise anymore. But here I am, like, working with bugs. Yeah, for sure. So yeah, thank you for actually all firstly coming here in this virtual space, of course. Yeah, I just wanted to say firstly, but with the interview side of this, so we're going to be screencapping this, I'm already screencapping it, but obviously whatever, I don't feel like you have to like be concise or talk in a certain way about anything. We're going to transcribe everything and work through it and basically write it all together and get that sent to you and you can like, okay, everything. So this is really just like, It's a meeting, you know, so don't worry too much about being concise or having to talk about it, like, you know, in a certain way. We haven't figured out how we'll do the transcription yet, but that's also our problem. So it also might take some time for us to do that.", + "sequence": 14, + "Technology": 0.2351983041, + "Art": 0.070754081, + "Ireland": 0.0291659087, + "Organisation": 0.005228065, + "Digital": 0.061834123, + "Community": 0.1062960848, + "Events": 0.0063407831, + "x": 4.061478, + "y": -3.914198 + }, + "116": { + "speaker": "conceptNULL", + "text": " That's, that's no problem. No problem for me anyway. Yeah. I know I was the one who was asking about the cameras set up and so on. So as a general rule, I don't like my face to be online for stuff. So I've stopped doing video and stuff. So that's my, I'm, I am that one. Uh, so that's fair enough. Yeah.", + "sequence": 15, + "Technology": 0.1476340592, + "Art": 0.0696398914, + "Ireland": 0.0256152507, + "Organisation": -0.0317488536, + "Digital": -0.0027578436, + "Community": 0.079206273, + "Events": 0.0253255945, + "x": 0.23603585, + "y": -2.6505947 + }, + "117": { + "speaker": "Paul", + "text": "How do we use my real face? So you're not an AI. I'm very happy about that. I was getting worried there. So yeah, it will all be transcribed and we'll just kind of, yeah, work through that and make it something that's readable for the news editor. It'd probably be like, I don't know, we haven't figured out yet, might be part of the news editor, might be its own publishing thing, if it's very long and has lots of interesting points, because I don't want to cut out too much as well. Because yeah, honestly, like we, like just a little bit backstory of also like, We started this newsletter thing. Constable L has been kind of doing its own thing for a while. Between me, Scott, and Roisin, we've been just trying to do new media, audiovisual events. They were quite hard to do, so they were quite spaced out in time. And after the last one, it was just such a big endeavor that we were like, we're going to pack this for a good long while, because we just need to get some space. It was amazing, it was great fun, but like just the logistic hurdles of like being both the curator and the technical manager and the events provider and space provider and all that stuff, it was just crazy. So we practiced for a while and then me and Kayleigh got talking I don't actually know what we're talking about. I think we were just kind of having a Zoom chat, and we were talking about basically that Denise McDonough from Culture Works, who was basically doing some stuff for the Arts Council, helping them devise the digital strategy. I don't know if you guys have seen that thing, but the digital strategy came out. This was like before, it was while it was still in kind of its last process of being worked on. and we were kind of at that time getting quite frustrated with the discipline side of things where we didn't really quite know how to label us and also like we felt like that in the Arts Council process it's hard to kind of say oh I'm a visual artist well that's not quite descriptive of what you're actually doing so Big old grievances there, we've written about it anyway. But basically, we were kind of thinking like, I was saying this to Kayleen that we had thought about like, you know, how to remedy this. One of the things was a newsletter. And then we were kind of thinking like, well, maybe there's someone in Ireland that has done this before. And then Kayleen had mentioned you guys dated. I was like, I actually had never heard of you, which I felt like a really bad disgrace because you guys have been around for so long. I was like, yeah, we tried to suss out, do you guys cover this newsletter side? We didn't really have a newsletter, so that's why we went off and did this. But that's the start of seeing your stuff. And I was like, fuck, this is really odd. I feel bad for not having known this sooner. So that's why I was like, you know what? Maybe a chat and getting to meet you guys was the best way to do this.", + "sequence": 16, + "Technology": 0.0035384446, + "Art": -0.0425687395, + "Ireland": -0.0045873104, + "Organisation": -0.0450770482, + "Digital": -0.1008016616, + "Community": -0.0046331212, + "Events": 0.0368828811, + "x": -8.300797, + "y": -1.2980546 + }, + "118": { + "speaker": "conceptNULL", + "text": " Can I, can I come in on that one? Is that all right? Yeah. Do we have to do the hand thing or whatever? We, we, in the latest tech cookbacks, we respect our promotional team. So that's why you haven't heard of us. I'm only joking. No, just first of all to say, yeah, I think it's deadly what you're doing. And it's so, so good. And it is so good to get that mailer. It's and I guess I've been doubling around this for ages and there was a need for it but I guess we'll probably get into it now just our time and what we're up to couldn't really do it but it's really it's just so I'm just like fair play to you I think it's brilliant and it's even really nice to be here chatting with you I know I'm kind of ahead here but what I know you just come over Dublin Limerick thing at the beginning, and we're called Deja, and obviously it's very Dublin-centric, but we're doing our utmost for it, not being Dublin-centric in any way. So, yeah, I mean, it's a conversation maybe for another day, but I mean, me on a personal level, anything I can do to help you is what yous are doing. Yeah, absolutely. I'm sorry to speak for yous as well. Yous can speak for yourself. Can we say the same thing? Yeah.", + "sequence": 17, + "Technology": 0.0792208761, + "Art": -0.0095981108, + "Ireland": 0.0663993135, + "Organisation": -0.0396473482, + "Digital": -0.0487301834, + "Community": 0.0550793782, + "Events": -0.0049446477, + "x": -4.0184555, + "y": -0.40077314 + }, + "119": { + "speaker": "Paul", + "text": " So yeah, cool. Yeah, but I also think there's a bit of strength as well with also keeping things in scope. So as you were saying, like you're a Dublin century, but you're not anti anything outside of Dublin. It's just sometimes having a scope like what you are doing and having that clear is also quite handy because that's also some of the cause of knowledge. Like now it's like, okay, we're writing. We didn't actually know how to tackle this problem of like new media art not being in Ireland until I think between us, we're like, oh, a newsletter. just write a newsletter, put open calls in it. It's not the best thing in the world, but it's a start. It's very simple, it's quite concise. And it's a start to something more than like, you know, and you can see where it comes from. So I think, I think rather than sitting around sometimes and pontificating about what you could do, maybe this, maybe that, like, you know, it's better just to do something like, you know, and get to meet cool people, like, you know, along the way. And that's kind of how it all kind of grows, you know? Sure.", + "sequence": 18, + "Technology": 0.1148663312, + "Art": 0.0766166225, + "Ireland": 0.1480251402, + "Organisation": -0.0407462716, + "Digital": 0.0235671028, + "Community": -0.0188616067, + "Events": 0.0125249578, + "x": -1.3422394, + "y": 4.628128 + }, + "120": { + "speaker": "conceptNULL", + "text": "Yeah. I think that's also how it develops, like, it kind of grows in a in a very natural way like if you're trying to do something really really big to have like a massive impact it often maybe that thing happens and you like pull it off but then it was so stressful that you don't do it for another year or you know like i think yeah that's something i've very much enjoyed since joining the lads like it's been nearly a year now with data and i feel like i just love that like somehow we just pull the events off, like we're all so busy but it's just committing to certain times and just being like this is an event all we need to do is just find a venue, find the speakers and you know kind of yeah smaller smaller actionable steps I think just more consistently is better than trying to do lots of things.", + "sequence": 19, + "Technology": 0.0929416865, + "Art": -0.0447727554, + "Ireland": 0.0392964333, + "Organisation": 0.0561955236, + "Digital": -0.0796722695, + "Community": 0.0504091941, + "Events": 0.0928222835, + "x": -4.1456227, + "y": -4.1129694 + }, + "121": { + "speaker": "Paul", + "text": "And I guess I can, okay, I'll come back to the start of the questions, but maybe we're going to do a little lovely nonlinear thing. But there is a question actually about basically, how do you organize data events? Like, do you have a process behind it? Has there always been this kind of rubric where you're like, this is all we ever do? Or is it kind of very, just DIY? So yeah, Maybe I can, I don't know, Paul, do you want to? No, no, Tom, that's on you. One thing that I think is worth saying at the start, because I did look at the questions a little bit, or a few of them, is, and you used the word, like, collective a lot, you know, which would be kind of a reasonable. I did not praise that one, yeah. But I suppose it's worth saying that, like, data is, it's just, it's been a lot of things over the years, and it's kind of really a very loose association of people who have an interest in art about, with technology. And it's been running for over 20 years and different people at different times have done kind of more or less of the labor of that. So that like people like Jonah Booker-Cohen, Nikki Gogan, Ben Doolan, Rachel Dwyer, Tim Redfern. At the moment, Ashley and Paul and I are the people who kind of do most of that labor. Only, I suppose, just because it's kind of, you know, the hand is spinning and it's landing on us at the moment. it is quite a loose thing and it's changed a lot in its form. And so we don't really have, I mean, to some extent, we don't really have codified ways of working. What we do have and what is collective is an interest in art about technology. And so we're quite, I wouldn't say it's totally ad hoc in the way we organize things at all. Like we, there's some consistency where we're doing them at the moment. Every month we have a structure, we have certain rules about trying to I suppose, represent things in a certain way. But we really don't have a very organized and kind of set identity because we ultimately don't, well, I don't know, maybe this is where the other guys might come in on this, but we don't really want to be like the owners of data. We just happen to be the people at the moment who are booking the venues. And we constantly are talking at events about like, well, who wants to propose a thing or who wants to do a thing? Sometimes people have no time for doing that. Other times they do and they suggest something or someone says, I'd like to present. And so we have people either coming to us saying, oh, I was at the data event or I heard about it. I'd like to do something. And equally, we spend our time sometimes thinking about it. But it is very fluid, I guess is worth saying.", + "sequence": 20, + "Technology": 0.1632272899, + "Art": 0.0441042408, + "Ireland": 0.0602897033, + "Organisation": 0.0406373292, + "Digital": 0.0913037658, + "Community": -0.0125012845, + "Events": 0.0825965479, + "x": 1.7957124, + "y": -0.58214736 + }, + "122": { + "speaker": "conceptNULL", + "text": " And I think each event kind of informs the next one as well. Like, I think, you know, if we do a full funny, like visually based event, like the next one, we were like, actually, we haven't really done something on sound. Why don't we do all sound stuff and just book a PA? And then there's like no projector, no anything. And it's a purely sound based. And then, you know, then we're like, okay, well, we've had it in NCAD a few times. And that's been like with an institution, which is also like amazing to have the space and stuff. But we were like, maybe we can move around the city and go to different places and like each one is just kind of like okay we did that and then yeah well I guess since since I've been part of it that's kind of the which is is cool because each one you learn something from and then you're you're like okay well we've covered a certain amount of ground with that and now how do we want to move on and stay open to loads of different like art forms and mediums and stuff", + "sequence": 21, + "Technology": -0.0104051828, + "Art": -0.0366583206, + "Ireland": 0.1041174605, + "Organisation": -0.0618989542, + "Digital": -0.102263853, + "Community": -0.0819249377, + "Events": 0.0309389066, + "x": -7.5100317, + "y": 0.81434876 + }, + "123": { + "speaker": "Paul", + "text": " But one thing I didn't say is that while, like I say, the labor currently of booking, which is like, as Ash said, booking a space, making sure there's a PA there, making a post there, like, you know, emailing, putting it up on social media, that's the labor of data. But really, most of the labor of data is people who are willing to talk about and share their work in public. And that's really important. So actually, the labor that we do is like facilitation rather than organization. We facilitate that. people come, they decide how they want to present their work, they decide, you know, really what they want to present, and we kind of hand that over to them. So actually, it's kind of incorrect of me to say that we're the labourers landing on us, because actually, that's not true. Fair. So would you say that's kind of your recipe for how it's been running so long, this kind of like, no plan is the best plan, you know, working on just going from event to event and kind of having it as a collect, like, sorry, collective is the wrong word, but a communal like ground for people to share work like more of a platform rather than as you said you don't deliver the content of data there is no content outside of what people bring like you know would you say that that is the kind of recipe for how it's been running for so long or is there maybe something beneath it all that again.", + "sequence": 22, + "Technology": 0.0721498281, + "Art": 0.043167755, + "Ireland": 0.0399400778, + "Organisation": -0.011130278, + "Digital": -0.1000796631, + "Community": 0.0558424443, + "Events": 0.0361945443, + "x": -3.6836727, + "y": -2.0039957 + }, + "124": { + "speaker": "conceptNULL", + "text": " Sorry, first of all, I think Tom kind of got it right, like there has been many different forms, so this current form, like the one that we're working on, is like in previous iterations it was, you know, it was being held on a regular basis in the Science Gallery, it was kind of like a different way of doing it, so It's never been the same, I guess, you know, it kind of comes and goes in different waves and cycles. I like even if you look back on it. Sorry, this is me nerding out over it over like a 20 year period. You know, it kind of started, I guess, kind of Celtic Tiger years. Then you have the recession and it's kept going after the recession, but it wound down kind of slowly, maturely. Then it was gone during the pandemic. So, you know, if you want to get into it, you can see different kind of societal things kind of framing it a bit as well. I don't know if that makes sense. Does that make sense?", + "sequence": 23, + "Technology": 0.2063950449, + "Art": -0.0079566753, + "Ireland": 0.0261195898, + "Organisation": -0.0568902865, + "Digital": 0.0557765253, + "Community": -0.0702795833, + "Events": -0.0525541604, + "x": -6.8712745, + "y": 5.5246935 + }, + "125": { + "speaker": "Paul", + "text": "Yeah, I get you. It's change, but it's environment basically. I think there's also something about that that's interesting is that at the time when that data started and it came after some other things as well, like media house and that that was quite an early time in what you might call new media art or, you know, technologies were much more open and open to both. And there was quite a crossover between people, artists in particular, and maybe people working with technology at a, at a, like making it level, you know, so it was a real crossover there. And you had people working in various kind of tech, like it was before even the term kind of tech was knocking around to the same extent. So there was a, I think there was a different social alliance there, you know, And now I think we exist at a time which, you know, we have, I suppose, what is called big tech, maybe, you know, we've got a lot of platforms that shape a huge aspect of our life. They tend to be closed platforms. The role of a kind of media artist is very changed in that context. So in Dublin, for example, we have the headquarters of, you know, Google, Facebook, all these companies. We have a huge amount of the economy of Ireland is driven by these things, but we don't have a strong technology critical, um, context, like a really strong one in the sense of like, for example, the universities, there's no, you know, like courses in like technology and society. There's no, you know, of course, there's lots of individual work and academics doing really great stuff. And so I'm not suggesting I'm an artist doing really great stuff around it.", + "sequence": 24, + "Technology": 0.3389029205, + "Art": 0.078685388, + "Ireland": 0.0063394718, + "Organisation": 0.0521632507, + "Digital": 0.104183048, + "Community": 0.141213119, + "Events": 0.1326716542, + "x": 7.4344473, + "y": -4.266719 + }, + "126": { + "speaker": "conceptNULL", + "text": "Yeah.", + "sequence": 25, + "Technology": 0.2798177004, + "Art": 0.267590493, + "Ireland": 0.264179945, + "Organisation": 0.4656565487, + "Digital": 0.2740884721, + "Community": 0.4323056936, + "Events": 0.3351562321, + "x": 18.153908, + "y": 1.320851 + }, + "127": { + "speaker": "Paul", + "text": "But that context now, I think, has shaped a little bit the way we think about data. And so one of the things we really think about is that all the events should be kind of free. And we try, since we've been kind of running it together, we've tried to make that the case. And I think because the project is so closed, it's harder for there to be a kind of a bedrock of people who are cracking it open. Certainly for me, one of the interests is trying to reproduce a community, not reproduce a particular community, but produce the context in which a community of technology-critical people can make work. I think in the past, you know, there's been loads of really good work that was funded by tech companies. And that was because it was in a different context now. But at the moment, we're a little bit, we'd be wary, let's say, of that and of being kind of connected with that in some way. Certainly I would. I imagine the others as well. So we want to make it as an outside space that maybe doesn't think exists hugely in the city. Does that make sense, sir? I think it does.", + "sequence": 26, + "Technology": 0.315740943, + "Art": 0.0738474578, + "Ireland": -0.0072528864, + "Organisation": 0.1957291663, + "Digital": 0.0564189255, + "Community": 0.2250987291, + "Events": 0.1828210503, + "x": 10.166331, + "y": -4.234038 + }, + "128": { + "speaker": "conceptNULL", + "text": "Yeah, absolutely. Yeah, I mean, I totally agree with everything Tom said. So like, you know, there needs to be this critical counterpoint to this kind of dominant narrative that permeates through has permeated through kind of Ireland over the last two decades. I'm not saying data is it, it's just like one part of it. It shouldn't just be it, you know. And as we all know, there's plenty of artists and academics who are doing kind of critical work in that space. It's just over the last few years, my experience is it's felt kind of fragmented again because of stuff like post-recession kind of pandemic and stuff but like it's great things are popping up not just data obviously you guys and you know there's plenty of other stuff going on as well so yeah so yeah it's cool", + "sequence": 27, + "Technology": 0.0797020346, + "Art": -0.0562076792, + "Ireland": 0.0089654382, + "Organisation": -0.1138406992, + "Digital": -0.0854954869, + "Community": -0.06913203, + "Events": -0.0782910734, + "x": -9.643759, + "y": 2.679666 + }, + "129": { + "speaker": "Paul", + "text": " I think one very interesting thing I'm quite interested in is this idea of third space, which I don't know if you guys know, is like, I can't remember from, I think it was an architect who kind of put this philosophy down, which is basically like your first space is your home, your second space is your work, and the third space is kind of like it's somehow a public space where everyone can access. Usually these spaces are, again, public and low cost barrier. So it should be free to go there or almost free to go there, very cheap. And these spaces, he says, are like, or they kind of say, is basically a place where ideas of society can flow. A barrister might meet a worker, like, you know, or, you know, artists will talk to politicians. It's a place, and there's no, there is law, there's order, but there's no classes. So in these, in these spaces, people can talk freely and be, are open to criticism and be criticized. And there's no one there to basically censor anyone. And I think this is something that kind of lacks in Ireland a little bit. I think the pub was the closest we ever get to a third space. And I think that's why pubs are so important in Ireland, because they have this, you know, yeah, the stratification of society, I guess, turns sideways a little bit at least. But I think that's something I definitely would love to see in Ireland, as you were saying, like having a space where big data companies and people who work in these data companies might be in contact with artists and academics and a space where people can talk freely about these things without maybe criticism.", + "sequence": 28, + "Technology": 0.0766743869, + "Art": -0.0137213431, + "Ireland": -0.0479860455, + "Organisation": -0.0629578009, + "Digital": -0.1211640388, + "Community": -0.0713328645, + "Events": -0.0579777099, + "x": -10.787082, + "y": 2.2236953 + }, + "130": { + "speaker": "conceptNULL", + "text": "On the back of the mention of the pub from the last event, I just kind of had this realisation that a lot of the most interesting conversations that come off the back of data are in the pub afterwards. because we all like a lot of the time after every event we would just choose like the closest pub and say we're heading over if anyone wants to join and there's actually usually quite a big take up on that and it's lovely because it's like we I think because people have been at the event then there's like this kind of like remnants of criticality but then they have the freedom of just being in the pub and That's it. People are chatting about actually very interesting, sometimes tech related, sometimes not, sometimes art related, sometimes not, but I find it's very interesting to kind of get people in a space and have people present ideas and new ways of thinking, but then to kind of I think it's a very important part for the events to hold that space for a little while longer and allow the conversation to happen. Because I think for the speakers as well, because everything is done free and we don't get paid and we don't charge and the speakers don't get paid, it's important that they get something out of it themselves. And I think that's why there's so much freedom in terms of like what they can present. It's always just like what is most helpful for them. But I think the discussion is a lot of the time where kind of the richness is. Yeah, I've had that a lot so to be honest. Just to kind of piggyback on that, just a question of support and obviously money and people aren't getting paid and kind of Tom touched on the context of labour. I think that's something that we do our best to try and kind of facilitate this platform. Let's just really just kind of general like emails like come along, this is informal, don't stress, you know, we're all BSV, you know, you don't have to spend loads of time on this, we'll take whatever you have, and, you know, supportive, critical, like if needs be in it, but in a kind of like, you know, I don't know what the word, like critical but sound. Yeah, slightly informal. Yeah, informal and supportive, you know. So that's the kind of space I think that we're, I'm going to say, I think we're pretty good at creating.", + "sequence": 29, + "Technology": -0.0433107242, + "Art": -0.0415007174, + "Ireland": -0.0374554731, + "Organisation": -0.0276835449, + "Digital": -0.1165461987, + "Community": 0.0846315175, + "Events": 0.0723546743, + "x": -7.634373, + "y": -3.5644486 + }, + "131": { + "speaker": "Paul", + "text": " I mean, you've got a lot of experience at this point. What we're saying, though, is, you know, so this idea of like a third space or like a public sphere in which this kind of conversation can happen is, of course, this ideal that we would really love to have. But I think it actually touched on earlier on about us moving around the city. I think we're also aware that actually spaces aren't neutral at all. And so the pub is a space for some people that they're quite happy to have a chat in. We had a couple of events in NCAD because they were provided with a space, which was great, but obviously an institution that a lot of people aren't comfortable with. And I mean, if you look at, say, the institution of technology and technology-based art, historically, it has a very, you know, like non-diverse bunch of people working in it. And the art as an institution itself is also like that. So quite aware of I suppose one, the failings of art, our own failings of running data, not that it's on us specifically to address that on our own, but that, you know, Like, it's very hard to have events. One, that someone will give you a space for free that has a projector, has a thing. It's very hard to find spaces that will reach beyond those kind of limitations. And arguably, there is no space that isn't limited in some way in terms of access to certain people or certain groups. And so I think it's really great. This third space idea is, I mean, it is a really great idea. And this idea of like a free public sphere is, I think, in the world at the moment, like a really important thing. But it's something that unfortunately, I think we will never really get to either. I think it's more of an ideological thinking of like how you can think of how they thought of spaces, how you can divide up and categorize certain spaces kind of like, you know, when they're purposing. And I think there's a lot of conversation and books written about third space being online and how open forums and the new third space is realistically like, you know, so. Even doing this, like, you know, this could be seen or like, you know, like even a newsletter with a comment section, you could call that a third space. So it's, I guess it's more of an exceptional kind of thought process. But I might get back to the questions because I feel like we could talk about this for an hour.", + "sequence": 30, + "Technology": -0.0007819735, + "Art": -0.0167045649, + "Ireland": -0.0584527403, + "Organisation": -0.000455897, + "Digital": -0.1184439659, + "Community": 0.0781031549, + "Events": 0.0304106176, + "x": -7.925726, + "y": -4.082867 + }, + "132": { + "speaker": "Aisling", + "text": "So, let me see. Can I actually just quickly ask what format do the events, is it a consistent format in terms of like, is it presentations? Is it more kind of show and tell? Is it a mix mash? Has it changed over the years? What's the kind of story with that kind of stuff?", + "sequence": 31, + "Technology": 0.1154226363, + "Art": 0.0505468734, + "Ireland": 0.037162032, + "Organisation": 0.077987127, + "Digital": 0.0735651851, + "Community": 0.0023547336, + "Events": 0.2833886743, + "x": 4.292091, + "y": 0.31191784 + }, + "133": { + "speaker": "conceptNULL", + "text": " I would say it's definitely changed though, given that it's been going for for 20 years, you know, so I mean, I like I, I wasn't at the first ones I kind of came to data. around my first ones would have been around 2010 as in I start going like seeing what they were and there were there was different things then there was like workshops as well when Ben Gowlon was was running it and Rachel O'Dwyer and so there was lots of different formats I have seen and it's on the website there's obviously a lot of kind of archival footage as well which was just like people kind of turning up and with their work, like if that was an interactive piece, and just having fun with it. Tom, you probably came in earlier than 2010, were you?", + "sequence": 32, + "Technology": 0.1900036037, + "Art": -0.0428354219, + "Ireland": 0.1334884763, + "Organisation": -0.0274407212, + "Digital": 0.0815691054, + "Community": -0.0004831832, + "Events": 0.038051866, + "x": -2.2550645, + "y": 2.6557643 + }, + "134": { + "speaker": "Paul", + "text": "Kind of somewhere similar. Maybe I think 2009 was the first one I was involved in. Yeah. Or it could be 2008, I'm not sure. But yeah, I mean, just to kind of reiterate what Paul said, there were, and at one point also again, there was funding maybe as part of it to organize and pay people to do workshops. there's been a really big, I mean one thing that like it did start in the pub, going back to what Ashley was saying, it started in the pub and it was like an open projector, that was the kind of format that it started with, so not quite but just like screen based and so that's something that's new, the last one was a student open projector, so it was for undergraduate students in colleges around the country, I mean it was mostly Dublin based but actually a Limerick student or artist as well and So that's something we still do is open projectors as Ashley also mentioned earlier on, we did one that was just fine by so no screens and I think that was probably the only data ever that didn't have a screen. So, we did that in partnership with your and three people just presented sound work. So there is often a presentation-y type format, but we, and I think that's because when people see a screen, they take a PowerPoint and that sort of thing. We are certainly always encouraging it to be something other than that, and whether that's a screening or something like a workshop interactive, like I'm actually presenting it now next month, and it'll hopefully be a workshop discussion rather than a presentation. So I haven't really worked that yet. But you know what I mean? So we're certainly trying for it to be more open. But of course, when people are pressed for time, one of the easier things to do is to say, here's the work. I'm thinking this about it. What do you think about it? And it's a really good, like, there's a reason presentations exist. They're actually a way of communicating things, even if they aren't. Of course, yeah. Yeah, you know, so.", + "sequence": 33, + "Technology": -0.0219321772, + "Art": 0.0516736209, + "Ireland": 0.060557764, + "Organisation": 0.162450701, + "Digital": -0.1133933812, + "Community": 0.1086513251, + "Events": 0.1392899156, + "x": -6.349522, + "y": -7.2391043 + }, + "135": { + "speaker": "conceptNULL", + "text": "Just to finish, Aisling, no, I was going to throw it over to you, Aisling. No, go ahead. I was just going to say, obviously, I'm way more recent to it, but I do find that the format of allowing people do what they want kind of opens it up as well, because we're not saying you have to do a presentation. So even with the sound event that we did, someone did a live radio show and we had a live chat box going. sometimes that openness when it's really just like let this be like the most beneficial thing for you possible like that should be your main thing for you to get something out of this it means that it it opens up the format to be to be new things, which I think is really exciting. And it also allows the community of presenters and stuff actually have quite a strong influence in data and what it is and what the events are. So I think it's nice. And I think we enjoy allowing people kind of decide what they're comfortable with and having that. Yeah. Yeah, exactly that. I don't know about you guys, but I've had to do presentations before and it can be stressful and it takes time. So it's just nice to go do what you want. We'll make it work and we'll work with you. Yeah. No problem.", + "sequence": 34, + "Technology": 0.0301229768, + "Art": -0.0299336743, + "Ireland": 0.0393990092, + "Organisation": -0.0825184509, + "Digital": -0.1034852564, + "Community": -0.0093505681, + "Events": 0.0564398281, + "x": -7.8410635, + "y": -0.3134022 + } +} diff --git a/static/assets/data/data/sorted_output.json b/static/assets/data/data/sorted_output.json new file mode 100644 index 0000000..de87ae3 --- /dev/null +++ b/static/assets/data/data/sorted_output.json @@ -0,0 +1,1472 @@ +{ + "0": { + "speaker": "Tom", + "text": "So come here, I know this sounds like a silly thing to say, but it's really Ash and Paul who are more familiar with your whole thing than I. So are you all in Limerick, is it Limerick based?", + "sequence": 0, + "Technology": 0.0711382627, + "Art": 0.0091824438, + "Ireland": 0.1795510203, + "Organisation": -0.0556425266, + "Digital": 0.0258497894, + "Community": -0.0029368065, + "Events": -0.0196123384, + "x": -2.2908463, + "y": 4.138079 + }, + "1": { + "speaker": "conceptNULL", + "text": "Pretty much, outside of Cailean. Cailean is from Waterford, but we would have all come across each other in Limerick. I am currently living in Berlin now. We are kind of all a little bit in and out, but I guess through Limerick, we are all connected. Me, Scott and Roisin worked a lot in Limerick on projects together. Yeah a little confusing maybe. I think we're Limerick at heart, so that's the cheesiest way I can put it to you without getting sick myself, you know.", + "Technology": 0.10709530909151459, + "Art": -0.030719106196903122, + "Ireland": 0.23418222590666174, + "Organisation": -0.024084947494348814, + "Digital": -0.026213464177517316, + "Community": -0.09971837448150926, + "Events": 0.04616440072969237, + "x": -4.8813943445042804, + "y": 4.172464327790826, + "sequence": 1 + }, + "2": { + "speaker": "Tom", + "text": "If you all just reveal a tattoo at some point, that would be funny.", + "Technology": 0.1377111267028972, + "Art": -0.013860395012294047, + "Ireland": 0.14218517201477052, + "Organisation": -0.1451540523695976, + "Digital": -0.028557284792761723, + "Community": -0.003091452650858653, + "Events": 0.03801139910563785, + "x": -3.891195612856265, + "y": 1.342222856072362, + "sequence": 2 + }, + "3": { + "speaker": "conceptNULL", + "text": "We actually do. There's actually some of us sitting here with an 061 tattoo - it looks a little bit like a prison stamp.", + "Technology": 0.08347597696437127, + "Art": 0.05057055477297479, + "Ireland": 0.1723412341943553, + "Organisation": -0.1344551258618641, + "Digital": 0.07182406770846984, + "Community": -0.06371768201418873, + "Events": -0.10386662610782302, + "x": -4.01195612856265, + "y": 2.342222856072362, + "sequence": 3 + }, + "4": { + "speaker": "conceptNULL", + "text": "Were you in an old school prison where they still tattooed you? And I was like, no, actually, I just got tattooed voluntarily.", + "sequence": 4, + "Technology": 0.0952856839, + "Art": 0.0902603641, + "Ireland": 0.1014807224, + "Organisation": -0.0938990265, + "Digital": 0.0109238653, + "Community": -0.035041485, + "Events": -0.0402304344, + "x": -2.3923597, + "y": 5.303616 + }, + "5": { + "speaker": "Tom", + "text": "Yeah, and now prison tattoos are just QR codes. They just check you on the way out, you know? Not many mobiles in prison.", + "Technology": 0.04815815455272398, + "Art": 0.13945159942473156, + "Ireland": 0.16368607436650143, + "Organisation": -0.04929633795897305, + "Digital": 0.06374883598012893, + "Community": -0.04745198698380003, + "Events": -0.13919374260123724, + "x": -3.309838783707237, + "y": 5.640945358565654, + "sequence": 5 + }, + "6": { + "speaker": "conceptNULL", + "text": "It doesn't really work like that anymore. How's it going, Paul?", + "Technology": 0.10423164386713617, + "Art": 0.11785201904241367, + "Ireland": 0.09529006977587243, + "Organisation": -0.056597407216618725, + "Digital": 0.0780373547237104, + "Community": -0.01746430440203177, + "Events": -0.05753691851454834, + "x": -2.8909030841858794, + "y": 2.246576793027648, + "sequence": 6 + }, + "7": { + "speaker": "conceptNULL", + "text": "Thanks for talking to us. I'm Walt. I've been the one annoying everyone on the email and yeah, there's Cailean, there's Scott and Roisin. But yeah, we were trying to explain. We were kind of limerick based, not so much anymore. Roisin and Scott still mostly are, and I'm in Berlin, but travelling back and forth a lot, and Cailean is in Waterford. Concept NULL was kind of a limerick thing. So we were kind of bound through that. Oh, Ash is here. Woo!", + "sequence": 7, + "Technology": 0.0970435366, + "Art": -0.0380035341, + "Ireland": 0.1445246935, + "Organisation": -0.0407690406, + "Digital": -0.0550765097, + "Community": -0.0736054108, + "Events": -0.080970183, + "x": -7.2426453, + "y": 3.2637012 + }, + "8": { + "speaker": "Paul", + "text": "Maybe this is a silly question and I should know the answer already because I've been here a bit, but are you all artists?", + "Technology": 0.11526857356629402, + "Art": 0.04026206599473446, + "Ireland": 0.04465136577273063, + "Organisation": -0.1242563113637485, + "Digital": -0.021446539919144553, + "Community": -0.08555832770479697, + "Events": -0.054252640738163216, + "x": -10.185236536583927, + "y": -0.9635731567493089, + "sequence": 8 + }, + "9": { + "speaker": "conceptNULL", + "text": "Mostly artists, trying to be. Giving it our best shot. Yeah, this is actually one of the problems which is one of the reasons we did the concept NULL Newsletter, because we had such an annoyance with definition of what we do, and having this problem of description externally towards other people. I was doing a project with Fidgetfeet, they're an aerial dance company, and they brought me in. In the first meeting they introduced me as 'This is Walter. And Walter does, what do you actually do, Walter?' And I was like '...I don't know. Depends on who's asking.' I don't know if that's the imposter syndrome sometimes coming through. But maybe you guys have some experience with that, too.", + "Technology": 0.0930510238, + "Art": 0.0721358135, + "Ireland": 0.1708486229, + "Organisation": 0.0407164395, + "Digital": -0.0028012386, + "Community": 0.0660773516, + "Events": 0.0347504877, + "x": -3.455163540974195, + "y": 2.2307728735962105, + "sequence": 9 + }, + "10": { + "speaker": "Paul", + "text": " Yeah, I mean, I have no idea what I'm at or who I am or what I'm doing. It's been like that forever. And, you know, it is what it is. I hate that expression. It is what it is.", + "sequence": 10, + "Technology": 0.0930510238, + "Art": 0.0721358135, + "Ireland": 0.1708486229, + "Organisation": 0.0407164395, + "Digital": -0.0028012386, + "Community": 0.0660773516, + "Events": 0.0347504877, + "x": 1.8184232, + "y": 3.2720292 + }, + "11": { + "speaker": "conceptNULL", + "text": "Yeah. Maybe that's something inherent to technological artworks or art that deals with lots of newer technologies, because they are inherently in undefined states. So that's also why sometimes you don't quite know where to place them.", + "sequence": 11, + "Technology": 0.4582695961, + "Art": 0.2999589443, + "Ireland": 0.0377700813, + "Organisation": 0.0632027537, + "Digital": 0.1377278417, + "Community": 0.0639585257, + "Events": 0.0744087249, + "x": 7.4247956, + "y": -5.704541 + }, + "12": { + "speaker": "Aisling", + "text": "Also I don't know that you should need to place it. If you're just interested in doing new things all the time then maybe titles aren't necessary. I guess it helps but sometimes it can be hindering to say that you're one thing.", + "Technology": 0.4470613098403158, + "Art": 0.2607119331453454, + "Ireland": 0.06185890264547982, + "Organisation": 0.06507277827388915, + "Digital": 0.1172765768161571, + "Community": -0.03413101627733982, + "Events": 0.11447298868782241, + "x": 4.192574222617658, + "y": -5.0061472238051365, + "sequence": 12 + }, + "13": { + "speaker": "conceptNULL", + "text": "I think that's also something with curiosity, which is a good thing, that most artists have, most artists can be quite curious about the world. That curiosity will take you in lots of different directions. I'm pretty sure most of us here feel like that during projects, where you don't know why you're doing this, and it could have nothing to do with your field of expertise anymore. But fuck it, you're learning, and its great.", + "sequence": 13, + "Technology": 0.2351983041, + "Art": 0.070754081, + "Ireland": 0.0291659087, + "Organisation": 0.005228065, + "Digital": 0.061834123, + "Community": 0.1062960848, + "Events": 0.0063407831, + "x": 4.061478, + "y": -3.914198 + }, + "14": { + "speaker": "conceptNULL", + "text": "So yeah, just a little bit of backstory on us. Concept NULL has been doing its own thing for a while. Between me, Scott, and Roisin, we've been doing new media, audiovisual events. They were quite hard to do, so they were quite spaced out in time. After the last one, it was just such a big endeavour that we decided we were going to park this for a good long while, because we just needed some space. It was amazing, it was great fun, but just the logistic hurdles of being both the curator, the technical manager, the events provider, space provider, and all that stuff, it was just crazy. So we parked it for a while, and then me and Cailean got talking, I don't actually know what we were talking about. I think we were just having a Zoom chat, and we were talking about different stuff, about the Arts Council, the digital strategy. This was while it was still in kind of its last process of being worked on and we were at that time getting quite frustrated with the discipline side of things, where we didn't quite know how to label ourselves, and we felt that in the application process it felt wrong to say 'oh I'm a visual artist' when really that's not quite descriptive of what you're actually doing. So basically, we were thinking on how to remedy this. One of the things came to mind was a newsletter. Cailean had mentioned you guys and I actually had never heard of you, which I felt kind of stupid because you have been around for so long. We were trying to suss out, do you guys cover this newsletter side? We really couldn't tell, so we went off and just did it. But yeah, that's the start of seeing your stuff. I was like, fuck, this is really odd. I feel bad for not having known sooner. So that's why we said, you know what? Maybe a chat to get to meet you guys was the best way about this.", + "sequence": 14, + "Technology": 0.0035384446, + "Art": -0.0425687395, + "Ireland": -0.0045873104, + "Organisation": -0.0450770482, + "Digital": -0.1008016616, + "Community": -0.0046331212, + "Events": 0.0368828811, + "x": -8.300797, + "y": -1.2980546 + }, + "15": { + "speaker": "Paul", + "text": "Can I, can I come in on that one? Is that all right? Do we have to do the hand thing or whatever? So in the latest tech cutbacks, we sacked our promotional team. So that's why you haven't heard of us. I'm only joking. No, just first of all, I think it's deadly what you's doing. And it is so good to get that mailer. I've been doubling around this for ages and there was a need for it but I guess we'll probably get into it now, but our time is limited so we couldn't really do it but fair play to you, I think it's brilliant and it's really nice to be here chatting with you. I know you mentioned the Dublin Limerick thing at the beginning, but yeah. we're called D.A.T.A, and obviously it's very Dublin-centric, but we're doing our utmost for it not being Dublin-centric in any way. I mean, it's a conversation maybe for another day, but me on a personal level, anything I can do to help you is what yous are doing. I'm sorry to speak for yous as well. Yous can speak for yourself.", + "sequence": 15, + "Technology": 0.0792208761, + "Art": -0.0095981108, + "Ireland": 0.0663993135, + "Organisation": -0.0396473482, + "Digital": -0.0487301834, + "Community": 0.0550793782, + "Events": -0.0049446477, + "x": -4.0184555, + "y": -0.40077314 + }, + "16": { + "speaker": "conceptNULL", + "text": "Cool thanks. Yeah, but I also think there's a bit of strength as well with keeping things in scope. So as you were saying, you're a Dublin centric, but you're not anti anything outside of Dublin. It's just sometimes having a scope like that and having that clear is quite handy. Now, we're writing a newsletter. We didn't actually know how to tackle the problem of new media art not being in showcased much in Ireland until I between us, we were like, oh, a newsletter. Just write a newsletter, put open calls in it. It's not the best thing in the world, but it's a start. It's very simple, and it's quite concise. It's a start to maybe something more, lets see where it goes. So I think rather than sitting around and pontificating about what you could do, maybe it's better just to do something small and get to meet cool people along the way. And that's how things grows.", + "sequence": 16, + "Technology": 0.1148663312, + "Art": 0.0766166225, + "Ireland": 0.1480251402, + "Organisation": -0.0407462716, + "Digital": 0.0235671028, + "Community": -0.0188616067, + "Events": 0.0125249578, + "x": -1.3422394, + "y": 4.628128 + }, + "17": { + "speaker": "Aisling", + "text": "I think that's also how it develops and grows in a in a very natural way. If you're trying to do something really really big to have a massive impact, you pull it off but then it was so stressful that you don't do it for another year. Something I've very much enjoyed since joining the lads, it's been nearly a year now with D.A.T.A, and I just love that somehow we just pull the events off, as we're all so busy but it's just committing to certain times and just saying 'this is an event, all we need to do is just find a venue and find the speakers' so yeah, smaller actionable steps and just more consistently is better than trying to do lots of things.", + "sequence": 17, + "Technology": 0.0929416865, + "Art": -0.0447727554, + "Ireland": 0.0392964333, + "Organisation": 0.0561955236, + "Digital": -0.0796722695, + "Community": 0.0504091941, + "Events": 0.0928222835, + "x": -4.1456227, + "y": -4.1129694 + }, + "18": { + "speaker": "conceptNULL", + "text": "So how do you organize D.A.T.A events? Like, do you have a process behind it?", + "sequence": 18, + "Technology": 0.1632272899, + "Art": 0.0441042408, + "Ireland": 0.0602897033, + "Organisation": 0.0406373292, + "Digital": 0.0913037658, + "Community": -0.0125012845, + "Events": 0.0825965479, + "x": 1.7957124, + "y": -0.58214736 + }, + "19": { + "speaker": "Tom", + "text": "One thing that I think is worth saying, reading the questions you sent, you used the word 'collective' a lot, which would be kind of reasonable, but I suppose it's worth saying that D.A.T.A has been a lot of things over the years, and it's really a very loose association of people who have an interest in art about, and with technology. And it's been running for over 20 years with different people at different times having done, more or less, the labour of that. So people like Jonah Booker-Cohen, Nicky Gogan, Ben Gaulon, Rachel O'Dwyer, Tim Redfern. At the moment, Aisling, Paul and I are the people who do most of that labour. So I suppose now, the hand is spinning and it's landing on us. It is quite a loose thing and it's changed a lot in its form. To some extent, we don't really have codified ways of working. What we do have and what is collective, is an interest in art about technology. Not totally, but we're quite ad hoc in the way we organize things. There is some consistency to what we're doing at the moment. Every month we have a structure, we have certain rules about trying to showcase and represent things in a certain way. But we really don't have a very organized and set identity because we ultimately don't want to be the owners of D.A.T.A. We just happen to be the people at the moment who are booking the venues. We constantly are asking at events 'who wants to propose a thing or who wants to do a thing?' Sometimes people have no time for doing that. Other times they do and they suggest something to present. So we have people either coming to us saying 'Oh I was at the D.A.T.A event or heard about it. I'd like to do something'. Equally, we spend some of our time thinking about it. It is very fluid, which is worth saying.", + "Technology": 0.18135119255972382, + "Art": 0.012476943192335166, + "Ireland": 0.1589442282004854, + "Organisation": 0.0708304121001281, + "Digital": 0.1898614238112788, + "Community": -0.00028798950751071466, + "Events": 0.09137171352189044, + "x": -0.7402577221288402, + "y": -2.929583095510114, + "sequence": 19 + }, + "20": { + "speaker": "Aisling", + "text": " I think each event informs the next one as well. If we do a fully visual based event, on the next one we might say 'actually, we haven't really done something on sound. Why don't we do all sound stuff and just book a PA' and then there's no projector, purely sound based. Then the next one we'd say okay, well, we've had it in NCAD a few times, or some institution, which is also amazing to have the space. But maybe we can move around the city and go to different places. So each one sort of informs the next which is cool because we learn something new from every one, and you cover a certain amount of ground with that and it lets us stay open to loads of different art forms and mediums", + "sequence": 20, + "Technology": -0.0104051828, + "Art": -0.0366583206, + "Ireland": 0.1041174605, + "Organisation": -0.0618989542, + "Digital": -0.102263853, + "Community": -0.0819249377, + "Events": 0.0309389066, + "x": -7.5100317, + "y": 0.81434876 + }, + "21": { + "speaker": "Tom", + "text": "Another thing I didn't say is that the current labour, as Ash said, booking speakers, finding a space, sourcing equipment, making a post or sending an email out, that's our labour of D.A.T.A. But really, most of the labour of D.A.T.A is people who are willing to talk about and share their work in public, and that's really important! So, the labour that we do is facilitation rather than organization. We facilitate, people come, and they decide how they want to present their work and what they want to present, and we hand that over to them. So actually, it's kind of incorrect of me to say that we're labourers because actually, that's not true.", + "sequence": 21, + "Technology": 0.0721498281, + "Art": 0.043167755, + "Ireland": 0.0399400778, + "Organisation": -0.011130278, + "Digital": -0.1000796631, + "Community": 0.0558424443, + "Events": 0.0361945443, + "x": -3.6836727, + "y": -2.0039957 + }, + "22": { + "speaker": "conceptNULL", + "text": "So would you say that's your recipe for how it's been running for so long, this ethos of 'no plan is the best plan', live from event to event?", + "Technology": 0.0372417905344202, + "Art": -0.04996489210557588, + "Ireland": 0.11678161944486995, + "Organisation": -0.05395296709065406, + "Digital": -0.04406366025839234, + "Community": 0.09795485680243525, + "Events": 0.11563566874345182, + "x": 0.86383701481346, + "y": -1.274986812596575, + "sequence": 22 + }, + "23": { + "speaker": "Paul", + "text": "I think Tom got it right, there has been many different forms, so this is the current form. In previous iterations, it was being held on a regular basis in the Science Gallery, that was a different way of doing it, so it's never been the same. It comes and goes in different waves and cycles. If you look back, it started in the Celtic Tiger years. Then you have the recession years and it kept going after the recession, but it wound down slowly, maturely. Then it was gone during the pandemic. So, you know, you can see different societal shifts framing it a bit as well.", + "sequence": 23, + "Technology": 0.2063950449, + "Art": -0.0079566753, + "Ireland": 0.0261195898, + "Organisation": -0.0568902865, + "Digital": 0.0557765253, + "Community": -0.0702795833, + "Events": -0.0525541604, + "x": -6.8712745, + "y": 5.5246935 + }, + "24": { + "speaker": "Tom", + "text": "Also there's something interesting about that time when D.A.T.A started and it came after other things like media house. That was quite an early time in what you might call 'new media art' as around then, technologies were much more open, and open to both. There was a bit of a crossover between people, artists in particular, and people working with technology at a maker level. You had people working on various kinds of tech, it was before even the term 'tech' was knocking around to the same extent. So I feel there was a different social alliance there. Now, I think we exist at a time which is more governed by big tech. A lot of these platforms shape a huge aspect of our life and they tend to be closed platforms. The role of a media artist is very much changed in that context. So in Dublin, for example, we have the headquarters of Google, Facebook, Apple, and all these companies. A huge amount of the economy of Ireland is driven by these industries, but we don't have a strong technology critical context. At least, not a really strong one for example in universities, there's no courses in-depthly looking at technology and society. There's lots of individual work and academics doing really great stuff. I'm not suggesting I'm an artist doing really great stuff around it, but I find it odd given our stance globally.", + "sequence": 24, + "Technology": 0.3389029205, + "Art": 0.078685388, + "Ireland": 0.0063394718, + "Organisation": 0.0521632507, + "Digital": 0.104183048, + "Community": 0.141213119, + "Events": 0.1326716542, + "x": 7.4344473, + "y": -4.266719 + }, + "25": { + "speaker": "Tom", + "text": "But that context has shaped a little bit the way we think about D.A.T.A. One of the things we really think about is that all the events should be kind of free. We've tried to make that the case. I think because the project is so closed, it's harder for there to be a type of a bedrock of people who are cracking it open. Certainly for me, one of the interests is trying to reproduce a community, not reproduce a particular community, but produce the context in which a community of technology-critical people can make work. I think in the past, there's been loads of really good work that was funded by tech companies. That was because it was in a different context. But at the moment, we'd be wary, of being connected with them in some way. Certainly I would. I imagine the others as well. So we want to make it as an outside space that doesn't think exists hugely in the city. Does that make sense?", + "sequence": 25, + "Technology": 0.315740943, + "Art": 0.0738474578, + "Ireland": -0.0072528864, + "Organisation": 0.1957291663, + "Digital": 0.0564189255, + "Community": 0.2250987291, + "Events": 0.1828210503, + "x": 10.166331, + "y": -4.234038 + }, + "26": { + "speaker": "Paul", + "text": "Yeah, I totally agree with everything Tom said. There needs to be this critical counterpoint to this dominant narrative which has permeated through Ireland over the last two decades. I'm not saying D.A.T.A is it, it's just one part of it. But it shouldn't just be it. As we all know, there's plenty of artists and academics who are doing critical work in that space. It's just over the last few years, my experience is that it's felt fragmented again because of things like post-recession, pandemic and the sorts, but it's great things are popping up again. Not just D.A.T.A obviously you guys and there's plenty of other stuff going on as well so yeah, it's cool", + "sequence": 26, + "Technology": 0.0797020346, + "Art": -0.0562076792, + "Ireland": 0.0089654382, + "Organisation": -0.1138406992, + "Digital": -0.0854954869, + "Community": -0.06913203, + "Events": -0.0782910734, + "x": -9.643759, + "y": 2.679666 + }, + "27": { + "speaker": "conceptNULL", + "text": "One thing I'm quite interested in is this idea of third space. The idea goes that your first space is your home, your second space is your work, and the third space is a public space which everyone has access to. Usually these spaces are, again, public and have a low cost barrier. So it should be free to go there or almost free to go there, very cheap, so that no classes of society are left out. These spaces are a place where ideas of society can flow freely. I think this is something that is lacking in Ireland a little bit. The pub is as close as we ever get to a third space. I think that's why pubs are so important in Ireland. But I think that's something I definitely would love to see, as you were saying, having a space where big data companies and people who work in these data companies might be in contact with artists and academics - a space where people can discuss freely about these things.", + "sequence": 27, + "Technology": 0.0766743869, + "Art": -0.0137213431, + "Ireland": -0.0479860455, + "Organisation": -0.0629578009, + "Digital": -0.1211640388, + "Community": -0.0713328645, + "Events": -0.0579777099, + "x": -10.787082, + "y": 2.2236953 + }, + "28": { + "speaker": "Aisling", + "text": "On the back of the mention of the pub, I had a realisation that a lot of the interesting conversations that come off the back of D.A.T.A are in the pub afterwards. Because a lot of the time after the event we would just choose the closest pub and if anyone wants to join, they're welcome. There's actually usually quite a big take up on that which is lovely because there's these remnants of criticality and thought left in people from the event but then when they have the freedom of just being in the pub, people get chatting about very interesting stuff. Sometimes tech related, sometimes not, sometimes art related, sometimes not, but I find it's very interesting to get people in a space and have people present ideas and new ways of thinking, but then to hold that space open for a little while longer after the event and allow the conversation to happen. I think for the speakers as well, because everything is for free and we don't get paid and we don't charge and the speakers don't get paid, it's important that they get something out of it themselves. That's why there's so much freedom in terms of what they can present. It's always what is most helpful for them. But I think the discussion is where the richness is.", + "sequence": 28, + "Technology": -0.0433107242, + "Art": -0.0415007174, + "Ireland": -0.0374554731, + "Organisation": -0.0276835449, + "Digital": -0.1165461987, + "Community": 0.0846315175, + "Events": 0.0723546743, + "x": -7.634373, + "y": -3.5644486 + }, + "29": { + "speaker": "Paul", + "text": "Just to kind of piggyback on that, just in terms of money, not paying or getting paid and context of labour. Something that we try our best to facilitate with this platform is a general feeling of hey, this is informal, don't stress, you don't have to spend loads of time on this, we'll take whatever you have, and basically be supportive or critical, like if needs be, but yeah an informal but sound setting. I think we're good at that.", + "Technology": -0.10493513042803825, + "Art": -0.08044306251691521, + "Ireland": -0.03782357424629945, + "Organisation": -0.06096151261689975, + "Digital": -0.15358969508884424, + "Community": 0.17618274558930405, + "Events": 0.1395687805789166, + "x": -6.168908928020086, + "y": -6.81224016493403, + "sequence": 29 + }, + "30": { + "speaker": "Tom", + "text": "So this idea of a third space or a public sphere is, of course, ideal but I think, Ash touched on it earlier about us moving around the city, through that we're aware that spaces aren't neutral at all. The pub for some people is a space that they're quite happy to have a chat in, others not. We had a couple of events in NCAD because they provided us with a space, which was great, but obviously it's an institution that a lot of people aren't comfortable with. Same with the institution of technology and technology-based art, historically, it has a very non-diverse bunch of people working in it. Art as an institution is the same. So we are quite aware of the failings of art, our own failings of running D.A.T.A, not that it's specifically on us to address that on our own, but it does make it hard to run events. For someone willing to give you a space for free that has a projector, is one thing. Another is it's very hard to find spaces that will reach beyond those limitations. Arguably, there is no space that isn't limited in some way in terms of access to certain people or certain groups. So I think the third space is a good idea and ideology but it's something that unfortunately, is hard to implement.", + "sequence": 30, + "Technology": -0.0007819735, + "Art": -0.0167045649, + "Ireland": -0.0584527403, + "Organisation": -0.000455897, + "Digital": -0.1184439659, + "Community": 0.0781031549, + "Events": 0.0304106176, + "x": -7.925726, + "y": -4.082867 + }, + "31": { + "speaker": "conceptNULL", + "text": "So what format do the events take? is it a consistent format in terms of.. is it presentations? Is it more of show and tell? Is it a mix mash? and has it changed over the years?", + "sequence": 31, + "Technology": 0.1154226363, + "Art": 0.0505468734, + "Ireland": 0.037162032, + "Organisation": 0.077987127, + "Digital": 0.0735651851, + "Community": 0.0023547336, + "Events": 0.2833886743, + "x": 4.292091, + "y": 0.31191784 + }, + "32": { + "speaker": "Paul", + "text": "I would say it's definitely changed, given that it's been going for 20 years. I wasn't at the first ones, I kind of came to D.A.T.A. around 2010 and there was Ben Gaulon who was running workshops and Rachel O'Dwyer. So yes, lots of different formats. There's lots of archival footage on the website as well which just shows people kind of turning up and with their work, whatever it was like an interactive piece, and just having fun with it. Tom, you probably came in earlier than 2010, were you?", + "sequence": 32, + "Technology": 0.1900036037, + "Art": -0.0428354219, + "Ireland": 0.1334884763, + "Organisation": -0.0274407212, + "Digital": 0.0815691054, + "Community": -0.0004831832, + "Events": 0.038051866, + "x": -2.2550645, + "y": 2.6557643 + }, + "33": { + "speaker": "Tom", + "text": "Kind of somewhere similar. Maybe 2008 or 2009. But yeah, I mean, it started in a pub as an open projector, so an open mic but screen-based and that's something we still do. The last one was a student open projector for undergraduate students around the country. It was mostly Dublin based students but one Limerick student also came. As mentioned earlier, we've done one with just sound presentations so I guess there is often a presentation-y type format, and I think that's daunting to people sometimes so we certainly always encourage it to be something other than that, and whether that's a screening or something like an interactive workshop, like I'm hopefully doing a workshop discussion thing at the next rather than just a presentation. So there isn't a strict format but often presentations. Which I get, because when people are pressed for time, easiest thing to do is to say 'here's the work'. And that's fine like, there's a reason presentations exist. They work.", + "sequence": 33, + "Technology": -0.0219321772, + "Art": 0.0516736209, + "Ireland": 0.060557764, + "Organisation": 0.162450701, + "Digital": -0.1133933812, + "Community": 0.1086513251, + "Events": 0.1392899156, + "x": -6.349522, + "y": -7.2391043 + }, + "34": { + "speaker": "Aisling", + "text": "So I'm obviously way more recent to D.A.T.A but I do find that the format of allowing people do what they want opens it up as well, because we're not saying you have to do a presentation. So even with the sound event that we did, someone did a live radio show and we had a live chat box going. That openness, letting people make the format work for themselves, opens it up to be new things, which I think is what's exciting. It also allows the community of presenters to have quite a strong influence in D.A.T.A and what it is and what the events are. I think that's nice. We enjoy allowing people decide what they're comfortable with [PAUL] I don't know about you guys, but I've had to do presentations before and it can be stressful and it takes time. So it's just nice to go do what you want. We'll make it work and we'll work with you.", + "sequence": 34, + "Technology": 0.0301229768, + "Art": -0.0299336743, + "Ireland": 0.0393990092, + "Organisation": -0.0825184509, + "Digital": -0.1034852564, + "Community": -0.0093505681, + "Events": 0.0564398281, + "x": -7.8410635, + "y": -0.3134022 + }, + "35": { + "speaker": "conceptNULL", + "text": "In your process of creating these events, what are the biggest difficulties that come your way, and how do you get over them?", + "sequence": 35, + "Technology": 0.0415959843, + "Art": -0.0149132358, + "Ireland": -0.0676915869, + "Organisation": 0.1369727403, + "Digital": -0.1290723383, + "Community": 0.0132778306, + "Events": 0.1025209799, + "x": -8.580907, + "y": -6.124051 + }, + "36": { + "speaker": "Tom", + "text": "Roping other people in a lot of the time, it's kind of a joke, but all of us are working in this area, and we all know people in this area, but we only know so many people. It would be much more interesting if that widened out beyond us into whole other sets of people doing whole other sets of things and while we really would like that to happen, the thing is everyone's really busy in the world, with pressure's like rent; people can't afford to live for their work. While people are always like, this is great, we'd really love to get involved, the practicalities are quite difficult. We also haven't always been great because we are ourselves quite busy, and we tried to institute a structure where we would meet the following week after an event. Especially recently, we've just been kind of up the walls, so we haven't always managed to do that. When you have been involved in a number of organizations, I think it's really important to have clear structures because it allows people to get involved. As we said at the start, we don't really have them. So, it's on us to also find ways to make it more open to other people to get involved. But, that also is a big job, and it takes a lot of labour to set up those systems. Also, the risk, because you don't know if you can build such a system. So it's a funny one.", + "sequence": 36, + "Technology": 0.0198384617, + "Art": 0.0060142493, + "Ireland": -0.0464651659, + "Organisation": -0.00542389, + "Digital": -0.1506244689, + "Community": 0.1301781833, + "Events": 0.0646481961, + "x": -7.202645, + "y": -4.764115 + }, + "37": { + "speaker": "Paul", + "text": "Yeah, I mean, I guess what Tom said, but I had just written money and time, and it's kind of crass you know, talking about money and time, and quantifying it. I guess time more so than money. Like Tom said, we're all busy. We're not making money out of this. It's not about money, but we've got to make money elsewhere.", + "sequence": 37, + "Technology": -0.1168898121, + "Art": -0.0339839682, + "Ireland": -0.1332846433, + "Organisation": -0.0504594222, + "Digital": -0.1407146752, + "Community": -0.0902514532, + "Events": -0.1207195967, + "x": -12.849203, + "y": -0.18915209 + }, + "38": { + "speaker": "Paul", + "text": "It's ensuring access and trying not to always take the easy way, but at the same time, trying not to make it too difficult. I think it's important as well. Time is a big, big, big factor. Even as Tom said, it would be nice to do things a certain way. We've tried to put in loose structures, but again, it's kind of hard to maintain them. For example, meeting the following week of an event, but one of us might have to do something.", + "sequence": 38, + "Technology": 0.0105584087, + "Art": -0.0847603679, + "Ireland": -0.07731428, + "Organisation": 0.1524886638, + "Digital": -0.1192948222, + "Community": -0.0237281285, + "Events": -0.0184380189, + "x": -9.798663, + "y": -5.685506 + }, + "39": { + "speaker": "conceptNULL", + "text": " As you said earlier, I think that's possibly the thing that has kept you going for so long. That over time, the needs or the possibilities of the members change, and therefore D.A.T.A changes and keeps itself going in that manner. I think that's a good thing, to be honest.", + "sequence": 39, + "Technology": 0.1784094572, + "Art": 0.0422811545, + "Ireland": 0.0277226791, + "Organisation": 0.1386207342, + "Digital": 0.0948825181, + "Community": 0.1990260482, + "Events": 0.1637868136, + "x": 11.144796, + "y": -3.3375642 + }, + "40": { + "speaker": "Aisling", + "text": "And I wonder also if.. maybe this could be a hot take, but if the lack of structure is potentially why it has lasted so long? If there was such a strong structure, you might begin to stop adhering to that, and then it begins to fall apart. You feel like you're not up to speed but I feel like even if we miss an event, in our next meeting we still kind of stick with like 'okay that fell through but we're going to keep going and we're going to plan for the next event'. For this one we're planning to do one at the end of the month, and then I think, we are still doing one at the end of the month..? I shouldn't have gotten into this...", + "sequence": 40, + "Technology": -0.0839504302, + "Art": -0.0968198776, + "Ireland": -0.0136202499, + "Organisation": 0.1255734116, + "Digital": -0.2256757915, + "Community": -0.0142062604, + "Events": 0.073444888, + "x": -10.429002, + "y": -4.998892 + }, + "41": { + "speaker": "conceptNULL", + "text": "I love the hot take though, and you're right, a type of space which thrives in disorganisation.", + "sequence": 41, + "Technology": 0.0777099282, + "Art": 0.0611422658, + "Ireland": 0.0115954047, + "Organisation": 0.0569533482, + "Digital": -0.110423401, + "Community": 0.0056139487, + "Events": 0.0207064953, + "x": -3.872421, + "y": -2.639733 + }, + "42": { + "speaker": "Paul", + "text": " Okay, maybe disorganization, maybe lack of commitment to organization due to time is good because we all know what it's like. The three of us are always in touch, we've got a WhatsApp group, Discord and email. So different messages are kind of pinging off about different things, more or less all the time, but then you know someone won't answer for a while and that's because that person's obviously busy and that could be me, and that's fine or they might pick up a different time, so it's a little bit chaotic but that's good as well. So I'm with Ash on the hot take there definitely.", + "sequence": 42, + "Technology": -0.0261055119, + "Art": -0.0370677225, + "Ireland": -0.0110555151, + "Organisation": -0.1093355715, + "Digital": -0.1893326044, + "Community": -0.0770493597, + "Events": -0.0722745806, + "x": -11.498349, + "y": -0.4016193 + }, + "43": { + "speaker": "Tom", + "text": "I know Paul and I are both, I'm not sure if you are into Critical Art Ensemble, but they wrote a lot about digital resistance and resistance to nomadic power, which is this thing of not having a structure because if you have a structure, ultimately you're going to be defeated by whatever neoliberalism forces, and power, and so on. They focus on theories around disability, and their ability to recombine all the time and pop up regardless of what happens. So, we can pretend we had totally theorized this over the years.", + "sequence": 43, + "Technology": -0.0081527159, + "Art": 0.0242494717, + "Ireland": -0.0013273302, + "Organisation": -0.0373520032, + "Digital": -0.073822841, + "Community": -0.1172466576, + "Events": -0.0619581342, + "x": -10.957805, + "y": 1.0386072 + }, + "44": { + "speaker": "Paul", + "text": "Yeah, by any means necessary. By any WhatsApp Discord channel necessary!", + "sequence": 44, + "Technology": 0.1676934063, + "Art": 0.120802775, + "Ireland": 0.0753270462, + "Organisation": -0.0146850534, + "Digital": 0.184404701, + "Community": 0.1563051939, + "Events": 0.0806205273, + "x": 7.4271894, + "y": -1.1288115 + }, + "45": { + "speaker": "conceptNULL", + "text": "One goes down, you have the other two.", + "sequence": 45, + "Technology": 0.0279477406, + "Art": 0.0090855379, + "Ireland": 0.1719368994, + "Organisation": 0.1079989374, + "Digital": 0.0936128199, + "Community": 0.0399963781, + "Events": 0.1668020338, + "x": 4.539073, + "y": 2.2762976 + }, + "46": { + "speaker": "Aisling", + "text": "That kind of idea that D.A.T.A never dies. I think one of you said that to me pretty soon after I joined you, 'D.A.T.A never dies. It just went to sleep for a while'. The idea that even if there's some form of lack of engagement, it's because there's no solid structure and it's not a space that we're renting that we need to continuously pay for and upkeep. There's actually always something to pick back up because it's just an idea at the end of the day.", + "sequence": 46, + "Technology": 0.0475997664, + "Art": 0.016848091, + "Ireland": 0.1028159857, + "Organisation": -0.0508093238, + "Digital": -0.0483692065, + "Community": -0.0481552593, + "Events": 0.0173090138, + "x": -6.2378697, + "y": 1.158635 + }, + "47": { + "speaker": "Paul", + "text": "Even that kind of drifting off... but as you might know, Jonah Brucker-Cohen and Nicky Gogan set it up 20 years ago, along with Tim Redfern, Rachel O\u00e2\u20ac\u2122 Dwyer, Ben Gaulon, and all of the other people we're not mentioning, we are still in some way, shape or form in touch with them. So, without getting too much into it, Tom, I know myself knew, and Rachel were emailing the other day about something. Ben, and Aisling, I know for the summer you're going to be over there in that kind of world. Jonah's in touch with me about web site related stuff. They haven't been around here for years, but those people in the past still care about it. And we're still like in touch with them. So, you know, if you look at it, it's kind of quiet, but we're all still chatting away.", + "sequence": 47, + "Technology": 0.0367595926, + "Art": -0.1542481482, + "Ireland": 0.0794157833, + "Organisation": -0.091669865, + "Digital": -0.0913265198, + "Community": -0.0404306054, + "Events": -0.0744722188, + "x": -8.542198, + "y": 2.0854943 + }, + "48": { + "speaker": "Tom", + "text": "I mean, I think it goes back to that thing that was mentioned at the very start. Whether, you are a collective or whatever, it's all a bunch of people who are interested in the same thing. So that, broadly speaking, if you look back over it like your work, whenever you look back at it, you're like, Oh, I've been doing the same thing forever. So people tend to be interested in it. Their interest tends to stick around for a while. So we did the D.A.T.A 20 event in October last year, which was the 20th anniversary of D.A.T.A. A lot of the same people who'd been at the first one were there because there's still interest in technology and they're still interested in how it impacts in the world, and they're also making art about it. So I think that's one of the reasons it persists.", + "sequence": 48, + "Technology": 0.0777643323, + "Art": -0.0206213053, + "Ireland": 0.0710924193, + "Organisation": 0.0994318575, + "Digital": 0.0627220422, + "Community": 0.0697718933, + "Events": 0.0076868022, + "x": -0.0086771, + "y": 1.4574904 + }, + "49": { + "speaker": "Paul", + "text": "Yeah. And there was people there who were possibly not born when D.A.T.A begun. How cool is that?", + "sequence": 49, + "Technology": 0.2900774479, + "Art": 0.0590181388, + "Ireland": 0.1426964253, + "Organisation": -0.0790828764, + "Digital": 0.145046562, + "Community": 0.1154695749, + "Events": 0.1147556603, + "x": 6.3702087, + "y": -2.6190917 + }, + "50": { + "speaker": "Paul", + "text": "So cool. And again, the 20, I think there's was a question about highlights? That was definitely one. Because we got a lot of artists to come together, which gave up their time, and labour to present. We had Jonah on a call from New York, Nicky was in Spain, Ben was in France. So they all tuned in at one point. Then we had new artists who had never presented or shown their work in public before. Sorry, I'm bigging us up here but it was really nice, for me anyway, it was like 'ah yeah, okay! this is why we're doing it' you know?", + "sequence": 50, + "Technology": 0.0486630648, + "Art": 0.0279255155, + "Ireland": 0.0807128251, + "Organisation": -0.0036019301, + "Digital": 0.0505030826, + "Community": 0.0459861159, + "Events": -0.0928061306, + "x": -4.0518575, + "y": 3.4952278 + }, + "51": { + "speaker": "Aisling", + "text": " Yeah, I think that was also a really important one for me to have experienced, I felt very privileged to have been able to experience it because I was so new to it at that point. But I remember one of them saying, I think it was either Nicky or Ben, they said something that completely stuck with me the whole time,'focus on the people in the room'. Whether it's to do with my age and my generation, there's such an idea of just growth and getting more people. You want to sell out events, and you want everybody to know. It's all very clout based and it was such a refreshing thing to hear from someone who started something 20 years ago that I was now part of, that even if there's a load of empty seats, there's people here interested and that type of engagement is so much more valuable than having a packed out room for the sake of it. I think that was a really important message.", + "sequence": 51, + "Technology": 0.1034350172, + "Art": -0.0403258502, + "Ireland": 0.0106713083, + "Organisation": 0.0709014535, + "Digital": -0.085343495, + "Community": 0.1685914695, + "Events": 0.0716652125, + "x": -3.298498, + "y": -6.560659 + }, + "52": { + "speaker": "Paul", + "text": "Ben would have done a lot of workshops and stuff, and when trying to promote it, I think the way he put it was you know at first he was always worried about how many people would turn up, and then he learned to stop worrying about how many people turn up and just as Ash says - focus on the people who have turned up, make them your world - really wise words.", + "sequence": 52, + "Technology": -0.0065235449, + "Art": 0.0003651436, + "Ireland": -0.0299346708, + "Organisation": -0.0021288972, + "Digital": -0.2577835917, + "Community": 0.002510434, + "Events": -0.0625007451, + "x": -11.378324, + "y": -1.9598967 + }, + "53": { + "speaker": "conceptNULL", + "text": " Especially if you have all these people who have shown to be active, engaging in what you've done. As Ash was saying, even having one person be active is better than a thousand, where its a sold out show and everyone's on their phone. If you don't have the one person actually engaging and caring about what you do. I think that's the really nice thing to see. Community is really the most important thing. It seems to be at the heart of D.A.T.A as well. I might throw in another question here, it might be a little bit related to what you've just said as well. How have you found, if at all, that the landscape of digital art and technology have changed over the course of D.A.T.A? Everyone's obviously got a different time frame here. But if you have noticed a difference, and especially these people coming back in, what would you feel has changed most?", + "sequence": 53, + "Technology": 0.0778600052, + "Art": -0.0212756377, + "Ireland": 0.0228841212, + "Organisation": -0.010734912, + "Digital": -0.0730546266, + "Community": 0.2198007703, + "Events": 0.0318261683, + "x": -3.712961, + "y": -7.372546 + }, + "54": { + "speaker": "Tom", + "text": "Well, I mean, I touched on it a bit earlier, but this topic around technology and its accessibility. So even now, we're making work around things like AI, but it's really at a kind of a input output level. I know that's in the nature of AI a little bit, but it's a bit of a black box and it's much harder. A lot of technologies nowadays, they're not really based so much around, say, algorithms, they're much more based on things like data. That's not something, if you open source it, that you can actually reproduce. So as an artist, you can't necessarily reproduce a training set. So I think there's something in technology over the last 20 years that specifically with technology in terms of digital code-based technology, it's where they've become a bit less accessible. I think a lot about social media, and social media art. 10 years ago might've been at the peak of it or a little bit more recently than that. Now I teach in a college and very few of my students make work by social media, even though it's probably one of the biggest shaping forces in their life. That's really interesting that it's become almost invisible in a way.", + "sequence": 54, + "Technology": 0.3711454272, + "Art": 0.0705944821, + "Ireland": 0.0986962616, + "Organisation": 0.071710676, + "Digital": 0.1117110625, + "Community": 0.0515113883, + "Events": 0.0727614015, + "x": 6.5542226, + "y": -4.6796875 + }, + "55": { + "speaker": "conceptNULL", + "text": "What do you mean social media? Do you mean they post pictures or like they make artwork and post it on their social media? Are their works concerned with the topic of social media?", + "sequence": 55, + "Technology": 0.1292795092, + "Art": 0.4306221008, + "Ireland": -0.0452899486, + "Organisation": 0.0548152216, + "Digital": 0.2533343434, + "Community": 0.1886698604, + "Events": 0.2013403326, + "x": 9.681247, + "y": -2.0745218 + }, + "56": { + "speaker": "Tom", + "text": "Yeah, I mean, there's not so much work concerned with like critical or critiquing social media as I would expect it to be, and I don't mean this as a criticism of the students. It's more about the technology and it's disappearance. I think because people talk about infrastructure, as in infrastructure is only something you know notice when it breaks and maybe things such as social media have become infrastructural, so that we don't see them anymore. I also think that that's a really interesting thing about technology and it really makes it dangerous. I know Paul will probably come on in just a minute because there's a whole pile of artwork where its focus is making infrastructure visible as it's a shaping force in our lives, and whether that's like Paul who works on infrastructure; but obviously there's the whole histories of STS; looking at the unequal provision of services and services which shape our possibilities and so on. So, that's one thing I think for sure that's happened. I also think as technology has grown in terms of its capacity there became of course a focus on things like 4k, and now 8k. We're hopefully doing an event with this festival in Canada and Ireland called the Small File Media festival, which questions that idea of like more, more, more. I think that's something that also used to be the case, where people could only make a video that was like this many pixels. So you always went to as big as you could be, but now the technology is so capable, but also we've realized the kind of environmental cost, and the material costs of that. So people are beginning to say, oh yeah, maybe this kind of limitless horizon idea is no longer valid.", + "sequence": 56, + "Technology": 0.1506432593, + "Art": -0.0413450561, + "Ireland": -0.0806576982, + "Organisation": -0.1692917645, + "Digital": -0.0512232706, + "Community": -0.0450435579, + "Events": 0.0065543763, + "x": -10.848571, + "y": 4.939463 + }, + "57": { + "speaker": "conceptNULL", + "text": "Big time. I think it also similar to what you're saying about AI. Technological art suffers the novelty aspect, much more than other art forms, where as soon as something new comes out, every tech artist seems to have to have a piece coming out with it, even though it's like, why? You have to try and jump onto the next thing to stay relevant. But that's often also in the social media aspect as well. Yeah. Paul, anything to say?", + "sequence": 57, + "Technology": 0.2913823128, + "Art": 0.084133938, + "Ireland": -0.0609072149, + "Organisation": 0.0124704689, + "Digital": 0.0266917683, + "Community": 0.0321976878, + "Events": 0.0474276915, + "x": 3.1380155, + "y": -5.2062187 + }, + "58": { + "speaker": "Paul", + "text": "I mean, I guess unavoidably so. We kind of touched on it in different ways already. I mean, it's a 20 year span. When it began, it was in the beginning of the Celtic Tiger. As Tom alluded to, there was of a lot more good vibes about technology. But to be real, we've had Edward Snowden's revelations, although not too much has changed and so on. So the honeymoon period has worn off. You can even see that in relation to Ireland over the last few years, you kind of have this dominant Silicon Docks narrative. Now there's greater criticality, which is more accessible to the public. We're seeing it specifically in language, like around data centers, obviously corporate tax rate, you know, we had it with Apple and so on and so forth, and it's changing. On the subject of infrastructure, I was down in Grand Canal Dock last night and Meta have gone. It's weird, they're not in offices anymore, they're no longer in Grand Canal Dock. So, you know, shit's changed, excuse my language. Things are changing. And obviously, artwork is changing to reflect that, I would guess.", + "sequence": 58, + "Technology": 0.149878785, + "Art": -0.0513828471, + "Ireland": 0.1004690826, + "Organisation": -0.0801849365, + "Digital": 0.1002532914, + "Community": -0.0208189785, + "Events": -0.0890083238, + "x": -5.463541, + "y": 5.401068 + }, + "59": { + "speaker": "Aisling", + "text": "I guess just the idea of actually growing up with technology as opposed to it being a new thing that enters your life. I can't know what it would be like to not have the internet, and I feel like maybe as D.A.T.A. has progressed, technology is becoming more and more ingrained in people's lives. So kind of touching on what you said, Tom, about your students maybe not making work about it, is maybe because of that kind of invisibility aspect of it, it's so ingrained that they can't really imagine their life without it. I guess when you can't imagine that, the need for questioning maybe feels even less. I think the opposite. I think if you feel like you can't do without something, there's probably need to question it even more. It's probably a generational thing. The fact that since D.A.T.A has been around so long, it's probably almost accidentally mapping how people are reacting to the development of technology.", + "sequence": 59, + "Technology": 0.3077362478, + "Art": -0.0116020245, + "Ireland": -0.0172153711, + "Organisation": -0.0341287479, + "Digital": 0.0727612749, + "Community": 0.0238857828, + "Events": 0.0020487113, + "x": 3.898569, + "y": -5.5068564 + }, + "60": { + "speaker": "Tom", + "text": "At a practical level, almost any of the media formats that would have been presented with D.A.T.A. 01 are no longer existing, you know?", + "sequence": 60, + "Technology": 0.2367161065, + "Art": 0.1312916428, + "Ireland": 0.1383283436, + "Organisation": 0.0005392544, + "Digital": 0.2366013229, + "Community": 0.140742451, + "Events": 0.1477493793, + "x": 8.9072075, + "y": 0.08552996 + }, + "61": { + "speaker": "conceptNULL", + "text": "I think I saw in one of the pictures that a PS2 EyeToy or something. I just want to know what the hell was done with that. Even though it's just a camera, but it's just such a relic of past technology. For people who grew up around that time, they'll remember it.", + "sequence": 61, + "Technology": 0.1510233879, + "Art": 0.0460289679, + "Ireland": -0.0792539269, + "Organisation": -0.0560083836, + "Digital": 0.0923430994, + "Community": -0.0605378002, + "Events": 0.1123228744, + "x": 1.7623355, + "y": -4.00422 + }, + "62": { + "speaker": "Tom", + "text": "And maybe younger people look at it and be like, what the fuck is that? Also, one of the very first videos of D.A.T.A and someone making a drum machine on a Game Boy.", + "sequence": 62, + "Technology": 0.2151622325, + "Art": -0.0524834879, + "Ireland": -0.0006950786, + "Organisation": -0.1162670255, + "Digital": 0.0749197453, + "Community": -0.0758163631, + "Events": -0.0673014075, + "x": -6.7649913, + "y": 6.1131377 + }, + "63": { + "speaker": "conceptNULL", + "text": "So what's D.A.T.A. going to be in 5 years?", + "sequence": 63, + "Technology": 0.2151622325, + "Art": -0.0524834879, + "Ireland": -0.0006950786, + "Organisation": -0.1162670255, + "Digital": 0.0749197453, + "Community": -0.0758163631, + "Events": -0.0673014075, + "x": -6.7649913, + "y": 6.1131377 + }, + "64": { + "speaker": "Aisling", + "text": "'What's D.A.T.A. going to be next month?' is the question!", + "sequence": 64, + "Technology": 0.1767930984, + "Art": 0.1416885406, + "Ireland": 0.0607128851, + "Organisation": 0.046301946, + "Digital": 0.257338196, + "Community": 0.1539206505, + "Events": 0.2164798826, + "x": 9.577702, + "y": -0.6451263 + }, + "65": { + "speaker": "Tom", + "text": "I mean, for other people to be having this conversation would be great, I think, and that's not because I'm lazy, but ultimately, as it's been touched upon, the idea that it would just continually change would be good.", + "sequence": 65, + "Technology": -0.0204928964, + "Art": -0.0391997248, + "Ireland": 0.0354682207, + "Organisation": 0.0042332169, + "Digital": -0.0485101715, + "Community": 0.0739278048, + "Events": 0.0443246439, + "x": -6.2536964, + "y": -3.006455 + }, + "66": { + "speaker": "Paul", + "text": " Yeah, other people involved, still going, you know, because there's always going to be a need for it. Maybe other things will come along, and that's fine as well. We were saying it last year around the 20th anniversary, if D.A.T.A does go back asleep, that's fine, there's no shame in that, something else might come along. One thing I did when I was looking at that question, and this is my own little wish list - I have a dream that there will be an independent physical place/studio/gallery for this kind of work, an independent one. One that would get a shitload of funding from - pick your big tech company - that want to get in on the action. Something small and grassroots. I'm not talking about Dublin, it could be Limerick it could be Mayo, I don't care. It would just be great to see it happen somewhere for people to go but somewhere for people internationally to for residencies and stuff. I know there was a question about inspiration and other organisations. As I said at the beginning, there's lots of brilliant stuff going on here as well. But there's places like Furtherfield in London, there's like NeMe in Limassol, Cyprus, Obviously slightly bigger ones like Transmediale, well, that's a festival as such. But, there are all of these other great spaces and events in Europe that are very much community orientated, if I could say that. So we have that, you have that, not just D.A.T.A, but you guys and everyone else is doing really great stuff, but it would be just nice to have a gallery/studio space.", + "sequence": 66, + "Technology": 0.0185112264, + "Art": -0.0524331816, + "Ireland": 0.073639676, + "Organisation": -0.1026906967, + "Digital": -0.1063778698, + "Community": -0.039320834, + "Events": 0.0182411503, + "x": -8.154863, + "y": 0.6175567 + }, + "67": { + "speaker": "conceptNULL", + "text": "I think this is also one of the problems with ConceptNULL and in the end why we shelved a lot of the events was because it just was so hard to find a space. All the spaces were ill fit or needed lots of work and were expensive or didn't have insurance and in the end, it just kind of breaks you down so much that you're just like, I can't keep doing this at a consistent level. As you've shown, consistency in whatever time frame it is, is the key to anything standing on its own two legs. I think definitely a space, a media space, whether that be in Dublin or wherever in the country, would be absolutely amazing.", + "sequence": 67, + "Technology": -0.0746586025, + "Art": -0.0019416288, + "Ireland": -0.0455278493, + "Organisation": -0.0840799063, + "Digital": -0.1288158596, + "Community": -0.0920977145, + "Events": -0.0561002456, + "x": -11.911842, + "y": 0.2337793 + }, + "68": { + "speaker": "Paul", + "text": " Maybe a big monorail around the whole country to connect us to it?", + "sequence": 68, + "Technology": 0.080361858, + "Art": 0.1329458654, + "Ireland": -0.0324952304, + "Organisation": 0.213199079, + "Digital": 0.1294657141, + "Community": 0.1692872047, + "Events": 0.061405994, + "x": 12.117555, + "y": -4.37463 + }, + "69": { + "speaker": "Aisling", + "text": "So you said Meta were out. Do you know what they're doing with the offices?", + "sequence": 69, + "Technology": 0.1011168137, + "Art": 0.1274570078, + "Ireland": -0.034935873, + "Organisation": 0.0348453596, + "Digital": 0.0768957064, + "Community": 0.034224838, + "Events": 0.054662846, + "x": 1.8941096, + "y": -2.630803 + }, + "70": { + "speaker": "Paul", + "text": "Occupy the building formerly known as Meta!", + "sequence": 70, + "Technology": 0.1294448674, + "Art": 0.0944697857, + "Ireland": 0.1819471419, + "Organisation": 0.114275977, + "Digital": 0.0095281601, + "Community": 0.0399985164, + "Events": 0.0517119989, + "x": 2.3166137, + "y": 2.3905282 + }, + "71": { + "speaker": "conceptNULL", + "text": "Do you have any things that were crazy or wild that happened at any particular presentation or a fond memory or anything where you're like, fuck, that was crazy, or particularly memorable in any kind of way?", + "sequence": 71, + "Technology": 0.1369611174, + "Art": 0.0814848095, + "Ireland": 0.0216420982, + "Organisation": -0.0695264563, + "Digital": -0.0386752822, + "Community": 0.0642645732, + "Events": 0.124920778, + "x": -0.71532166, + "y": -2.0725336 + }, + "72": { + "speaker": "Paul", + "text": "I have to say I've been pretty good at D.A.T.A events because I just tend to be wrecked after them or something. But the first one, the reboot and A4 sounds. There's a story, but I ain't telling it. Nothing bad. It was the pints and the post pints part. It was really good fun. Yeah. I don't know. I'll turn it over to Ash.", + "sequence": 72, + "Technology": 0.100439705, + "Art": 0.028291354, + "Ireland": 0.0863581449, + "Organisation": -0.0436743014, + "Digital": -0.0279713105, + "Community": 0.0319302902, + "Events": 0.1159951836, + "x": -0.9651897, + "y": -0.5808797 + }, + "73": { + "speaker": "Aisling", + "text": "Come on, Tom. Any juicy goss?", + "sequence": 73, + "Technology": 0.1926791668, + "Art": 0.0625333637, + "Ireland": 0.0112874182, + "Organisation": -0.0349868089, + "Digital": 0.1161818206, + "Community": 0.1037125736, + "Events": 0.0868525729, + "x": 4.4809065, + "y": -2.5383754 + }, + "74": { + "speaker": "Tom", + "text": "What about that time that Hito Steyerl and Pierre Huyghe were doing Poppers in the jacks? Other than that, I can't remember anything, really.", + "sequence": 74, + "Technology": 0.0824231356, + "Art": 0.0872747079, + "Ireland": 0.1051096171, + "Organisation": -0.0881358683, + "Digital": 0.0578710809, + "Community": -0.031726677, + "Events": 0.0790343136, + "x": -0.449625, + "y": 4.8332872 + }, + "75": { + "speaker": "Paul", + "text": "Ash, what about you?", + "sequence": 75, + "Technology": 0.1146477312, + "Art": 0.082764402, + "Ireland": 0.115177691, + "Organisation": -0.0544062182, + "Digital": 0.1423431188, + "Community": 0.1381556094, + "Events": 0.1457612813, + "x": 6.695937, + "y": -0.20215023 + }, + "76": { + "speaker": "Aisling", + "text": "I don't know. I don't think we've had too crazy events, have we, since I've joined?", + "sequence": 76, + "Technology": 0.0852425694, + "Art": -0.0646851957, + "Ireland": 0.1262159795, + "Organisation": -0.0062548006, + "Digital": -0.0172476918, + "Community": 0.0520334542, + "Events": 0.1355265379, + "x": -1.4334855, + "y": 0.31949866 + }, + "77": { + "speaker": "Paul", + "text": "Yeah, we're going to have to open up our session game.", + "sequence": 77, + "Technology": 0.0764770359, + "Art": 0.0797454342, + "Ireland": 0.0965738669, + "Organisation": 0.3597000241, + "Digital": 0.0499910414, + "Community": 0.143071413, + "Events": 0.1978592128, + "x": 14.395142, + "y": -2.2512136 + }, + "78": { + "speaker": "Aisling", + "text": " Yeah, I think we need to reassess, when the craziest thing is driving a table home to Tom's in the snow. I think we need to do something.", + "sequence": 78, + "Technology": 0.0190062039, + "Art": 0.0161101762, + "Ireland": 0.0006978996, + "Organisation": -0.0027898978, + "Digital": -0.0699140579, + "Community": -0.0352349803, + "Events": -0.0917340815, + "x": -10.200551, + "y": 0.88504446 + }, + "79": { + "speaker": "Paul", + "text": "The crazy, or the opposite, the uncrazy, because we had an event down at the Electric Picnic and it was on at 5pm the Sunday, like the worst time, but like nice to be there. So I went down on this Sunday and it was over at six and I think I was on the train in Stradballey by like quarter to seven. I was just like, get me the hell out of here.", + "sequence": 79, + "Technology": 0.0084991939, + "Art": -0.0002004765, + "Ireland": 0.0176069718, + "Organisation": -0.0186302923, + "Digital": -0.0125064068, + "Community": 0.0653342828, + "Events": 0.0667021275, + "x": -5.528774, + "y": -2.7500474 + }, + "80": { + "speaker": "Aisling", + "text": "Just since you mentioned it, at our event at Electric Picnic, we were there chatting about AI and all the ethics and everything in it and from the background there's just like 'UNCE UNCE UNCE' - the spill from the other tents. But I was very grateful for the few people that were deciding to be at our talk about AI at five o'clock on Sunday at Electric Picnic", + "sequence": 80, + "Technology": -0.0703718439, + "Art": -0.0889716893, + "Ireland": -0.0819084346, + "Organisation": -0.064448826, + "Digital": -0.1677710116, + "Community": 0.0629580319, + "Events": -0.02875988, + "x": -9.608776, + "y": -2.8553367 + }, + "81": { + "speaker": "conceptNULL", + "text": "You can see one person at the front just completely panned out.", + "sequence": 81, + "Technology": 0.1560747772, + "Art": 0.0970608369, + "Ireland": 0.033200331, + "Organisation": 0.0438271128, + "Digital": 0.0396155529, + "Community": 0.0518235527, + "Events": 0.0828519017, + "x": 2.0010345, + "y": -1.8103894 + }, + "82": { + "speaker": "Aisling", + "text": "Oh yeah, some people were just absolute stragglers who wanted to sit down for a while. Got more than they bargained for.", + "sequence": 82, + "Technology": -0.1220484078, + "Art": 0.0519647002, + "Ireland": 0.0435543172, + "Organisation": -0.0625110865, + "Digital": -0.0593193993, + "Community": 0.0376594961, + "Events": -0.0042805318, + "x": -7.0600023, + "y": -1.6032693 + }, + "83": { + "speaker": "conceptNULL", + "text": "If you could get one place to do a D.A.T.A event, where would it be?", + "sequence": 83, + "Technology": 0.1550737917, + "Art": 0.1002990305, + "Ireland": 0.2797958851, + "Organisation": -0.0469782688, + "Digital": 0.0319193937, + "Community": 0.0420073159, + "Events": 0.1831197441, + "x": 5.5027485, + "y": 5.182532 + }, + "84": { + "speaker": "Tom", + "text": "We could use it for our upcoming D.A.T.A event in October. There you go, Complex Gallery! Also my favourite building was actually knocked down to make way for a Google building, the old Boland's Mill, and now it's the new Google Apartments. So maybe doing something with one of those apartments would be kind of cool.", + "sequence": 84, + "Technology": 0.2232721746, + "Art": 0.1641711593, + "Ireland": 0.0494637452, + "Organisation": 0.0808515549, + "Digital": 0.1303915679, + "Community": 0.1385353953, + "Events": 0.1001276597, + "x": 8.181175, + "y": -2.5248132 + }, + "85": { + "speaker": "Paul", + "text": "That'd be amazing. Yeah, maybe Valencia Island. That would be nice. But also, and I know we've talked about it, I'm going to say Moor Street because it's where I know some phone repair shops that are of big interest and it would be really nice to do a D.A.T.A event within the context of repair culture or something like that. We have kind of mentioned that in one of our many chats. Ash, over to you.", + "sequence": 85, + "Technology": 0.1674370915, + "Art": 0.0618523099, + "Ireland": -0.0105948979, + "Organisation": 0.0550721586, + "Digital": -0.0477576889, + "Community": 0.1122504696, + "Events": 0.0739857256, + "x": -1.0024674, + "y": -5.1136184 + }, + "86": { + "speaker": "Aisling", + "text": "No, I was just back on the islands thing, like not in a building. A big audio walk tour in the middle of nowhere. Somewhere in nature. That would be nice.", + "sequence": 86, + "Technology": 0.0581802391, + "Art": 0.0640764236, + "Ireland": 0.1700389236, + "Organisation": -0.0467775315, + "Digital": -0.0332324542, + "Community": 0.1016450375, + "Events": 0.0876181796, + "x": 2.1143217, + "y": 4.7104464 + }, + "87": { + "speaker": "Tom", + "text": "Maybe that place in Colorado, is it Colorado? Wisconsin, where there are no electronic signals? Would be kind of nice to do something there.", + "sequence": 87, + "Technology": 0.0628995746, + "Art": 0.0495181754, + "Ireland": 0.0585073568, + "Organisation": -0.0462561175, + "Digital": 0.0106730834, + "Community": 0.0707378387, + "Events": 0.0229896009, + "x": -2.8041816, + "y": -0.17871359 + }, + "88": { + "speaker": "Tom", + "text": "Yeah, Ballycroy in Mayo is a similar spot. Yeah.", + "sequence": 88, + "Technology": 0.0308422539, + "Art": 0.0534070916, + "Ireland": 0.2139565647, + "Organisation": 0.2473538369, + "Digital": 0.0027028266, + "Community": 0.1258111, + "Events": 0.1327510178, + "x": 14.532128, + "y": -3.1641135 + }, + "89": { + "speaker": "conceptNULL", + "text": "If I walk down to my field in Clare man I'll have that. That works as well if you want to come here and do it. All right. I feel like we should probably wrap it up because we still have to transcribe all this, as much as I'm loving all this conversation. But maybe we can have another conversation at some point anyway. We can talk about some sort of events or something maybe we could do together. Maybe some sort of collaborative thing. I think I'd enjoy that.", + "sequence": 89, + "Technology": 0.0185805149, + "Art": -0.0422833562, + "Ireland": -0.0019574021, + "Organisation": 0.0427509621, + "Digital": -0.0608809143, + "Community": 0.0492794663, + "Events": 0.126662761, + "x": -5.407543, + "y": -4.268926 + }, + "90": { + "speaker": "Paul", + "text": "Yeah. I think that would be really, really good. Then also, just again, I know we're up here. We're kind of Dublin-centric. But if anyone just comes on your radar who you think might like the opportunity to present, let them know. If it's not going to be a massive effort, we will make it happen. It might take us a bit of time, but we will. If it's you guys, whatever you're doing in your own practice, or even if you want to come along and just present what it is you're doing now at the moment, we'll make it work.", + "sequence": 90, + "Technology": 0.1207714155, + "Art": 0.0669942722, + "Ireland": 0.0947911888, + "Organisation": 0.0920387134, + "Digital": 0.0457230359, + "Community": -0.018134255, + "Events": 0.0473377556, + "x": 1.4687567, + "y": 0.7860516 + }, + "91": { + "speaker": "conceptNULL", + "text": "Absolutely. We'd love to do that. I feel like I'm gathering a lot of knowledge that I'd like to talk about, and also talking to you has been really interesting in terms of community and collective building. Maybe not the right words, but how to actually tie people together who are all doing the same thing. Especially in the time of the internet when it's seemingly so easy, but sometimes it can be so easy to also be disconnected with things.", + "sequence": 91, + "Technology": 0.1138495132, + "Art": -0.0093062483, + "Ireland": 0.0189237073, + "Organisation": 0.100193575, + "Digital": -0.0398513451, + "Community": 0.2115151733, + "Events": 0.0891289711, + "x": -2.7378263, + "y": -6.948479 + }, + "92": { + "speaker": "Tom", + "text": "Since we're talking specifically about community building technology, it could work. Going back to what we talked about, it's not about super polished presentations. It can be like, 'here's what we've been doing with concept null'. We're not really sure where we're going with it yet, but we can tease it out, because what I'm going to be talking about is this idea for a listing website. And basically, it's kind of similar, right? I want to do a workshop about how a decentralized listing site could work. So it would good to have some you there for the after discussions.", + "sequence": 92, + "Technology": 0.2068860084, + "Art": 0.0256706234, + "Ireland": -0.094320491, + "Organisation": -0.0274016764, + "Digital": -0.0702403039, + "Community": 0.0325928815, + "Events": 0.0524595082, + "x": 0.39177582, + "y": -4.957529 + }, + "93": { + "speaker": "conceptNULL", + "text": "Cool, yeah. So what's the decentralized listing? Of like web pages or of actual physical spaces?", + "sequence": 93, + "Technology": 0.2151434124, + "Art": 0.1942465752, + "Ireland": 0.0708830357, + "Organisation": 0.0214069746, + "Digital": 0.1399711967, + "Community": 0.1345408559, + "Events": 0.209859997, + "x": 8.747507, + "y": -1.3653961 + }, + "94": { + "speaker": "Tom", + "text": "Yeah, so just of stuff that's happening. So again, moving away from finding out about stuff on social media. But having a site that's an infrastructure that different people can use. So for example, Concept Null events can all be on it and you can find them if you're looking up Concept Null, but the local Badminton club could also be using it and their events would be on it. If you wanted to see both, you'd see both. If you only wanted to see one, you'd only see one.", + "sequence": 94, + "Technology": 0.1000205129, + "Art": 0.001793731, + "Ireland": -0.0602570884, + "Organisation": -0.0997958332, + "Digital": -0.0092524653, + "Community": 0.08296749, + "Events": 0.0821593404, + "x": -1.3062904, + "y": -3.1628788 + }, + "95": { + "speaker": "conceptNULL", + "text": "Interesting. Some of our friends were trying to build the same kind of idea as a site, but it was based on blockchain. I don't know if that's the same idea of decentralization, but its an events page and their tickets were basically put on a blockchain so that you couldn't tout tickets. Not exactly the same thing, but it was definitely the same vein of trying to get away from social media events. You know, Facebook events was the biggest thing for Facebook. It was the handiest thing ever! So easy to make an event and invite people. That's the one thing I still mourn with Facebook gone.", + "sequence": 95, + "Technology": 0.0234699342, + "Art": 0.0629973412, + "Ireland": -0.0204334836, + "Organisation": 0.0397511125, + "Digital": -0.0135349855, + "Community": 0.1521802843, + "Events": 0.1606983542, + "x": -5.0041413, + "y": -6.1404233 + }, + "96": { + "speaker": "Aisling", + "text": "Who were your friends that were trying to build it?", + "sequence": 96, + "Technology": 0.137083739, + "Art": 0.0872242451, + "Ireland": 0.0933372229, + "Organisation": 0.1185161248, + "Digital": 0.0105665661, + "Community": 0.2936511934, + "Events": 0.1733222902, + "x": 11.895587, + "y": -2.3727713 + }, + "97": { + "speaker": "conceptNULL", + "text": "It was actually your brother and Colin and Colm. I thought you knew this?", + "sequence": 97, + "Technology": 0.0347195491, + "Art": -0.0077758338, + "Ireland": 0.0764258355, + "Organisation": -0.0054918472, + "Digital": 0.0809376836, + "Community": 0.0066082031, + "Events": -0.0860975683, + "x": -4.302978, + "y": 3.7756934 + }, + "98": { + "speaker": "Aisling", + "text": "Ahh that one, yeah. Yeah, yeah, yeah. Yeah, I know what you're talking about.", + "sequence": 98, + "Technology": 0.139710471, + "Art": 0.1191093698, + "Ireland": 0.1406740248, + "Organisation": 0.2392685711, + "Digital": 0.1039162874, + "Community": 0.2032199949, + "Events": 0.1633237898, + "x": 13.536354, + "y": -1.3670807 + }, + "99": { + "speaker": "conceptNULL", + "text": "Ok so one last question. How would you guys feel about calling this the big D.A.T.A interview?", + "sequence": 99, + "Technology": 0.1834568828, + "Art": 0.1016845182, + "Ireland": 0.0744446591, + "Organisation": 0.0082895607, + "Digital": 0.1434313506, + "Community": 0.0831352696, + "Events": 0.136344552, + "x": 6.6183586, + "y": -1.311184 + }, + "100": { + "speaker": "conceptNULL", + "text": "B I G D. A. T. A.", + "sequence": 100, + "Technology": 0.3240047097, + "Art": 0.236335665, + "Ireland": 0.1524737924, + "Organisation": 0.3093729615, + "Digital": 0.3839444518, + "Community": 0.337410748, + "Events": 0.3200583458, + "x": 16.588356, + "y": 2.5195816 + }, + "101": { + "speaker": "Tom", + "text": "I think you can call it whatever you want, for sure.", + "sequence": 101, + "Technology": 0.1434690356, + "Art": 0.1399530917, + "Ireland": 0.1146589369, + "Organisation": 0.0325538032, + "Digital": 0.0886203498, + "Community": 0.1483799219, + "Events": 0.1446833462, + "x": 7.4925437, + "y": 0.44302577 + }, + "102": { + "speaker": "conceptNULL", + "text": "Okay, well, we'll come back to you with the script in about three years ", + "sequence": 102, + "Technology": 0.1120433584, + "Art": 0.0311819576, + "Ireland": 0.0705917925, + "Organisation": -0.0470770225, + "Digital": 0.0432564616, + "Community": -0.0082763461, + "Events": 0.1107729599, + "x": 0.030054636, + "y": -0.28247046 + }, + "103": { + "speaker": "Tom", + "text": "On a defunct platform that we can't access.", + "sequence": 103, + "Technology": 0.2258704901, + "Art": 0.248430714, + "Ireland": 0.2560866475, + "Organisation": 0.3798061311, + "Digital": 0.247472167, + "Community": 0.3025097847, + "Events": 0.2811346054, + "x": 16.423088, + "y": 1.1440326 + }, + "104": { + "speaker": "conceptNULL", + "text": "Yeah, literally. On some blockchain somewhere. Okay, we might wrap it up here, but I hope this isn't the last time we get to talk to each other =)", + "sequence": 104, + "Technology": 0.0621548444, + "Art": 0.0524238013, + "Ireland": 0.2577371597, + "Organisation": -0.0457628332, + "Digital": 0.0052126739, + "Community": 0.040994782, + "Events": 0.1090841293, + "x": 3.4289658, + "y": 5.278118 + } +} \ No newline at end of file diff --git a/static/assets/data/data/test-tsne.csv b/static/assets/data/data/test-tsne.csv new file mode 100644 index 0000000..4fdcdda --- /dev/null +++ b/static/assets/data/data/test-tsne.csv @@ -0,0 +1,137 @@ +,0,1 +0,-8.580907,-6.124051 +1,-7.202645,-4.764115 +2,-0.41552874,3.0291958 +3,4.755789,4.511425 +4,2.9560292,3.8656237 +5,-12.849203,-0.18915209 +6,0.20089366,3.0300672 +7,-9.798663,-5.685506 +8,11.144796,-3.3375642 +9,-10.429002,-4.998892 +10,-3.872421,-2.639733 +11,-11.498349,-0.4016193 +12,-10.957805,1.0386072 +13,7.4271894,-1.1288115 +14,4.539073,2.2762976 +15,-6.2378697,1.158635 +16,-8.542198,2.0854943 +17,-0.0086771,1.4574904 +18,6.3702087,-2.6190917 +19,18.153908,1.320851 +20,14.737614,1.3098454 +21,17.055216,1.4848617 +22,13.275076,1.1202672 +23,-4.0518575,3.4952278 +24,-3.298498,-6.560659 +25,-11.378324,-1.9598967 +26,-3.712961,-7.372546 +27,6.5542226,-4.6796875 +28,9.681247,-2.0745218 +29,-10.848571,4.939463 +30,3.1380155,-5.2062187 +31,4.426768,5.250013 +32,7.8582835,1.7137591 +33,9.367558,2.819691 +34,10.557694,0.7017671 +35,-5.463541,5.401068 +36,-0.6340038,6.349406 +37,8.375064,-0.44190797 +38,17.543728,2.655701 +39,3.3673651,-2.1659873 +40,3.4920516,2.7911732 +41,3.898569,-5.5068564 +42,18.153908,1.320851 +43,8.9072075,0.08552996 +44,1.7623355,-4.00422 +45,-6.7649913,6.1131377 +46,-10.293972,3.964844 +47,9.577702,-0.6451263 +48,-6.2536964,-3.006455 +49,-8.154863,0.6175567 +50,-11.911842,0.2337793 +51,12.117555,-4.37463 +52,1.8941096,-2.630803 +53,2.3166137,2.3905282 +54,-10.468377,3.1195278 +55,-0.71532166,-2.0725336 +56,-0.9651897,-0.5808797 +57,4.4809065,-2.5383754 +58,-0.449625,4.8332872 +59,11.418129,1.2075881 +60,6.695937,-0.20215023 +61,-1.4334855,0.31949866 +62,-11.5369425,-3.2152762 +63,-9.7245655,-0.80345523 +64,14.395142,-2.2512136 +65,-10.200551,0.88504446 +66,-5.528774,-2.7500474 +67,3.1844406,0.5216458 +68,-9.608776,-2.8553367 +69,2.0010345,-1.8103894 +70,-7.0600023,-1.6032693 +71,5.5027485,5.182532 +72,8.181175,-2.5248132 +73,-1.0024674,-5.1136184 +74,2.1143217,4.7104464 +75,-2.8041816,-0.17871359 +76,11.47592,0.1384782 +77,14.532128,-3.1641135 +78,-5.407543,-4.268926 +79,1.4687567,0.7860516 +80,-2.7378263,-6.948479 +81,-8.102731,6.2909155 +82,-8.022642,4.6314588 +83,0.39177582,-4.957529 +84,8.747507,-1.3653961 +85,-1.3062904,-3.1628788 +86,-5.0041413,-6.1404233 +87,11.895587,-2.3727713 +88,-4.302978,3.7756934 +89,-4.608613,-1.6732967 +90,6.5693765,4.243448 +91,13.536354,-1.3670807 +92,-2.0760655,-4.939035 +93,-5.7430615,-5.3782854 +94,0.7449215,3.9942174 +95,-6.0606637,-0.9238262 +96,6.6183586,-1.311184 +97,16.588356,2.5195816 +98,7.4925437,0.44302577 +99,-12.540102,2.8369312 +100,0.030054636,-0.28247046 +101,16.423088,1.1440326 +102,3.4289658,5.278118 +103,-8.585102,4.2509303 +104,14.5079565,-0.629168 +105,-2.2908463,4.138079 +106,15.289422,0.7948524 +107,-2.3923597,5.303616 +108,12.05442,-0.9979931 +109,16.190702,0.13290405 +110,17.372677,0.3076943 +111,-7.2426453,3.2637012 +112,1.8184232,3.2720292 +113,7.4247956,-5.704541 +114,0.2953689,-3.3388505 +115,4.061478,-3.914198 +116,0.23603585,-2.6505947 +117,-8.300797,-1.2980546 +118,-4.0184555,-0.40077314 +119,-1.3422394,4.628128 +120,-4.1456227,-4.1129694 +121,1.7957124,-0.58214736 +122,-7.5100317,0.81434876 +123,-3.6836727,-2.0039957 +124,-6.8712745,5.5246935 +125,7.4344473,-4.266719 +126,18.153908,1.320851 +127,10.166331,-4.234038 +128,-9.643759,2.679666 +129,-10.787082,2.2236953 +130,-7.634373,-3.5644486 +131,-7.925726,-4.082867 +132,4.292091,0.31191784 +133,-2.2550645,2.6557643 +134,-6.349522,-7.2391043 +135,-7.8410635,-0.3134022 diff --git a/static/assets/data/libraries/p5.gui.js b/static/assets/data/libraries/p5.gui.js new file mode 100644 index 0000000..c758c2c --- /dev/null +++ b/static/assets/data/libraries/p5.gui.js @@ -0,0 +1,251 @@ +// + +(function() { + + // list of guis + var guis = []; + + // default slider params + var sliderMin = 0; + var sliderMax = 100; + var sliderStep = 1; + + // default gui provider + var guiProvider = 'QuickSettings'; + + const defaultLabel = 'p5.gui'; + + // Create a GUI using QuickSettings (or DAT.GUI or ...) + // You only need to pass a reference to the sketch in instance mode + + // Usually you will call createGui(this, 'label'); + p5.prototype.createGui = function(sketch, label, provider) { + + // createGui(label) signature + if ((typeof sketch) === 'string') { + return this.createGui(label, sketch, provider); + } + + // normally the sketch will just be embedded below the body + let parent = document.body; + + if(sketch === undefined) { + // p5js global mode + sketch = window; + label = label || document.title || defaultLabel; + } else { + // p5js instance mode + parent = sketch.canvas.parentElement; + label = label || parent.id || defaultLabel; + } + + if(!('color' in sketch)) { + console.error(`${parent.id}: You need to pass the p5 sketch to createGui in instance mode!`); + } + + // default gui provider + provider = provider || guiProvider; + + var gui; + + // create a gui using the provider + if(provider === 'QuickSettings') { + if(QuickSettings) { + console.log('Creating p5.gui powered by QuickSettings.'); + gui = new QSGui(label, parent, sketch); + } else { + console.log('QuickSettings not found. Is the script included in your HTML?'); + gui = new DummyGui(label, parent, sketch); + } + } else { + console.log('Unknown GUI provider ' + provider); + gui = new DummyGui(label, parent, sketch); + } + + // add it to the list of guis + guis.push(gui); + + // return it + return gui; + + }; + + + p5.prototype.removeGui = function(gui) { + // TODO: implement this + }; + + // update defaults used for creation of sliders + p5.prototype.sliderRange = function(vmin, vmax, vstep) { + sliderMin = vmin; + sliderMax = vmax; + sliderStep = vstep; + }; + + // extend default behaviour of noLoop() + p5.prototype.noLoop = function() { + this._loop = false; + for(var i = 0; i < guis.length; i++) { + guis[i].noLoop(); + } + }; + + // extend default behaviour of loop() + p5.prototype.loop = function() { + for(var i = 0; i < guis.length; i++) { + guis[i].loop(); + } + this._loop = true; + this._draw(); + }; + + + // interface for quicksettings + function QSGui(label, parent, sketch) { + + // hard code the position, it can be changed later + let x = 20; + let y = 20; + + var qs = QuickSettings.create(x, y, label, parent); + + // proxy all functions of quicksettings + this.prototype = qs; + + // addGlobals(global1, global2, ...) to add the selected globals + this.addGlobals = function() { + qs.bindGlobals(arguments); + }; + + // addObject(object) to add all params of the object + // addObject(object, param1, param2, ...) to add selected params + this.addObject = function() { + // get object + object = arguments[0]; + // convert arguments object to array + var params = []; + if(arguments.length > 1) { + params = Array.prototype.slice.call(arguments) + params = params.slice(1); + } + // if no arguments are provided take all keys of the object + if(params.length === 0) { + // won't work in Internet Explorer < 9 (use a polyfill) + params = Object.keys(object); + } + qs.bindParams(object, params); + }; + + // noLoop() to call draw every time the gui changes when we are not looping + this.noLoop = function() { + qs.setGlobalChangeHandler(sketch._draw); + }; + + this.loop = function() { + qs.setGlobalChangeHandler(null); + }; + + // pass through ... + this.show = function() { qs.show(); }; + this.hide = function() { qs.hide(); }; + this.toggleVisibility = function() { qs.toggleVisibility(); }; + this.setPosition = function(x, y) { + qs.setPosition(x, y); + return this; + }; + + // Extend Quicksettings + // so it can magically create a GUI for parameters passed by name + qs.bindParams = function(object, params) { + + // iterate over all the arguments + for(var i = 0; i < params.length; i++) { + + var arg = params[i]; + var val = object[arg]; + var typ = typeof val; + + //console.log(typ, arg, val); + + // don't need to show the sliders for range min, max and step of a property + var sliderConfigRegEx = /^(.*min|.*max|.*step)$/i; + if( sliderConfigRegEx.test(arg)){ + continue; + } + switch(typ) { + + case 'object': + + // color triple ? + if(val instanceof Array && val.length === 3 && typeof val[0] === 'number') { + // create color according to the current color mode of the current sketch + var c = sketch.color(val[0], val[1], val[2]); + // get decimal RGB values + var c2 = c.levels.slice(0,3); + // create HTML color code + var vcolor = '#' + c2.map(function(value) { + return ('0' + value.toString(16)).slice(-2); + }).join(''); + this.bindColor(arg, vcolor, object); + } else { + // multiple choice drop down list + this.bindDropDown(arg, val, object); + object[arg] = val[0]; + } + break; + + case 'number': + + // values as defined by magic variables or gui.sliderRange() + var vmin = object[arg + 'Min'] || object[arg + 'min'] || sliderMin; + var vmax = object[arg + 'Max'] || object[arg + 'max'] || sliderMax; + var vstep = object[arg + 'Step'] || object[arg + 'step'] || sliderStep; + + // the actual values can still overrule the limits set by magic + var vmin = Math.min(val, vmin); + var vmax = Math.max(val, vmax); + + // set the range + this.bindRange(arg, vmin, vmax, val, vstep, object); + + break; + + case 'string': + + var HEX6 = /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i; + if(HEX6.test(val)) { + // HTML color value (such as #ff0000) + this.bindColor(arg, val, object); + } else { + // String value + this.bindText(arg, val, object); + } + break; + + case 'boolean': + + this.bindBoolean(arg, object[arg], object); + break; + + } + } + }; + + // bind params that are defined globally + qs.bindGlobals = function(params) { + this.bindParams(window, params); + }; + + } + + // Just a Dummy object that provides the GUI interface + function DummyGui() { + var f = function() {}; + this.addGlobals = f; + this.noLoop = f; + this.addObject = f; + this.show = f; + } + + +})(); diff --git a/static/assets/data/libraries/p5.min.js b/static/assets/data/libraries/p5.min.js new file mode 100644 index 0000000..4251dd0 --- /dev/null +++ b/static/assets/data/libraries/p5.min.js @@ -0,0 +1,2 @@ +/*! p5.js v1.5.0 October 18, 2022 */ +!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).p5=e()}(function(){var s,e,t;return function o(n,s,i){function a(t,e){if(!s[t]){if(!n[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(l)return l(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}r=s[t]={exports:{}},n[t][0].call(r.exports,function(e){return a(n[t][1][e]||e)},r,r.exports,o,n,s,i)}return s[t].exports}for(var l="function"==typeof require&&require,e=0;e>16&255,s[i++]=t>>8&255,s[i++]=255&t;2===o&&(t=l[e.charCodeAt(r)]<<2|l[e.charCodeAt(r+1)]>>4,s[i++]=255&t);1===o&&(t=l[e.charCodeAt(r)]<<10|l[e.charCodeAt(r+1)]<<4|l[e.charCodeAt(r+2)]>>2,s[i++]=t>>8&255,s[i++]=255&t);return s},r.fromByteArray=function(e){for(var t,r=e.length,o=r%3,n=[],s=0,i=r-o;s>18&63]+a[e>>12&63]+a[e>>6&63]+a[63&e]}(o));return n.join("")}(e,s,i>2]+a[t<<4&63]+"==")):2==o&&(t=(e[r-2]<<8)+e[r-1],n.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"="));return n.join("")};for(var a=[],l=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,s=o.length;n>>1;case"base64":return T(e).length;default:if(n)return o?-1:E(e).length;t=(""+t).toLowerCase(),n=!0}}function r(e,t,r){var o,n=!1;if((t=void 0===t||t<0?0:t)>this.length)return"";if((r=void 0===r||r>this.length?this.length:r)<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e=e||"utf8";;)switch(e){case"hex":var s=this,i=t,a=r,l=s.length;(!a||a<0||l=e.length){if(n)return-1;r=e.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof t&&(t=d.from(t,o)),d.isBuffer(t))return 0===t.length?-1:p(e,t,r,o,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?(n?Uint8Array.prototype.indexOf:Uint8Array.prototype.lastIndexOf).call(e,t,r):p(e,[t],r,o,n);throw new TypeError("val must be string, number or Buffer")}function p(e,t,r,o,n){var s=1,i=e.length,a=t.length;if(void 0!==o&&("ucs2"===(o=String(o).toLowerCase())||"ucs-2"===o||"utf16le"===o||"utf-16le"===o)){if(e.length<2||t.length<2)return-1;i/=s=2,a/=2,r/=2}function l(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(n)for(var u=-1,c=r;c>8,o=o%256,n.push(o),n.push(r);return n}(t,e.length-r),e,r,o)}function M(e,t,r){r=Math.min(e.length,r);for(var o=[],n=t;n>>10&1023|55296),c=56320|1023&c),o.push(c),n+=d}var f=o,h=f.length;if(h<=v)return String.fromCharCode.apply(String,f);for(var p="",m=0;mt&&(e+=" ... "),""},e&&(d.prototype[e]=d.prototype.inspect),d.prototype.compare=function(e,t,r,o,n){if(O(e,Uint8Array)&&(e=d.from(e,e.offset,e.byteLength)),!d.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===r&&(r=e?e.length:0),void 0===o&&(o=0),void 0===n&&(n=this.length),(t=void 0===t?0:t)<0||r>e.length||o<0||n>this.length)throw new RangeError("out of range index");if(n<=o&&r<=t)return 0;if(n<=o)return-1;if(r<=t)return 1;if(this===e)return 0;for(var s=(n>>>=0)-(o>>>=0),i=(r>>>=0)-(t>>>=0),a=Math.min(s,i),l=this.slice(o,n),u=e.slice(t,r),c=0;c>>=0,isFinite(r)?(r>>>=0,void 0===o&&(o="utf8")):(o=r,r=void 0)}var n=this.length-t;if((void 0===r||nthis.length)throw new RangeError("Attempt to write outside buffer bounds");o=o||"utf8";for(var s,i,a,l=!1;;)switch(o){case"hex":var u=this,c=e,d=t,f=r,h=(d=Number(d)||0,u.length-d);(!f||h<(f=Number(f)))&&(f=h),(h=c.length)/2e.length)throw new RangeError("Index out of range")}function j(e,t,r,o){if(r+o>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function _(e,t,r,o,n){return t=+t,r>>>=0,n||j(e,0,r,4),s.write(e,t,r,o,23,4),r+4}function x(e,t,r,o,n){return t=+t,r>>>=0,n||j(e,0,r,8),s.write(e,t,r,o,52,8),r+8}d.prototype.slice=function(e,t){var r=this.length,r=((e=~~e)<0?(e+=r)<0&&(e=0):r>>=0,t>>>=0,r||m(e,t,this.length);for(var o=this[e],n=1,s=0;++s>>=0,t>>>=0,r||m(e,t,this.length);for(var o=this[e+--t],n=1;0>>=0,t||m(e,1,this.length),this[e]},d.prototype.readUInt16LE=function(e,t){return e>>>=0,t||m(e,2,this.length),this[e]|this[e+1]<<8},d.prototype.readUInt16BE=function(e,t){return e>>>=0,t||m(e,2,this.length),this[e]<<8|this[e+1]},d.prototype.readUInt32LE=function(e,t){return e>>>=0,t||m(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},d.prototype.readUInt32BE=function(e,t){return e>>>=0,t||m(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},d.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||m(e,t,this.length);for(var o=this[e],n=1,s=0;++s>>=0,t>>>=0,r||m(e,t,this.length);for(var o=t,n=1,s=this[e+--o];0>>=0,t||m(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},d.prototype.readInt16LE=function(e,t){e>>>=0,t||m(e,2,this.length);t=this[e]|this[e+1]<<8;return 32768&t?4294901760|t:t},d.prototype.readInt16BE=function(e,t){e>>>=0,t||m(e,2,this.length);t=this[e+1]|this[e]<<8;return 32768&t?4294901760|t:t},d.prototype.readInt32LE=function(e,t){return e>>>=0,t||m(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},d.prototype.readInt32BE=function(e,t){return e>>>=0,t||m(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},d.prototype.readFloatLE=function(e,t){return e>>>=0,t||m(e,4,this.length),s.read(this,e,!0,23,4)},d.prototype.readFloatBE=function(e,t){return e>>>=0,t||m(e,4,this.length),s.read(this,e,!1,23,4)},d.prototype.readDoubleLE=function(e,t){return e>>>=0,t||m(e,8,this.length),s.read(this,e,!0,52,8)},d.prototype.readDoubleBE=function(e,t){return e>>>=0,t||m(e,8,this.length),s.read(this,e,!1,52,8)},d.prototype.writeUIntLE=function(e,t,r,o){e=+e,t>>>=0,r>>>=0,o||b(this,e,t,r,Math.pow(2,8*r)-1,0);var n=1,s=0;for(this[t]=255&e;++s>>=0,r>>>=0,o||b(this,e,t,r,Math.pow(2,8*r)-1,0);var n=r-1,s=1;for(this[t+n]=255&e;0<=--n&&(s*=256);)this[t+n]=e/s&255;return t+r},d.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,1,255,0),this[t]=255&e,t+1},d.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},d.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},d.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},d.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},d.prototype.writeIntLE=function(e,t,r,o){e=+e,t>>>=0,o||b(this,e,t,r,(o=Math.pow(2,8*r-1))-1,-o);var n=0,s=1,i=0;for(this[t]=255&e;++n>0)-i&255;return t+r},d.prototype.writeIntBE=function(e,t,r,o){e=+e,t>>>=0,o||b(this,e,t,r,(o=Math.pow(2,8*r-1))-1,-o);var n=r-1,s=1,i=0;for(this[t+n]=255&e;0<=--n&&(s*=256);)e<0&&0===i&&0!==this[t+n+1]&&(i=1),this[t+n]=(e/s>>0)-i&255;return t+r},d.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,1,127,-128),this[t]=255&(e=e<0?255+e+1:e),t+1},d.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},d.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},d.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},d.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,2147483647,-2147483648),this[t]=(e=e<0?4294967295+e+1:e)>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},d.prototype.writeFloatLE=function(e,t,r){return _(this,e,t,!0,r)},d.prototype.writeFloatBE=function(e,t,r){return _(this,e,t,!1,r)},d.prototype.writeDoubleLE=function(e,t,r){return x(this,e,t,!0,r)},d.prototype.writeDoubleBE=function(e,t,r){return x(this,e,t,!1,r)},d.prototype.copy=function(e,t,r,o){if(!d.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r=r||0,o||0===o||(o=this.length),t>=e.length&&(t=e.length),(o=0=this.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("sourceEnd out of bounds");o>this.length&&(o=this.length);var n=(o=e.length-t>>=0,r=void 0===r?this.length:r>>>0,"number"==typeof(e=e||0))for(s=t;s>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function T(e){return S.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(w,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function C(e,t,r,o){for(var n=0;n=t.length||n>=e.length);++n)t[n+r]=e[n];return n}function O(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function L(e){return e!=e}var k=function(){for(var e="0123456789abcdef",t=new Array(256),r=0;r<16;++r)for(var o=16*r,n=0;n<16;++n)t[o+n]=e[r]+e[n];return t}()}.call(this,A("buffer").Buffer)},{"base64-js":1,buffer:4,ieee754:238}],5:[function(e,t,r){t.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},{}],6:[function(e,t,r){var o=e("../internals/is-object");t.exports=function(e){if(o(e)||null===e)return e;throw TypeError("Can't set "+String(e)+" as a prototype")}},{"../internals/is-object":74}],7:[function(e,t,r){var o=e("../internals/well-known-symbol"),n=e("../internals/object-create"),e=e("../internals/object-define-property"),s=o("unscopables"),i=Array.prototype;null==i[s]&&e.f(i,s,{configurable:!0,value:n(null)}),t.exports=function(e){i[s][e]=!0}},{"../internals/object-create":90,"../internals/object-define-property":92,"../internals/well-known-symbol":146}],8:[function(e,t,r){"use strict";var o=e("../internals/string-multibyte").charAt;t.exports=function(e,t,r){return t+(r?o(e,t).length:1)}},{"../internals/string-multibyte":123}],9:[function(e,t,r){t.exports=function(e,t,r){if(e instanceof t)return e;throw TypeError("Incorrect "+(r?r+" ":"")+"invocation")}},{}],10:[function(e,t,r){var o=e("../internals/is-object");t.exports=function(e){if(o(e))return e;throw TypeError(String(e)+" is not an object")}},{"../internals/is-object":74}],11:[function(e,t,r){t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},{}],12:[function(e,t,r){"use strict";function o(e){return l(e)&&u(E,c(e))}var n,s=e("../internals/array-buffer-native"),i=e("../internals/descriptors"),a=e("../internals/global"),l=e("../internals/is-object"),u=e("../internals/has"),c=e("../internals/classof"),d=e("../internals/create-non-enumerable-property"),f=e("../internals/redefine"),h=e("../internals/object-define-property").f,p=e("../internals/object-get-prototype-of"),m=e("../internals/object-set-prototype-of"),y=e("../internals/well-known-symbol"),e=e("../internals/uid"),g=a.Int8Array,v=g&&g.prototype,b=a.Uint8ClampedArray,b=b&&b.prototype,j=g&&p(g),_=v&&p(v),x=Object.prototype,w=x.isPrototypeOf,y=y("toStringTag"),S=e("TYPED_ARRAY_TAG"),M=s&&!!m&&"Opera"!==c(a.opera),e=!1,E={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8};for(n in E)a[n]||(M=!1);if((!M||"function"!=typeof j||j===Function.prototype)&&(j=function(){throw TypeError("Incorrect invocation")},M))for(n in E)a[n]&&m(a[n],j);if((!M||!_||_===x)&&(_=j.prototype,M))for(n in E)a[n]&&m(a[n].prototype,_);if(M&&p(b)!==_&&m(b,_),i&&!u(_,y))for(n in e=!0,h(_,y,{get:function(){return l(this)?this[S]:void 0}}),E)a[n]&&d(a[n],S,n);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:M,TYPED_ARRAY_TAG:e&&S,aTypedArray:function(e){if(o(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(m){if(w.call(j,e))return e}else for(var t in E)if(u(E,n)){t=a[t];if(t&&(e===t||w.call(t,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,r){if(i){if(r)for(var o in E){o=a[o];o&&u(o.prototype,e)&&delete o.prototype[e]}_[e]&&!r||f(_,e,!r&&M&&v[e]||t)}},exportTypedArrayStaticMethod:function(e,t,r){var o,n;if(i){if(m){if(r)for(o in E)(n=a[o])&&u(n,e)&&delete n[e];if(j[e]&&!r)return;try{return f(j,e,!r&&M&&g[e]||t)}catch(e){}}for(o in E)!(n=a[o])||n[e]&&!r||f(n,e,t)}},isView:function(e){e=c(e);return"DataView"===e||u(E,e)},isTypedArray:o,TypedArray:j,TypedArrayPrototype:_}},{"../internals/array-buffer-native":11,"../internals/classof":29,"../internals/create-non-enumerable-property":38,"../internals/descriptors":43,"../internals/global":59,"../internals/has":60,"../internals/is-object":74,"../internals/object-define-property":92,"../internals/object-get-prototype-of":97,"../internals/object-set-prototype-of":101,"../internals/redefine":108,"../internals/uid":143,"../internals/well-known-symbol":146}],13:[function(e,t,I){"use strict";function r(e){return[255&e]}function o(e){return[255&e,e>>8&255]}function n(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function s(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]}function i(e){return L(e,23,4)}function U(e){return L(e,52,8)}function a(e,t){H(e[w],t,{get:function(){return b(this)[t]}})}function l(e,t,r,o){if(r=m(r),e=b(e),r+t>e.byteLength)throw O(S);var n=b(e.buffer).bytes,r=r+e.byteOffset,e=n.slice(r,r+t);return o?e:e.reverse()}function u(e,t,r,o,n,s){if(r=m(r),e=b(e),r+t>e.byteLength)throw O(S);for(var i=b(e.buffer).bytes,a=r+e.byteOffset,l=o(+n),u=0;uR;)(A=P[R++])in E||F(E,A,M[A]);c.constructor=E}g&&V(e)!==C&&g(e,C);var y=new T(new E(2)),D=e.setInt8;y.setInt8(0,2147483648),y.setInt8(1,2147483649),!y.getInt8(0)&&y.getInt8(1)||f(e,{setInt8:function(e,t){D.call(this,e,t<<24>>24)},setUint8:function(e,t){D.call(this,e,t<<24>>24)}},{unsafe:!0})}else E=function(e){p(this,E,_);e=m(e);j(this,{bytes:W.call(new Array(e),0),byteLength:e}),d||(this.byteLength=e)},T=function(e,t,r){p(this,T,x),p(e,E,x);var o=b(e).byteLength,t=B(t);if(t<0||o>24},getUint8:function(e){return l(this,1,e)[0]},getInt16:function(e){e=l(this,2,e,1>16},getUint16:function(e){e=l(this,2,e,1>>0},getFloat32:function(e){return k(l(this,4,e,1"+e+""}},{"../internals/require-object-coercible":113}],37:[function(e,t,r){"use strict";function o(){return this}var n=e("../internals/iterators-core").IteratorPrototype,s=e("../internals/object-create"),i=e("../internals/create-property-descriptor"),a=e("../internals/set-to-string-tag"),l=e("../internals/iterators");t.exports=function(e,t,r){t+=" Iterator";return e.prototype=s(n,{next:i(1,r)}),a(e,t,!1,!0),l[t]=o,e}},{"../internals/create-property-descriptor":39,"../internals/iterators":79,"../internals/iterators-core":78,"../internals/object-create":90,"../internals/set-to-string-tag":117}],38:[function(e,t,r){var o=e("../internals/descriptors"),n=e("../internals/object-define-property"),s=e("../internals/create-property-descriptor");t.exports=o?function(e,t,r){return n.f(e,t,s(1,r))}:function(e,t,r){return e[t]=r,e}},{"../internals/create-property-descriptor":39,"../internals/descriptors":43,"../internals/object-define-property":92}],39:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],40:[function(e,t,r){"use strict";var o=e("../internals/to-primitive"),n=e("../internals/object-define-property"),s=e("../internals/create-property-descriptor");t.exports=function(e,t,r){t=o(t);t in e?n.f(e,t,s(0,r)):e[t]=r}},{"../internals/create-property-descriptor":39,"../internals/object-define-property":92,"../internals/to-primitive":138}],41:[function(e,t,r){"use strict";function m(){return this}var y=e("../internals/export"),g=e("../internals/create-iterator-constructor"),v=e("../internals/object-get-prototype-of"),b=e("../internals/object-set-prototype-of"),j=e("../internals/set-to-string-tag"),_=e("../internals/create-non-enumerable-property"),x=e("../internals/redefine"),o=e("../internals/well-known-symbol"),w=e("../internals/is-pure"),S=e("../internals/iterators"),e=e("../internals/iterators-core"),M=e.IteratorPrototype,E=e.BUGGY_SAFARI_ITERATORS,T=o("iterator"),C="values",O="entries";t.exports=function(e,t,r,o,n,s,i){g(r,t,o);function a(e){if(e===n&&h)return h;if(!E&&e in d)return d[e];switch(e){case"keys":case C:case O:return function(){return new r(this,e)}}return function(){return new r(this)}}var l,u,o=t+" Iterator",c=!1,d=e.prototype,f=d[T]||d["@@iterator"]||n&&d[n],h=!E&&f||a(n),p="Array"==t&&d.entries||f;if(p&&(p=v(p.call(new e)),M!==Object.prototype&&p.next&&(w||v(p)===M||(b?b(p,M):"function"!=typeof p[T]&&_(p,T,m)),j(p,o,!0,!0),w&&(S[o]=m))),n==C&&f&&f.name!==C&&(c=!0,h=function(){return f.call(this)}),w&&!i||d[T]===h||_(d,T,h),S[t]=h,n)if(l={values:a(C),keys:s?h:a("keys"),entries:a(O)},i)for(u in l)!E&&!c&&u in d||x(d,u,l[u]);else y({target:t,proto:!0,forced:E||c},l);return l}},{"../internals/create-iterator-constructor":37,"../internals/create-non-enumerable-property":38,"../internals/export":50,"../internals/is-pure":75,"../internals/iterators":79,"../internals/iterators-core":78,"../internals/object-get-prototype-of":97,"../internals/object-set-prototype-of":101,"../internals/redefine":108,"../internals/set-to-string-tag":117,"../internals/well-known-symbol":146}],42:[function(e,t,r){var o=e("../internals/path"),n=e("../internals/has"),s=e("../internals/well-known-symbol-wrapped"),i=e("../internals/object-define-property").f;t.exports=function(e){var t=o.Symbol||(o.Symbol={});n(t,e)||i(t,e,{value:s.f(e)})}},{"../internals/has":60,"../internals/object-define-property":92,"../internals/path":104,"../internals/well-known-symbol-wrapped":145}],43:[function(e,t,r){e=e("../internals/fails");t.exports=!e(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},{"../internals/fails":51}],44:[function(e,t,r){var o=e("../internals/global"),e=e("../internals/is-object"),n=o.document,s=e(n)&&e(n.createElement);t.exports=function(e){return s?n.createElement(e):{}}},{"../internals/global":59,"../internals/is-object":74}],45:[function(e,t,r){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},{}],46:[function(e,t,r){e=e("../internals/engine-user-agent");t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(e)},{"../internals/engine-user-agent":47}],47:[function(e,t,r){e=e("../internals/get-built-in");t.exports=e("navigator","userAgent")||""},{"../internals/get-built-in":56}],48:[function(e,t,r){var o,n,s=e("../internals/global"),e=e("../internals/engine-user-agent"),s=s.process,s=s&&s.versions,s=s&&s.v8;s?n=(o=s.split("."))[0]+o[1]:e&&(!(o=e.match(/Edge\/(\d+)/))||74<=o[1])&&(o=e.match(/Chrome\/(\d+)/))&&(n=o[1]),t.exports=n&&+n},{"../internals/engine-user-agent":47,"../internals/global":59}],49:[function(e,t,r){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],50:[function(e,t,r){var u=e("../internals/global"),c=e("../internals/object-get-own-property-descriptor").f,d=e("../internals/create-non-enumerable-property"),f=e("../internals/redefine"),h=e("../internals/set-global"),p=e("../internals/copy-constructor-properties"),m=e("../internals/is-forced");t.exports=function(e,t){var r,o,n,s=e.target,i=e.global,a=e.stat,l=i?u:a?u[s]||h(s,{}):(u[s]||{}).prototype;if(l)for(r in t){if(o=t[r],n=e.noTargetGet?(n=c(l,r))&&n.value:l[r],!m(i?r:s+(a?".":"#")+r,e.forced)&&void 0!==n){if(typeof o==typeof n)continue;p(o,n)}(e.sham||n&&n.sham)&&d(o,"sham",!0),f(l,r,o,e)}}},{"../internals/copy-constructor-properties":33,"../internals/create-non-enumerable-property":38,"../internals/global":59,"../internals/is-forced":73,"../internals/object-get-own-property-descriptor":93,"../internals/redefine":108,"../internals/set-global":115}],51:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],52:[function(e,t,r){"use strict";e("../modules/es.regexp.exec");var u=e("../internals/redefine"),c=e("../internals/fails"),d=e("../internals/well-known-symbol"),f=e("../internals/regexp-exec"),h=e("../internals/create-non-enumerable-property"),p=d("species"),m=!c(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),y="$0"==="a".replace(/./,"$0"),e=d("replace"),g=!!/./[e]&&""===/./[e]("a","$0"),v=!c(function(){var e=/(?:)/,t=e.exec,e=(e.exec=function(){return t.apply(this,arguments)},"ab".split(e));return 2!==e.length||"a"!==e[0]||"b"!==e[1]});t.exports=function(r,e,t,o){var s,n,i=d(r),a=!c(function(){var e={};return e[i]=function(){return 7},7!=""[r](e)}),l=a&&!c(function(){var e=!1,t=/a/;return"split"===r&&((t={constructor:{}}).constructor[p]=function(){return t},t.flags="",t[i]=/./[i]),t.exec=function(){return e=!0,null},t[i](""),!e});a&&l&&("replace"!==r||m&&y&&!g)&&("split"!==r||v)||(s=/./[i],t=(l=t(i,""[r],function(e,t,r,o,n){return t.exec===f?a&&!n?{done:!0,value:s.call(t,r,o)}:{done:!0,value:e.call(r,t,o)}:{done:!1}},{REPLACE_KEEPS_$0:y,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:g}))[0],n=l[1],u(String.prototype,r,t),u(RegExp.prototype,i,2==e?function(e,t){return n.call(e,this,t)}:function(e){return n.call(e,this)})),o&&h(RegExp.prototype[i],"sham",!0)}},{"../internals/create-non-enumerable-property":38,"../internals/fails":51,"../internals/redefine":108,"../internals/regexp-exec":110,"../internals/well-known-symbol":146,"../modules/es.regexp.exec":181}],53:[function(e,t,r){e=e("../internals/fails");t.exports=!e(function(){return Object.isExtensible(Object.preventExtensions({}))})},{"../internals/fails":51}],54:[function(e,t,r){var s=e("../internals/a-function");t.exports=function(o,n,e){if(s(o),void 0===n)return o;switch(e){case 0:return function(){return o.call(n)};case 1:return function(e){return o.call(n,e)};case 2:return function(e,t){return o.call(n,e,t)};case 3:return function(e,t,r){return o.call(n,e,t,r)}}return function(){return o.apply(n,arguments)}}},{"../internals/a-function":5}],55:[function(e,t,r){"use strict";var o=e("../internals/a-function"),n=e("../internals/is-object"),c=[].slice,d={};t.exports=Function.bind||function(i){var a=o(this),l=c.call(arguments,1),u=function(){var e=l.concat(c.call(arguments));if(this instanceof u){var t=a,r=e.length,o=e;if(!(r in d)){for(var n=[],s=0;s>1,u=23===t?h(2,-24)-h(2,-77):0,c=e<0||0===e&&1/e<0?1:0,d=0;for((e=f(e))!=e||e===1/0?(n=e!=e?1:0,o=r):(o=p(m(e)/y),e*(s=h(2,-o))<1&&(o--,s*=2),2<=(e+=1<=o+l?u/s:u*h(2,1-l))*s&&(o++,s/=2),r<=o+l?(n=0,o=r):1<=o+l?(n=(e*s-1)*h(2,t),o+=l):(n=e*h(2,l-1)*h(2,t),o=0));8<=t;i[d++]=255&n,n/=256,t-=8);for(o=o<>1,a=n-7,l=o-1,n=e[l--],u=127&n;for(n>>=7;0>=-a,a+=t;0"+e+""},m=function(){try{n=document.domain&&new ActiveXObject("htmlfile")}catch(e){}m=n?((e=n).write(p("")),e.close(),t=e.parentWindow.Object,e=null,t):(e=c("iframe"),t="java"+f+":",e.style.display="none",u.appendChild(e),e.src=String(t),(t=e.contentWindow.document).open(),t.write(p("document.F=Object")),t.close(),t.F);for(var e,t,r=a.length;r--;)delete m[d][a[r]];return m()};l[h]=!0,t.exports=Object.create||function(e,t){var r;return null!==e?(o[d]=s(e),r=new o,o[d]=null,r[h]=e):r=m(),void 0===t?r:i(r,t)}},{"../internals/an-object":10,"../internals/document-create-element":44,"../internals/enum-bug-keys":49,"../internals/hidden-keys":61,"../internals/html":63,"../internals/object-define-properties":91,"../internals/shared-key":118}],91:[function(e,t,r){var o=e("../internals/descriptors"),i=e("../internals/object-define-property"),a=e("../internals/an-object"),l=e("../internals/object-keys");t.exports=o?Object.defineProperties:function(e,t){a(e);for(var r,o=l(t),n=o.length,s=0;sn;)!i(o,r=t[n++])||~l(s,r)||s.push(r);return s}},{"../internals/array-includes":18,"../internals/has":60,"../internals/hidden-keys":61,"../internals/to-indexed-object":132}],99:[function(e,t,r){var o=e("../internals/object-keys-internal"),n=e("../internals/enum-bug-keys");t.exports=Object.keys||function(e){return o(e,n)}},{"../internals/enum-bug-keys":49,"../internals/object-keys-internal":98}],100:[function(e,t,r){"use strict";var o={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,s=n&&!o.call({1:2},1);r.f=s?function(e){e=n(this,e);return!!e&&e.enumerable}:o},{}],101:[function(e,t,r){var n=e("../internals/an-object"),s=e("../internals/a-possible-prototype");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r,o=!1,e={};try{(r=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),o=e instanceof Array}catch(e){}return function(e,t){return n(e),s(t),o?r.call(e,t):e.__proto__=t,e}}():void 0)},{"../internals/a-possible-prototype":6,"../internals/an-object":10}],102:[function(e,t,r){"use strict";var o=e("../internals/to-string-tag-support"),n=e("../internals/classof");t.exports=o?{}.toString:function(){return"[object "+n(this)+"]"}},{"../internals/classof":29,"../internals/to-string-tag-support":139}],103:[function(e,t,r){var o=e("../internals/get-built-in"),n=e("../internals/object-get-own-property-names"),s=e("../internals/object-get-own-property-symbols"),i=e("../internals/an-object");t.exports=o("Reflect","ownKeys")||function(e){var t=n.f(i(e)),r=s.f;return r?t.concat(r(e)):t}},{"../internals/an-object":10,"../internals/get-built-in":56,"../internals/object-get-own-property-names":95,"../internals/object-get-own-property-symbols":96}],104:[function(e,t,r){e=e("../internals/global");t.exports=e},{"../internals/global":59}],105:[function(e,t,r){t.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},{}],106:[function(e,t,r){var o=e("../internals/an-object"),n=e("../internals/is-object"),s=e("../internals/new-promise-capability");t.exports=function(e,t){return o(e),n(t)&&t.constructor===e?t:((0,(e=s.f(e)).resolve)(t),e.promise)}},{"../internals/an-object":10,"../internals/is-object":74,"../internals/new-promise-capability":86}],107:[function(e,t,r){var n=e("../internals/redefine");t.exports=function(e,t,r){for(var o in t)n(e,o,t[o],r);return e}},{"../internals/redefine":108}],108:[function(e,t,r){var i=e("../internals/global"),a=e("../internals/create-non-enumerable-property"),l=e("../internals/has"),u=e("../internals/set-global"),o=e("../internals/inspect-source"),e=e("../internals/internal-state"),n=e.get,c=e.enforce,d=String(String).split("String");(t.exports=function(e,t,r,o){var n=!!o&&!!o.unsafe,s=!!o&&!!o.enumerable,o=!!o&&!!o.noTargetGet;"function"==typeof r&&("string"!=typeof t||l(r,"name")||a(r,"name",t),c(r).source=d.join("string"==typeof t?t:"")),e===i?s?e[t]=r:u(t,r):(n?!o&&e[t]&&(s=!0):delete e[t],s?e[t]=r:a(e,t,r))})(Function.prototype,"toString",function(){return"function"==typeof this&&n(this).source||o(this)})},{"../internals/create-non-enumerable-property":38,"../internals/global":59,"../internals/has":60,"../internals/inspect-source":68,"../internals/internal-state":70,"../internals/set-global":115}],109:[function(e,t,r){var o=e("./classof-raw"),n=e("./regexp-exec");t.exports=function(e,t){var r=e.exec;if("function"==typeof r){r=r.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==o(e))throw TypeError("RegExp#exec called on incompatible receiver");return n.call(e,t)}},{"./classof-raw":28,"./regexp-exec":110}],110:[function(e,t,r){"use strict";var o,n,d=e("./regexp-flags"),e=e("./regexp-sticky-helpers"),f=RegExp.prototype.exec,h=String.prototype.replace,s=f,p=(o=/a/,n=/b*/g,f.call(o,"a"),f.call(n,"a"),0!==o.lastIndex||0!==n.lastIndex),m=e.UNSUPPORTED_Y||e.BROKEN_CARET,y=void 0!==/()??/.exec("")[1];t.exports=s=p||y||m?function(e){var t,r,o,n,s=this,i=m&&s.sticky,a=d.call(s),l=s.source,u=0,c=e;return i&&(-1===(a=a.replace("y","")).indexOf("g")&&(a+="g"),c=String(e).slice(s.lastIndex),0M((v-s)/d))throw RangeError(w);for(s+=(u-n)*d,n=u,c=0;cv)throw RangeError(w);if(t==n){for(var f=s,h=b;;h+=b){var p=h<=i?1:i+j<=h?j:h-i;if(f>1,e+=M(e/t);S*j>>1>>=1)&&(t+=t))1&o&&(r+=t);return r}},{"../internals/require-object-coercible":113,"../internals/to-integer":133}],126:[function(e,t,r){var o=e("../internals/fails"),n=e("../internals/whitespaces");t.exports=function(e){return o(function(){return!!n[e]()||"​…᠎"!="​…᠎"[e]()||n[e].name!==e})}},{"../internals/fails":51,"../internals/whitespaces":147}],127:[function(e,t,r){function o(t){return function(e){e=String(n(e));return 1&t&&(e=e.replace(s,"")),e=2&t?e.replace(i,""):e}}var n=e("../internals/require-object-coercible"),e="["+e("../internals/whitespaces")+"]",s=RegExp("^"+e+e+"*"),i=RegExp(e+e+"*$");t.exports={start:o(1),end:o(2),trim:o(3)}},{"../internals/require-object-coercible":113,"../internals/whitespaces":147}],128:[function(e,t,r){function o(e){return function(){x(e)}}function n(e){x(e.data)}function s(e){a.postMessage(e+"",h.protocol+"//"+h.host)}var i,a=e("../internals/global"),l=e("../internals/fails"),u=e("../internals/classof-raw"),c=e("../internals/function-bind-context"),d=e("../internals/html"),f=e("../internals/document-create-element"),e=e("../internals/engine-is-ios"),h=a.location,p=a.setImmediate,m=a.clearImmediate,y=a.process,g=a.MessageChannel,v=a.Dispatch,b=0,j={},_="onreadystatechange",x=function(e){var t;j.hasOwnProperty(e)&&(t=j[e],delete j[e],t())};p&&m||(p=function(e){for(var t=[],r=1;r=t.length?{value:e.target=void 0,done:!0}:"keys"==r?{value:o,done:!1}:"values"==r?{value:t[o],done:!1}:{value:[o,t[o]],done:!1}},"values"),s.Arguments=s.Array,n("keys"),n("values"),n("entries")},{"../internals/add-to-unscopables":7,"../internals/define-iterator":41,"../internals/internal-state":70,"../internals/iterators":79,"../internals/to-indexed-object":132}],159:[function(e,t,r){"use strict";var o=e("../internals/export"),n=e("../internals/indexed-object"),s=e("../internals/to-indexed-object"),e=e("../internals/array-method-is-strict"),i=[].join,n=n!=Object,e=e("join",",");o({target:"Array",proto:!0,forced:n||!e},{join:function(e){return i.call(s(this),void 0===e?",":e)}})},{"../internals/array-method-is-strict":22,"../internals/export":50,"../internals/indexed-object":66,"../internals/to-indexed-object":132}],160:[function(e,t,r){var o=e("../internals/export"),e=e("../internals/array-last-index-of");o({target:"Array",proto:!0,forced:e!==[].lastIndexOf},{lastIndexOf:e})},{"../internals/array-last-index-of":20,"../internals/export":50}],161:[function(e,t,r){"use strict";var o=e("../internals/export"),n=e("../internals/array-iteration").map,s=e("../internals/array-method-has-species-support"),e=e("../internals/array-method-uses-to-length"),s=s("map"),e=e("map");o({target:"Array",proto:!0,forced:!s||!e},{map:function(e){return n(this,e,1M;M++)l(b,x=S[M])&&!l(w,x)&&y(w,x,m(b,x));(w.prototype=j).constructor=w,a(s,v,w)}},{"../internals/classof-raw":28,"../internals/descriptors":43,"../internals/fails":51,"../internals/global":59,"../internals/has":60,"../internals/inherit-if-required":67,"../internals/is-forced":73,"../internals/object-create":90,"../internals/object-define-property":92,"../internals/object-get-own-property-descriptor":93,"../internals/object-get-own-property-names":95,"../internals/redefine":108,"../internals/string-trim":127,"../internals/to-primitive":138}],170:[function(e,t,r){e("../internals/export")({target:"Number",stat:!0},{isFinite:e("../internals/number-is-finite")})},{"../internals/export":50,"../internals/number-is-finite":88}],171:[function(e,t,r){"use strict";function c(e,t,r){return 0===t?r:t%2==1?c(e,t-1,r*e):c(e*e,t/2,r)}var o=e("../internals/export"),d=e("../internals/to-integer"),f=e("../internals/this-number-value"),h=e("../internals/string-repeat"),e=e("../internals/fails"),n=1..toFixed,p=Math.floor;o({target:"Number",proto:!0,forced:n&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!e(function(){n.call({})})},{toFixed:function(e){function t(e,t){for(var r=-1,o=t;++r<6;)o+=e*a[r],a[r]=o%1e7,o=p(o/1e7)}function r(e){for(var t=6,r=0;0<=--t;)r+=a[t],a[t]=p(r/e),r=r%e*1e7}function o(){for(var e,t=6,r="";0<=--t;)""===r&&0!==t&&0===a[t]||(e=String(a[t]),r=""===r?e:r+h.call("0",7-e.length)+e);return r}var n,s,i=f(this),e=d(e),a=[0,0,0,0,0,0],l="",u="0";if(e<0||20n;){var s,i,a,l=y[n++],u=t?l.ok:l.fail,c=l.resolve,d=l.reject,f=l.domain;try{u?(t||(p.rejection===oe&&function(e,t){v.call(g,function(){if(C)M.emit("rejectionHandled",e);else se(te,e,t.value)})}(h,p),p.rejection=k),!0===u?s=e:(f&&f.enter(),s=u(e),f&&(f.exit(),a=!0)),s===l.promise?d(w("Promise-chain cycle")):(i=ne(s))?i.call(s,c,d):c(s)):d(e)}catch(e){f&&!a&&f.exit(),d(e)}}p.reactions=[],p.notified=!1,m&&!p.rejection&&(r=h,o=p,v.call(g,function(){var e=o.value,t=ie(o);if(t&&(t=b(function(){C?M.emit("unhandledRejection",e,r):se(O,r,e)}),o.rejection=C||ie(o)?oe:k,t.error))throw t.value}))}))},se=function(e,t,r){var o;ee?((o=S.createEvent("Event")).promise=t,o.reason=r,o.initEvent(e,!1,!0),g.dispatchEvent(o)):o={promise:t,reason:r},(t=g["on"+e])?t(o):e===O&&Y("Unhandled promise rejection",r)},ie=function(e){return e.rejection!==k&&!e.parent},P=function(t,r,o,n){return function(e){t(r,o,e,n)}},R=function(e,t,r,o){t.done||(t.done=!0,(t=o?o:t).value=r,t.state=re,A(e,t,!0))},D=function(r,o,e,t){if(!o.done){o.done=!0,t&&(o=t);try{if(r===e)throw w("Promise can't be resolved itself");var n=ne(e);n?u(function(){var t={done:!1};try{n.call(e,P(D,r,t,o),P(R,r,t,o))}catch(e){R(r,t,e,o)}}):(o.value=e,o.state=L,A(r,o,!1))}catch(e){R(r,{done:!1},e,o)}}};e&&(x=function(e){z(this,x,j),c(e),r.call(this);var t=_(this);try{e(P(D,this,t),P(R,this,t))}catch(e){R(this,t,e)}},(r=function(e){K(this,{type:j,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=F(x.prototype,{then:function(e,t){var r=J(this),o=T(X(this,x));return o.ok="function"!=typeof e||e,o.fail="function"==typeof t&&t,o.domain=C?M.domain:void 0,r.parent=!0,r.reactions.push(o),0!=r.state&&A(this,r,!1),o.promise},catch:function(e){return this.then(void 0,e)}}),t=function(){var e=new r,t=_(e);this.promise=e,this.resolve=P(D,e,t),this.reject=P(R,e,t)},h.f=T=function(e){return e===x||e===o?new t:$(e)},i||"function"!=typeof l||(n=l.prototype.then,N(l.prototype,"then",function(e,t){var r=this;return new x(function(e,t){n.call(r,e,t)}).then(e,t)},{unsafe:!0}),"function"==typeof E&&s({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return f(x,E.apply(g,arguments))}}))),s({global:!0,wrap:!0,forced:e},{Promise:x}),B(x,j,!1,!0),G(j),o=a(j),s({target:j,stat:!0,forced:e},{reject:function(e){var t=T(this);return t.reject.call(void 0,e),t.promise}}),s({target:j,stat:!0,forced:i||e},{resolve:function(e){return f(i&&this===o?x:this,e)}}),s({target:j,stat:!0,forced:m},{all:function(e){var a=this,t=T(a),l=t.resolve,u=t.reject,r=b(function(){var o=c(a.resolve),n=[],s=0,i=1;d(e,function(e){var t=s++,r=!1;n.push(void 0),i++,o.call(a,e).then(function(e){r||(r=!0,n[t]=e,--i||l(n))},u)}),--i||l(n)});return r.error&&u(r.value),t.promise},race:function(e){var r=this,o=T(r),n=o.reject,t=b(function(){var t=c(r.resolve);d(e,function(e){t.call(r,e).then(o.resolve,n)})});return t.error&&n(t.value),o.promise}})},{"../internals/a-function":5,"../internals/an-instance":9,"../internals/check-correctness-of-iteration":27,"../internals/classof-raw":28,"../internals/engine-v8-version":48,"../internals/export":50,"../internals/get-built-in":56,"../internals/global":59,"../internals/host-report-errors":62,"../internals/inspect-source":68,"../internals/internal-state":70,"../internals/is-forced":73,"../internals/is-object":74,"../internals/is-pure":75,"../internals/iterate":77,"../internals/microtask":81,"../internals/native-promise-constructor":82,"../internals/new-promise-capability":86,"../internals/perform":105,"../internals/promise-resolve":106,"../internals/redefine":108,"../internals/redefine-all":107,"../internals/set-species":116,"../internals/set-to-string-tag":117,"../internals/species-constructor":121,"../internals/task":128,"../internals/well-known-symbol":146}],179:[function(e,t,r){var o=e("../internals/export"),n=e("../internals/get-built-in"),s=e("../internals/a-function"),i=e("../internals/an-object"),a=e("../internals/is-object"),l=e("../internals/object-create"),u=e("../internals/function-bind"),e=e("../internals/fails"),c=n("Reflect","construct"),d=e(function(){function e(){}return!(c(function(){},[],e)instanceof e)}),f=!e(function(){c(function(){})}),n=d||f;o({target:"Reflect",stat:!0,forced:n,sham:n},{construct:function(e,t){s(e),i(t);var r=arguments.length<3?e:s(arguments[2]);if(f&&!d)return c(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var o=[null];return o.push.apply(o,t),new(u.apply(e,o))}o=r.prototype,r=l(a(o)?o:Object.prototype),o=Function.apply.call(e,r,t);return a(o)?o:r}})},{"../internals/a-function":5,"../internals/an-object":10,"../internals/export":50,"../internals/fails":51,"../internals/function-bind":55,"../internals/get-built-in":56,"../internals/is-object":74,"../internals/object-create":90}],180:[function(e,t,r){var o=e("../internals/descriptors"),n=e("../internals/global"),s=e("../internals/is-forced"),i=e("../internals/inherit-if-required"),a=e("../internals/object-define-property").f,l=e("../internals/object-get-own-property-names").f,u=e("../internals/is-regexp"),c=e("../internals/regexp-flags"),d=e("../internals/regexp-sticky-helpers"),f=e("../internals/redefine"),h=e("../internals/fails"),p=e("../internals/internal-state").set,m=e("../internals/set-species"),y=e("../internals/well-known-symbol")("match"),g=n.RegExp,v=g.prototype,b=/a/g,j=/a/g,_=new g(b)!==b,x=d.UNSUPPORTED_Y;if(o&&s("RegExp",!_||x||h(function(){return j[y]=!1,g(b)!=b||g(j)==j||"/a/i"!=g(b,"i")}))){for(var w=function(e,t){var r,o=this instanceof w,n=u(e),s=void 0===t;if(!o&&n&&e.constructor===w&&s)return e;_?n&&!s&&(e=e.source):e instanceof w&&(s&&(t=c.call(e)),e=e.source),x&&(r=!!t&&-1M;)!function(t){t in w||a(w,t,{configurable:!0,get:function(){return g[t]},set:function(e){g[t]=e}})}(S[M++]);(v.constructor=w).prototype=v,f(n,"RegExp",w)}m("RegExp")},{"../internals/descriptors":43,"../internals/fails":51,"../internals/global":59,"../internals/inherit-if-required":67,"../internals/internal-state":70,"../internals/is-forced":73,"../internals/is-regexp":76,"../internals/object-define-property":92,"../internals/object-get-own-property-names":95,"../internals/redefine":108,"../internals/regexp-flags":111,"../internals/regexp-sticky-helpers":112,"../internals/set-species":116,"../internals/well-known-symbol":146}],181:[function(e,t,r){"use strict";var o=e("../internals/export"),e=e("../internals/regexp-exec");o({target:"RegExp",proto:!0,forced:/./.exec!==e},{exec:e})},{"../internals/export":50,"../internals/regexp-exec":110}],182:[function(e,t,r){"use strict";var o=e("../internals/redefine"),n=e("../internals/an-object"),s=e("../internals/fails"),i=e("../internals/regexp-flags"),e="toString",a=RegExp.prototype,l=a[e],s=s(function(){return"/a/b"!=l.call({source:"a",flags:"b"})}),u=l.name!=e;(s||u)&&o(RegExp.prototype,e,function(){var e=n(this),t=String(e.source),r=e.flags;return"/"+t+"/"+String(void 0===r&&e instanceof RegExp&&!("flags"in a)?i.call(e):r)},{unsafe:!0})},{"../internals/an-object":10,"../internals/fails":51,"../internals/redefine":108,"../internals/regexp-flags":111}],183:[function(e,t,r){"use strict";var o=e("../internals/collection"),e=e("../internals/collection-strong");t.exports=o("Set",function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},e)},{"../internals/collection":32,"../internals/collection-strong":30}],184:[function(e,t,r){"use strict";var o=e("../internals/export"),n=e("../internals/object-get-own-property-descriptor").f,s=e("../internals/to-length"),i=e("../internals/not-a-regexp"),a=e("../internals/require-object-coercible"),l=e("../internals/correct-is-regexp-logic"),e=e("../internals/is-pure"),u="".endsWith,c=Math.min,l=l("endsWith");o({target:"String",proto:!0,forced:!!(e||l||(!(o=n(String.prototype,"endsWith"))||o.writable))&&!l},{endsWith:function(e){var t=String(a(this)),r=(i(e),1=t.length?{value:void 0,done:!0}:(t=o(t,r),e.index+=t.length,{value:t,done:!1})})},{"../internals/define-iterator":41,"../internals/internal-state":70,"../internals/string-multibyte":123}],187:[function(e,t,r){"use strict";var o=e("../internals/fix-regexp-well-known-symbol-logic"),c=e("../internals/an-object"),d=e("../internals/to-length"),n=e("../internals/require-object-coercible"),f=e("../internals/advance-string-index"),h=e("../internals/regexp-exec-abstract");o("match",1,function(o,l,u){return[function(e){var t=n(this),r=null==e?void 0:e[o];return void 0!==r?r.call(e,t):new RegExp(e)[o](String(t))},function(e){var t=u(l,e,this);if(t.done)return t.value;var r=c(e),o=String(this);if(!r.global)return h(r,o);for(var n=r.unicode,s=[],i=r.lastIndex=0;null!==(a=h(r,o));){var a=String(a[0]);""===(s[i]=a)&&(r.lastIndex=f(o,d(r.lastIndex),n)),i++}return 0===i?null:s}]})},{"../internals/advance-string-index":8,"../internals/an-object":10,"../internals/fix-regexp-well-known-symbol-logic":52,"../internals/regexp-exec-abstract":109,"../internals/require-object-coercible":113,"../internals/to-length":134}],188:[function(e,t,r){e("../internals/export")({target:"String",proto:!0},{repeat:e("../internals/string-repeat")})},{"../internals/export":50,"../internals/string-repeat":125}],189:[function(e,t,r){"use strict";var o=e("../internals/fix-regexp-well-known-symbol-logic"),M=e("../internals/an-object"),E=e("../internals/to-object"),T=e("../internals/to-length"),C=e("../internals/to-integer"),s=e("../internals/require-object-coercible"),O=e("../internals/advance-string-index"),L=e("../internals/regexp-exec-abstract"),k=Math.max,A=Math.min,P=Math.floor,R=/\$([$&'`]|\d\d?|<[^>]*>)/g,D=/\$([$&'`]|\d\d?)/g;o("replace",2,function(n,j,_,e){var x=e.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,w=e.REPLACE_KEEPS_$0,S=x?"$":"$0";return[function(e,t){var r=s(this),o=null==e?void 0:e[n];return void 0!==o?o.call(e,r,t):j.call(String(r),e,t)},function(e,t){if(!x&&w||"string"==typeof t&&-1===t.indexOf(S)){var r=_(j,e,this,t);if(r.done)return r.value}for(var o,n=M(e),s=String(this),i="function"==typeof t,a=(i||(t=String(t)),n.global),l=(a&&(o=n.unicode,n.lastIndex=0),[]);null!==(h=L(n,s))&&(l.push(h),a);)""===String(h[0])&&(n.lastIndex=O(s,T(n.lastIndex),o));for(var u,c="",d=0,f=0;f>>0;if(0==o)return[];if(void 0===e)return[r];if(!c(e))return p.call(r,e,o);for(var n,s,i,a=[],t=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,u=new RegExp(e.source,t+"g");(n=f.call(u,r))&&!(l<(s=u.lastIndex)&&(a.push(r.slice(l,n.index)),1=o));)u.lastIndex===n.index&&u.lastIndex++;return l===r.length?!i&&u.test("")||a.push(""):a.push(r.slice(l)),a.length>o?a.slice(0,o):a}:"0".split(void 0,0).length?function(e,t){return void 0===e&&0===t?[]:p.call(this,e,t)}:p;return[function(e,t){var r=d(this),o=null==e?void 0:e[n];return void 0!==o?o.call(e,r,t):y.call(String(r),e,t)},function(e,t){var r=m(y,e,this,t,y!==p);if(r.done)return r.value;var r=g(e),o=String(this),e=v(r,RegExp),n=r.unicode,s=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(S?"y":"g"),i=new e(S?r:"^(?:"+r.source+")",s),a=void 0===t?w:t>>>0;if(0==a)return[];if(0===o.length)return null===_(i,o)?[o]:[];for(var l=0,u=0,c=[];ue.key){o.splice(t,0,e);break}t===s&&o.push(e)}r.updateURL()},forEach:function(e){for(var t,r=k(this).entries,o=v(e,16)return;a=0;while(f()){l=null;if(a>0)if(f()=="."&&a<4)n++;else return;if(!x.test(f()))return;while(x.test(f())){u=parseInt(f(),10);if(l===null)l=u;else if(l==0)return;else l=l*10+u;if(l>255)return;n++}t[r]=t[r]*256+l;a++;if(a==2||a==4)r++}if(a!=4)return;break}else if(f()==":"){n++;if(!f())return}else if(f())return;t[r++]=s}if(o!==null){c=r-o;r=7;while(r!=0&&c>0){d=t[r];t[r--]=t[o+c-1];t[o+--c]=d}}else if(r!=8)return;return t}(t.slice(1,-1)))?void(e.host=r):_;if(C(e))return t=z(t),ne.test(t)||null===(r=function(e){var t=e.split("."),r,o,n,s,i,a,l;if(t.length&&t[t.length-1]=="")t.pop();if((r=t.length)>4)return e;for(o=[],n=0;n1&&s.charAt(0)=="0"){i=ee.test(s)?16:8;s=s.slice(i==8?1:2)}if(s==="")a=0;else{if(!(i==10?re:i==8?te:oe).test(s))return e;a=parseInt(s,i)}o.push(a)}for(n=0;n=Z(256,5-r))return null}else if(a>255)return null}for(l=o.pop(),n=0;n":1,"`":1}),ce=d({},ue,{"#":1,"?":1,"{":1,"}":1}),M=d({},ce,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),E=function(e,t){var r=V(e,0);return 32f,applyPalette:()=>function(e,t,r="rgb565"){if(!e||!e.buffer)throw new Error("quantize() expected RGBA Uint8Array data");if(!(e instanceof Uint8Array||e instanceof Uint8ClampedArray))throw new Error("quantize() expected RGBA Uint8Array data");if(256>24&255,c=l>>16&255,d=l>>8&255,l=255&l,f=k(l,d,c,u),f=f in a?a[f]:a[f]=function(t,r,o,n,s){let i=0,a=1e100;for(let e=0;ea||(l=u[0],(c+=v(l-t))>a||(l=u[1],(c+=v(l-r))>a||(l=u[2],(c+=v(l-o))>a||(a=c,i=e))))}return i}(l,d,c,u,t);i[e]=f}else{const g="rgb444"===r?A:L;for(let e=0;e>16&255,m=h>>8&255,h=255&h,y=g(h,m,p),y=y in a?a[y]:a[y]=function(t,r,o,n){let s=0,i=1e100;for(let e=0;ei||(a=l[1],(u+=v(a-r))>i||(a=l[2],(u+=v(a-o))>i||(i=u,s=e)))}return s}(h,m,p,t);i[e]=y}}return i},default:()=>h,nearestColor:()=>function(e,t,r=u){return e[l(e,t,r)]},nearestColorIndex:()=>l,nearestColorIndexWithDistance:()=>d,prequantize:()=>function(e,{roundRGB:r=5,roundAlpha:o=10,oneBitAlpha:n=null}={}){const s=new Uint32Array(e.buffer);for(let t=0;t>24&255;var a,l=i>>16&255,u=i>>8&255,i=255&i;e=c(e,o),n&&(a="number"==typeof n?n:127,e=e<=a?0:255),i=c(i,r),u=c(u,r),l=c(l,r),s[t]=e<<24|l<<16|u<<8|i<<0}},quantize:()=>function(e,t,r={}){var{format:o="rgb565",clearAlpha:n=!0,clearAlphaColor:s=0,clearAlphaThreshold:i=0,oneBitAlpha:a=!1}=r;if(!e||!e.buffer)throw new Error("quantize() expected RGBA Uint8Array data");if(!(e instanceof Uint8Array||e instanceof Uint8ClampedArray))throw new Error("quantize() expected RGBA Uint8Array data");e=new Uint32Array(e.buffer);let l=!1!==r.useSqrt;const u="rgba4444"===o,c=function(r,e){const t="rgb444"===e?4096:65536,o=new Array(t),n=r.length;if("rgba4444"===e)for(let t=0;t>24&255,a=s>>16&255,l=s>>8&255,s=255&s,u=k(s,l,a,i);let e=u in o?o[u]:o[u]=I();e.rc+=s,e.gc+=l,e.bc+=a,e.ac+=i,e.cnt++}else if("rgb444"===e)for(let t=0;t>16&255,f=c>>8&255,c=255&c,h=A(c,f,d);let e=h in o?o[h]:o[h]=I();e.rc+=c,e.gc+=f,e.bc+=d,e.cnt++}else for(let t=0;t>16&255,y=p>>8&255,p=255&p,g=L(p,y,m);let e=g in o?o[g]:o[g]=I();e.rc+=p,e.gc+=y,e.bc+=m,e.cnt++}return o}(e,o),d=c.length,f=d-1,h=new Uint32Array(d+1);for(var p=0,m=0;m>1,!(c[y=h[v]].err<=b));g=v)h[g]=y;h[g]=m}var j,_=p-t;for(m=0;m<_;){for(;;){var x=h[1];if((j=c[x]).tm>=j.mtm&&c[j.nn].mtm<=j.tm)break;j.mtm==f?x=h[1]=h[h[0]--]:(D(c,x,!1),j.tm=m);b=c[x].err;for(g=1;(v=g+g)<=h[0]&&(vc[h[v+1]].err&&v++,!(b<=c[y=h[v]].err));g=v)h[g]=y;h[g]=x}var w=c[j.nn],S=j.cnt,M=w.cnt,E=1/(S+M);u&&(j.ac=E*(S*j.ac+M*w.ac)),j.rc=E*(S*j.rc+M*w.rc),j.gc=E*(S*j.gc+M*w.gc),j.bc=E*(S*j.bc+M*w.bc),j.cnt+=w.cnt,j.mtm=++m,c[w.bk].fw=w.fw,c[w.fw].bk=w.bk,w.mtm=f}let T=[];for(m=0;;0){let e=P(Math.round(c[m].rc),0,255),t=P(Math.round(c[m].gc),0,255),r=P(Math.round(c[m].bc),0,255),o=255;u&&(o=P(Math.round(c[m].ac),0,255),a&&(C="number"==typeof a?a:127,o=o<=C?0:255),n&&o<=i&&(e=t=r=s,o=0));var C=u?[e,t,r,o]:[e,t,r];if(function(t,r){for(let e=0;efunction(r,o,e=5){if(r.length&&o.length){var n=r.map(e=>e.slice(0,3)),s=e*e,i=r[0].length;for(let t=0;ti?e.slice(0,3):e.slice();var a=d(n,e.slice(0,3),u),l=a[0],a=a[1];0>>0),0!=t&&(e=Math.max(e,256));const r=s;s=new Uint8Array(e),0>=8,c-=8;if((v>m||h)&&(h?(p=f,m=(1<>=8,c-=8;0>3}function k(e,t,r,o){return e>>4|240&t|(240&r)<<4|(240&o)<<8}function A(e,t,r){return e>>4<<8|240&t|r>>4}function P(e,t,r){return e>8&255)}function O(e,t){for(var r=0;r>1,c=-7,d=r?n-1:0,f=r?-1:1,n=e[t+d];for(d+=f,s=n&(1<<-c)-1,n>>=-c,c+=a;0>=-c,c+=o;0>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,f=o?0:s-1,h=o?1:-1,s=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,i=u):(i=Math.floor(Math.log(t)/Math.LN2),t*(o=Math.pow(2,-i))<1&&(i--,o*=2),2<=(t+=1<=i+c?d/o:d*Math.pow(2,1-c))*o&&(i++,o/=2),u<=i+c?(a=0,i=u):1<=i+c?(a=(t*o-1)*Math.pow(2,n),i+=c):(a=t*Math.pow(2,c-1)*Math.pow(2,n),i=0));8<=n;e[r+f]=255&a,f+=h,a/=256,n-=8);for(i=i<Math.abs(e[0])&&(t=1),t=Math.abs(e[2])>Math.abs(e[t])?2:t}function T(e,t){e.f+=t.f,e.b.f+=t.b.f}function f(e,t,r){return e=e.a,t=t.a,r=r.a,t.b.a===e?r.b.a===e?g(t.a,r.a)?b(r.b.a,t.a,r.a)<=0:0<=b(t.b.a,r.a,t.a):b(r.b.a,e,r.a)<=0:r.b.a===e?0<=b(t.b.a,e,t.a):(t=v(t.b.a,e,t.a),(e=v(r.b.a,e,r.a))<=t)}function C(e){e.a.i=null;var t=e.e;t.a.c=t.c,t.c.a=t.a,e.e=null}function O(e,t){m(e.a),e.c=!1,(e.a=t).i=e}function L(e){for(var t=e.a.a;(e=G(e)).a.a===t;);return e.c&&(O(e,t=S(B(e).a.b,e.a.e)),e=G(e)),e}function q(e,t,r){var o=new F;return o.a=r,o.e=p(e.f,t.e,o),r.i=o}function X(e,t){switch(e.s){case 100130:return 0!=(1&t);case 100131:return 0!==t;case 100132:return 0>1]],a[i[u]])?N:ue)(r,u),a[s]=null,l[s]=r.b,r.b=s}else for(r.c[-(s+1)]=null;0Math.max(i.a,l.a))){if(g(s,i)){if(0r.f&&(r.f*=2,r.c=ae(r.c,r.f+1)),0===r.b?n=o:(n=r.b,r.b=r.c[r.b]),r.e[n]=t,r.c[n]=o,r.d[o]=n,r.h&&ue(r,o),n):(r=e.a++,e.c[r]=t,-(r+1))}function se(e){if(0===e.a)return le(e.b);var t=e.c[e.d[e.a-1]];if(0!==e.b.a&&g(U(e.b),t))return le(e.b);for(;--e.a,0e.a||g(o[i],o[l])){n[r[s]=i]=s;break}n[r[s]=l]=s,s=a}}function ue(e,t){for(var r=e.d,o=e.e,n=e.c,s=t,i=r[s];;){var a=s>>1,l=r[a];if(0==a||g(o[l],o[i])){n[r[s]=i]=s;break}n[r[s]=l]=s,s=a}}function F(){this.e=this.a=null,this.f=0,this.c=this.b=this.h=this.d=!1}function B(e){return e.e.c.b}function G(e){return e.e.a.b}(t=r.prototype).x=function(){D(this,0)},t.B=function(e,t){switch(e){case 100142:return;case 100140:switch(t){case 100130:case 100131:case 100132:case 100133:case 100134:return void(this.s=t)}break;case 100141:return void(this.m=!!t);default:return void l(this,100900)}l(this,100901)},t.y=function(e){switch(e){case 100142:return 0;case 100140:return this.s;case 100141:return this.m;default:l(this,100900)}return!1},t.A=function(e,t,r){this.j[0]=e,this.j[1]=t,this.j[2]=r},t.z=function(e,t){var r=t||null;switch(e){case 100100:case 100106:this.h=r;break;case 100104:case 100110:this.l=r;break;case 100101:case 100107:this.k=r;break;case 100102:case 100108:this.i=r;break;case 100103:case 100109:this.p=r;break;case 100105:case 100111:this.o=r;break;case 100112:this.r=r;break;default:l(this,100900)}},t.C=function(e,t){var r=!1,o=[0,0,0];D(this,2);for(var n=0;n<3;++n){var s=e[n];s<-1e150&&(s=-1e150,r=!0),1e150o[u]&&(o[u]=c,n[u]=r)}if(o[1]-a[1]>o[r=0]-a[0]&&(r=1),a[r=o[2]-a[2]>o[r]-a[r]?2:r]>=o[r])i[0]=0,i[1]=0,i[2]=1;else{for(a=l[r],n=n[r],l=[o=0,0,0],a=[a.g[0]-n.g[0],a.g[1]-n.g[1],a.g[2]-n.g[2]],u=[0,0,0],r=s.e;r!==s;r=r.e)u[0]=r.g[0]-n.g[0],u[1]=r.g[1]-n.g[1],u[2]=r.g[2]-n.g[2],l[0]=a[1]*u[2]-a[2]*u[1],l[1]=a[2]*u[0]-a[0]*u[2],l[2]=a[0]*u[1]-a[1]*u[0],o<(c=l[0]*l[0]+l[1]*l[1]+l[2]*l[2])&&(o=c,i[0]=l[0],i[1]=l[1],i[2]=l[2]);o<=0&&(i[0]=i[1]=i[2]=0,i[W(a)]=1)}s=!0}for(l=W(i),r=this.b.c,o=(l+1)%3,n=(l+2)%3,l=0>=1;)++n;if(i=1<>8&255,g[v++]=255&t,g[v++]=t>>8&255,g[v++]=(null!==b?128:0)|n,g[v++]=s,g[v++]=0,null!==b)for(var a=0,l=b.length;a>16&255,g[v++]=u>>8&255,g[v++]=255&u}if(null!==o){if(o<0||65535>8&255,g[v++]=0}var _=!1;this.addFrame=function(e,t,r,o,n,s){if(!0===_&&(--v,_=!1),s=void 0===s?{}:s,e<0||t<0||65535>=1;)++u;var l=1<>8&255,g[v++]=h,g[v++]=0),g[v++]=44,g[v++]=255&e,g[v++]=e>>8&255,g[v++]=255&t,g[v++]=t>>8&255,g[v++]=255&r,g[v++]=r>>8&255,g[v++]=255&o,g[v++]=o>>8&255,g[v++]=!0===i?128|u-1:0,!0===i)for(var p=0,m=a.length;p>16&255,g[v++]=y>>8&255,g[v++]=255&y}return v=function(t,r,e,o){t[r++]=e;var n=r++,s=1<>=8,c-=8,r===n+256&&(t[n]=255,n=r++)}function h(e){d|=e<>=8,c-=8,r===n+256&&(t[n]=255,n=r++);4096===l?(h(s),l=1+a,u=e+1,m={}):(1<>=l,c-=l,y==s)a=1+i,u=(1<<(l=n+1))-1,m=null;else{if(y==i)break;for(var g=y>8,++v;var j=b;if(o>=8;null!==m&&a<4096&&(p[a++]=m<<8|j,u+1<=a&&l<12&&(++l,u=u<<1|1)),m=y}}f!==o&&console.log("Warning, gif stream shorter than expected.")}try{r.GifWriter=o,r.GifReader=function(b){var e=0;if(71!==b[e++]||73!==b[e++]||70!==b[e++]||56!==b[e++]||56!=(b[e++]+1&253)||97!==b[e++])throw new Error("Invalid GIF 87a/89a header.");var j=b[e++]|b[e++]<<8,t=b[e++]|b[e++]<<8,r=b[e++],o=1<<1+(7&r),n=(b[e++],b[e++],null),s=null,i=(r>>7&&(n=e,e+=3*(s=o)),!0),a=[],l=0,u=null,c=0,d=null;for(this.width=j,this.height=t;i&&e>2&7,e++;break;case 254:for(;;){if(!(0<=(h=b[e++])))throw Error("Invalid block size");if(0===h)break;e+=h}break;default:throw new Error("Unknown graphic control label: 0x"+b[e-1].toString(16))}break;case 44:var h,p=b[e++]|b[e++]<<8,m=b[e++]|b[e++]<<8,y=b[e++]|b[e++]<<8,g=b[e++]|b[e++]<<8,v=b[e++],_=v>>6&1,x=1<<1+(7&v),w=n,S=s,M=!1,v=(v>>7&&(M=!0,w=e,e+=3*(S=x)),e);for(e++;;){if(!(0<=(h=b[e++])))throw Error("Invalid block size");if(0===h)break;e+=h}a.push({x:p,y:m,width:y,height:g,has_local_palette:M,palette_offset:w,palette_size:S,data_offset:v,data_length:e-v,transparent_index:u,interlaced:!!_,delay:l,disposal:c});break;case 59:i=!1;break;default:throw new Error("Unknown gif block: 0x"+b[e-1].toString(16))}this.numFrames=function(){return a.length},this.loopCount=function(){return d},this.frameInfo=function(e){if(e<0||e>=a.length)throw new Error("Frame index out of range.");return a[e]},this.decodeAndBlitFrameBGRA=function(e,t){for(var e=this.frameInfo(e),r=e.width*e.height,o=new Uint8Array(r),n=(E(b,e.data_offset,o,r),e.palette_offset),s=e.transparent_index,i=(null===s&&(s=256),e.width),a=j-i,l=i,u=4*(e.y*j+e.x),c=4*((e.y+e.height)*j+e.x),d=u,f=4*a,h=(!0===e.interlaced&&(f+=4*j*7),8),p=0,m=o.length;p>=1)),v===s?d+=4:(y=b[n+3*v],g=b[n+3*v+1],v=b[n+3*v+2],t[d++]=v,t[d++]=g,t[d++]=y,t[d++]=255),--l}},this.decodeAndBlitFrameRGBA=function(e,t){for(var e=this.frameInfo(e),r=e.width*e.height,o=new Uint8Array(r),n=(E(b,e.data_offset,o,r),e.palette_offset),s=e.transparent_index,i=(null===s&&(s=256),e.width),a=j-i,l=i,u=4*(e.y*j+e.x),c=4*((e.y+e.height)*j+e.x),d=u,f=4*a,h=(!0===e.interlaced&&(f+=4*j*7),8),p=0,m=o.length;p>=1)),v===s?d+=4:(y=b[n+3*v],g=b[n+3*v+1],v=b[n+3*v+2],t[d++]=y,t[d++]=g,t[d++]=v,t[d++]=255),--l}}}}catch(e){}},{}],241:[function(Ar,r,o){!function(kr){var e,t;e=this,t=function(j){"use strict";function I(e){if(null==this)throw TypeError();var t,r=String(this),o=r.length,e=e?Number(e):0;if(!((e=e!=e?0:e)<0||o<=e))return 55296<=(t=r.charCodeAt(e))&&t<=56319&&e+1>>16-t;return e.tag>>>=t,e.bitcount-=t,o+r}function $(e,t){for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<>>=1,r+=t.table[++n],0<=(o-=t.table[n]););return e.tag=s,e.bitcount-=n,t.trans[r+o]}function ee(e,t,r){for(;;){var o=$(e,t);if(256===o)return N;if(o<256)e.dest[e.destLen++]=o;else for(var n,s=b(e,H[o-=257],W[o]),o=$(e,r),i=n=e.destLen-b(e,q[o],X[o]);i>>=1,o=n,b(s,2,0)){case 0:r=function(e){for(var t,r;8this.x2&&(this.x2=e)),"number"==typeof t&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),tthis.y2&&(this.y2=t))},a.prototype.addX=function(e){this.addPoint(e,null)},a.prototype.addY=function(e){this.addPoint(null,e)},a.prototype.addBezier=function(e,t,r,o,n,s,i,a){var l=[e,t],u=[r,o],c=[n,s],d=[i,a];this.addPoint(e,t),this.addPoint(i,a);for(var f=0;f<=1;f++){var h,p=6*l[f]-12*u[f]+6*c[f],m=-3*l[f]+9*u[f]-9*c[f]+3*d[f],y=3*u[f]-3*l[f];0==m?0==p||0<(h=-y/p)&&h<1&&(0===f&&this.addX(g(l[f],u[f],c[f],d[f],h)),1===f&&this.addY(g(l[f],u[f],c[f],d[f],h))):(h=Math.pow(p,2)-4*y*m)<0||(0<(y=(-p+Math.sqrt(h))/(2*m))&&y<1&&(0===f&&this.addX(g(l[f],u[f],c[f],d[f],y)),1===f&&this.addY(g(l[f],u[f],c[f],d[f],y))),0<(y=(-p-Math.sqrt(h))/(2*m))&&y<1&&(0===f&&this.addX(g(l[f],u[f],c[f],d[f],y)),1===f&&this.addY(g(l[f],u[f],c[f],d[f],y))))}},a.prototype.addQuad=function(e,t,r,o,n,s){r=e+2/3*(r-e),o=t+2/3*(o-t);this.addBezier(e,t,r,o,r+1/3*(n-e),o+1/3*(s-t),n,s)},f.prototype.moveTo=function(e,t){this.commands.push({type:"M",x:e,y:t})},f.prototype.lineTo=function(e,t){this.commands.push({type:"L",x:e,y:t})},f.prototype.curveTo=f.prototype.bezierCurveTo=function(e,t,r,o,n,s){this.commands.push({type:"C",x1:e,y1:t,x2:r,y2:o,x:n,y:s})},f.prototype.quadTo=f.prototype.quadraticCurveTo=function(e,t,r,o){this.commands.push({type:"Q",x1:e,y1:t,x:r,y:o})},f.prototype.close=f.prototype.closePath=function(){this.commands.push({type:"Z"})},f.prototype.extend=function(e){var t;if(e.commands)e=e.commands;else if(e instanceof a)return t=e,this.moveTo(t.x1,t.y1),this.lineTo(t.x2,t.y1),this.lineTo(t.x2,t.y2),this.lineTo(t.x1,t.y2),void this.close();Array.prototype.push.apply(this.commands,e)},f.prototype.getBoundingBox=function(){for(var e=new a,t=0,r=0,o=0,n=0,s=0;s>8&255,255&e]},l.USHORT=r(2),w.SHORT=function(e){return[(e=32768<=e?-(65536-e):e)>>8&255,255&e]},l.SHORT=r(2),w.UINT24=function(e){return[e>>16&255,e>>8&255,255&e]},l.UINT24=r(3),w.ULONG=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},l.ULONG=r(4),w.LONG=function(e){return[(e=2147483648<=e?-(4294967296-e):e)>>24&255,e>>16&255,e>>8&255,255&e]},l.LONG=r(4),w.FIXED=w.ULONG,l.FIXED=l.ULONG,w.FWORD=w.SHORT,l.FWORD=l.SHORT,w.UFWORD=w.USHORT,l.UFWORD=l.USHORT,w.LONGDATETIME=function(e){return[0,0,0,0,e>>24&255,e>>16&255,e>>8&255,255&e]},l.LONGDATETIME=r(8),w.TAG=function(e){return P.argument(4===e.length,"Tag should be exactly 4 ASCII characters."),[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]},l.TAG=r(4),w.Card8=w.BYTE,l.Card8=l.BYTE,w.Card16=w.USHORT,l.Card16=l.USHORT,w.OffSize=w.BYTE,l.OffSize=l.BYTE,w.SID=w.USHORT,l.SID=l.USHORT,w.NUMBER=function(e){return-107<=e&&e<=107?[e+139]:108<=e&&e<=1131?[247+((e-=108)>>8),255&e]:-1131<=e&&e<=-108?[251+((e=-e-108)>>8),255&e]:-32768<=e&&e<=32767?w.NUMBER16(e):w.NUMBER32(e)},l.NUMBER=function(e){return w.NUMBER(e).length},w.NUMBER16=function(e){return[28,e>>8&255,255&e]},l.NUMBER16=r(3),w.NUMBER32=function(e){return[29,e>>24&255,e>>16&255,e>>8&255,255&e]},l.NUMBER32=r(5),w.REAL=function(e){for(var t=e.toString(),r=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(t),o=(r&&(r=parseFloat("1e"+((r[2]?+r[2]:0)+r[1].length)),t=(Math.round(e*r)/r).toString()),""),n=0,s=t.length;n>8&255,t[t.length]=255&o}return t},l.UTF16=function(e){return 2*e.length};var se,ie={"x-mac-croatian":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ","x-mac-cyrillic":"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю","x-mac-gaelic":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ","x-mac-greek":"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ­","x-mac-icelandic":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-inuit":"ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł","x-mac-ce":"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ",macintosh:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-romanian":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-turkish":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ"},ae=(m.MACSTRING=function(e,t,r,o){var n=ie[o];if(void 0!==n){for(var s="",i=0;i>8&255,l+256&255)}return s})(e,t,r);return r},w.INDEX=function(e){for(var t=1,r=[t],o=[],n=0;n>8,t[c+1]=255&d,t=t.concat(o[u])}return t},l.TABLE=function(e){for(var t=0,r=e.fields.length,o=0;o>1,a.skip("uShort",3),y.glyphIndexMap={};for(var j,_=new R.Parser(g,v+b+14),x=new R.Parser(g,v+b+16+2*j),w=new R.Parser(g,v+b+16+4*j),S=new R.Parser(g,v+b+16+6*j),M=v+b+16+8*j,E=0;E>4,s=15&s;if(15==i)break;if(o+=n[i],15==s)break;o+=n[s]}return parseFloat(o)}if(32<=t&&t<=246)return t-139;if(247<=t&&t<=250)return 256*(t-247)+e.parseByte()+108;if(251<=t&&t<=254)return 256*-(t-251)-e.parseByte()-108;throw new Error("Invalid b0 "+t)}function De(e,t,r){var o=new R.Parser(e,t=void 0!==t?t:0),n=[],s=[];for(r=void 0!==r?r:e.length;o.relativeOffset>1,E.length=0,C=!0}return function e(t){for(var r,o,n,s,i,a,l,u,c,d,f,h,p=0;pMath.abs(h-k)?L=f+E.shift():k=h+E.shift(),M.curveTo(v,b,j,_,l,u),M.curveTo(c,d,f,h,L,k);break;default:console.log("Glyph "+g.index+": unknown operator 1200"+m),E.length=0}break;case 14:0>3;break;case 21:2>16),p+=2;break;case 29:i=E.pop()+y.gsubrsBias,(a=y.gsubrs[i])&&e(a);break;case 30:for(;0=r.begin&&e=c.length&&(s=o.parseChar(),r.names.push(o.parseString(s)));break;case 2.5:r.numberOfGlyphs=o.parseUShort(),r.offset=new Array(r.numberOfGlyphs);for(var a=0;at.value.tag?1:-1}),t.fields=t.fields.concat(o),t.fields=t.fields.concat(n),t}function xt(e,t,r){for(var o=0;o 123 are reserved for internal usage");h|=1<>>1,s=e[n].tag;if(s===t)return n;s>>1,s=e[n];if(s===t)return n;s>>1,i=(n=e[s]).start;if(i===t)return n;i(n=e[r-1]).end?0:n}function Tt(e,t){this.font=e,this.tableName=t}function Ct(e){Tt.call(this,e,"gpos")}function i(e){Tt.call(this,e,"gsub")}function Ot(e,t,r){for(var o=e.subtables,n=0;nt.points.length-1||o.matchedPoints[1]>n.points.length-1)throw Error("Matched points out of range in "+t.name);var i=t.points[o.matchedPoints[0]],a=n.points[o.matchedPoints[1]],o={xScale:o.xScale,scale01:o.scale01,scale10:o.scale10,yScale:o.yScale,dx:0,dy:0},a=Pt([a],o)[0];o.dx=i.x-a.x,o.dy=i.y-a.y,s=Pt(n.points,o)}t.points=t.points.concat(s)}}return Rt(t.points)}(Ct.prototype=Tt.prototype={searchTag:St,binSearch:Mt,getTable:function(e){var t=this.font.tables[this.tableName];return t=!t&&e?this.font.tables[this.tableName]=this.createDefaultTable():t},getScriptNames:function(){var e=this.getTable();return e?e.scripts.map(function(e){return e.tag}):[]},getDefaultScriptName:function(){var e=this.getTable();if(e){for(var t=!1,r=0;r=i[t-1].tag,"Features must be added in alphabetical order."),i.push(n={tag:r,feature:{params:0,lookupListIndexes:[]}}),s.push(t),n.feature}},getLookupTables:function(e,t,r,o,n){var e=this.getFeatureTable(e,t,r,n),s=[];if(e){for(var i,a=e.lookupListIndexes,l=this.font.tables[this.tableName].lookups,u=0;u",s),t.stack.push(Math.round(64*s))}function fr(e,t){var r=t.stack,o=r.pop(),n=t.fv,s=t.pv,i=t.ppem,a=t.deltaBase+16*(e-1),l=t.deltaShift,u=t.z0;j.DEBUG&&console.log(t.step,"DELTAP["+e+"]",o,r);for(var c=0;c>4)===i&&(0<=(f=(15&f)-8)&&f++,j.DEBUG&&console.log(t.step,"DELTAPFIX",d,"by",f*l),d=u[d],n.setRelative(d,d,f*l,s))}}function hr(e,t){var r=t.stack,o=r.pop();j.DEBUG&&console.log(t.step,"ROUND[]"),r.push(64*t.round(o/64))}function pr(e,t){var r=t.stack,o=r.pop(),n=t.ppem,s=t.deltaBase+16*(e-1),i=t.deltaShift;j.DEBUG&&console.log(t.step,"DELTAC["+e+"]",o,r);for(var a=0;a>4)===n&&(0<=(u=(15&u)-8)&&u++,u=u*i,j.DEBUG&&console.log(t.step,"DELTACFIX",l,"by",u),t.cvt[l]+=u)}}function mr(e,t){var r,o=t.stack,n=o.pop(),o=o.pop(),s=t.z2[n],i=t.z1[o];j.DEBUG&&console.log(t.step,"SDPVTL["+e+"]",n,o),n=e?(r=s.y-i.y,i.x-s.x):(r=i.x-s.x,i.y-s.y),t.dpv=qt(r,n)}function C(e,t){var r=t.stack,o=t.prog,n=t.ip;j.DEBUG&&console.log(t.step,"PUSHB["+e+"]");for(var s=0;s":"_")+(o?"R":"_")+(0===n?"Gr":1===n?"Bl":2===n?"Wh":"")+"]",e?u+"("+s.cvt[u]+","+a+")":"",l,"(d =",i,"->",y*m,")"),s.rp1=s.rp0,s.rp2=l,t&&(s.rp0=l)}Ut.prototype.exec=function(e,t){if("number"!=typeof t)throw new Error("Point size is not a number!");if(!(2",o),a.interpolate(d,s,i,l),a.touch(d)}e.loop=1},lr.bind(void 0,0),lr.bind(void 0,1),function(e){for(var t=e.stack,r=e.rp0,o=e.z0[r],n=e.loop,s=e.fv,i=e.pv,a=e.z1;n--;){var l=t.pop(),u=a[l];j.DEBUG&&console.log(e.step,(1'.concat(n,"").concat(t,""),this.dummyDOM||(this.dummyDOM=document.getElementById(o).parentNode),this.descriptions?this.descriptions.fallbackElements||(this.descriptions.fallbackElements={}):this.descriptions={fallbackElements:{}},this.descriptions.fallbackElements[e]?this.descriptions.fallbackElements[e].innerHTML!==n&&(this.descriptions.fallbackElements[e].innerHTML=n):this._describeElementHTML("fallback",e,n),r===this.LABEL&&(this.descriptions.labelElements||(this.descriptions.labelElements={}),this.descriptions.labelElements[e]?this.descriptions.labelElements[e].innerHTML!==n&&(this.descriptions.labelElements[e].innerHTML=n):this._describeElementHTML("label",e,n)))},s.default.prototype._describeHTML=function(e,t){var r,o=this.canvas.id;"fallback"===e?(this.dummyDOM.querySelector("#".concat(o+i))?this.dummyDOM.querySelector("#"+o+l).insertAdjacentHTML("beforebegin",'

')):(r='

'),this.dummyDOM.querySelector("#".concat(o,"accessibleOutput"))?this.dummyDOM.querySelector("#".concat(o,"accessibleOutput")).insertAdjacentHTML("beforebegin",r):this.dummyDOM.querySelector("#".concat(o)).innerHTML=r),this.descriptions.fallback=this.dummyDOM.querySelector("#".concat(o).concat(a)),this.descriptions.fallback.innerHTML=t):"label"===e&&(this.dummyDOM.querySelector("#".concat(o+u))?this.dummyDOM.querySelector("#".concat(o+d))&&this.dummyDOM.querySelector("#".concat(o+d)).insertAdjacentHTML("beforebegin",'

')):(r='

'),this.dummyDOM.querySelector("#".concat(o,"accessibleOutputLabel"))?this.dummyDOM.querySelector("#".concat(o,"accessibleOutputLabel")).insertAdjacentHTML("beforebegin",r):this.dummyDOM.querySelector("#"+o).insertAdjacentHTML("afterend",r)),this.descriptions.label=this.dummyDOM.querySelector("#"+o+c),this.descriptions.label.innerHTML=t)},s.default.prototype._describeElementHTML=function(e,t,r){var o,n=this.canvas.id;"fallback"===e?(this.dummyDOM.querySelector("#".concat(n+i))?this.dummyDOM.querySelector("#"+n+l)||this.dummyDOM.querySelector("#"+n+a).insertAdjacentHTML("afterend",'
Canvas elements and their descriptions
')):(o='
Canvas elements and their descriptions
'),this.dummyDOM.querySelector("#".concat(n,"accessibleOutput"))?this.dummyDOM.querySelector("#".concat(n,"accessibleOutput")).insertAdjacentHTML("beforebegin",o):this.dummyDOM.querySelector("#"+n).innerHTML=o),(o=document.createElement("tr")).id=n+"_fte_"+t,this.dummyDOM.querySelector("#"+n+l).appendChild(o),this.descriptions.fallbackElements[t]=this.dummyDOM.querySelector("#".concat(n).concat("_fte_").concat(t)),this.descriptions.fallbackElements[t].innerHTML=r):"label"===e&&(this.dummyDOM.querySelector("#".concat(n+u))?this.dummyDOM.querySelector("#".concat(n+d))||this.dummyDOM.querySelector("#"+n+c).insertAdjacentHTML("afterend",'
')):(o='
'),this.dummyDOM.querySelector("#".concat(n,"accessibleOutputLabel"))?this.dummyDOM.querySelector("#".concat(n,"accessibleOutputLabel")).insertAdjacentHTML("beforebegin",o):this.dummyDOM.querySelector("#"+n).insertAdjacentHTML("afterend",o)),(e=document.createElement("tr")).id=n+"_lte_"+t,this.dummyDOM.querySelector("#"+n+d).appendChild(e),this.descriptions.labelElements[t]=this.dummyDOM.querySelector("#".concat(n).concat("_lte_").concat(t)),this.descriptions.labelElements[t].innerHTML=r)};e=s.default;r.default=e},{"../core/main":267,"core-js/modules/es.array.concat":149,"core-js/modules/es.regexp.exec":181,"core-js/modules/es.string.ends-with":184,"core-js/modules/es.string.replace":189}],248:[function(e,t,r){"use strict";e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.map"),e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.map"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;e=(e=e("../core/main"))&&e.__esModule?e:{default:e};e.default.prototype._updateGridOutput=function(e){var t,r,o,n;this.dummyDOM.querySelector("#".concat(e,"_summary"))&&(t=this._accessibleOutputs[e],o=function(e,t,r,o){t="".concat(t," canvas, ").concat(r," by ").concat(o," pixels, contains ").concat(e[0]);t=(1===e[0]?"".concat(t," shape: "):"".concat(t," shapes: ")).concat(e[1]);return t}((r=function(e,t){var r,o="",n="",s=0;for(r in t){var i,a=0;for(i in t[r]){var l='
  • ').concat(t[r][i].color," ").concat(r,",");"line"===r?l+=" location = ".concat(t[r][i].pos,", length = ").concat(t[r][i].length," pixels"):(l+=" location = ".concat(t[r][i].pos),"point"!==r&&(l+=", area = ".concat(t[r][i].area," %")),l+="
  • "),o+=l,a++,s++}n=1').concat(t[o][l].color," ").concat(o,"
    "):'').concat(t[o][l].color," ").concat(o," midpoint"),a[t[o][l].loc.locY][t[o][l].loc.locX]?a[t[o][l].loc.locY][t[o][l].loc.locX]=a[t[o][l].loc.locY][t[o][l].loc.locX]+" "+u:a[t[o][l].loc.locY][t[o][l].loc.locX]=u,s++}for(n in a){var c,d="";for(c in a[n])d+="",void 0!==a[n][c]&&(d+=a[n][c]),d+="";i=i+d+""}return i}(e,this.ingredients.shapes),o!==t.summary.innerHTML&&(t.summary.innerHTML=o),n!==t.map.innerHTML&&(t.map.innerHTML=n),r.details!==t.shapeDetails.innerHTML&&(t.shapeDetails.innerHTML=r.details),this._accessibleOutputs[e]=t)};e=e.default;r.default=e},{"../core/main":267,"core-js/modules/es.array.concat":149,"core-js/modules/es.array.map":161}],249:[function(e,t,r){"use strict";e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.fill"),e("core-js/modules/es.array.map"),e("core-js/modules/es.number.to-fixed"),e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.fill"),e("core-js/modules/es.array.map"),e("core-js/modules/es.number.to-fixed"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var o=(e=e("../core/main"))&&e.__esModule?e:{default:e};function l(e,t,r){return e[0]<.4*t?e[1]<.4*r?"top left":e[1]>.6*r?"bottom left":"mid left":e[0]>.6*t?e[1]<.4*r?"top right":e[1]>.6*r?"bottom right":"mid right":e[1]<.4*r?"top middle":e[1]>.6*r?"bottom middle":"middle"}function u(e,t,r){t=Math.floor(e[0]/t*10),e=Math.floor(e[1]/r*10);return 10===t&&(t-=1),10===e&&(e-=1),{locX:t,locY:e}}o.default.prototype.textOutput=function(e){o.default._validateParameters("textOutput",arguments),this._accessibleOutputs.text||(this._accessibleOutputs.text=!0,this._createOutput("textOutput","Fallback"),e===this.LABEL&&(this._accessibleOutputs.textLabel=!0,this._createOutput("textOutput","Label")))},o.default.prototype.gridOutput=function(e){o.default._validateParameters("gridOutput",arguments),this._accessibleOutputs.grid||(this._accessibleOutputs.grid=!0,this._createOutput("gridOutput","Fallback"),e===this.LABEL&&(this._accessibleOutputs.gridLabel=!0,this._createOutput("gridOutput","Label")))},o.default.prototype._addAccsOutput=function(){return this._accessibleOutputs||(this._accessibleOutputs={text:!1,grid:!1,textLabel:!1,gridLabel:!1}),this._accessibleOutputs.grid||this._accessibleOutputs.text},o.default.prototype._createOutput=function(e,t){var r,o,n,s=this.canvas.id,i=(this.ingredients||(this.ingredients={shapes:{},colors:{background:"white",fill:"white",stroke:"black"},pShapes:""}),this.dummyDOM||(this.dummyDOM=document.getElementById(s).parentNode),"");"Fallback"===t?(r=s+e,this.dummyDOM.querySelector("#".concat(o=s+"accessibleOutput"))||(this.dummyDOM.querySelector("#".concat(s,"_Description"))?this.dummyDOM.querySelector("#".concat(s,"_Description")).insertAdjacentHTML("afterend",'
    ')):this.dummyDOM.querySelector("#".concat(s)).innerHTML='
    '))):"Label"===t&&(r=s+e+(i=t),this.dummyDOM.querySelector("#".concat(o=s+"accessibleOutput"+t))||(this.dummyDOM.querySelector("#".concat(s,"_Label"))?this.dummyDOM.querySelector("#".concat(s,"_Label")):this.dummyDOM.querySelector("#".concat(s))).insertAdjacentHTML("afterend",'
    '))),this._accessibleOutputs[r]={},"textOutput"===e?(i="#".concat(s,"gridOutput").concat(i),n='
    Text Output

      '),this.dummyDOM.querySelector(i)?this.dummyDOM.querySelector(i).insertAdjacentHTML("beforebegin",n):this.dummyDOM.querySelector("#".concat(o)).innerHTML=n,this._accessibleOutputs[r].list=this.dummyDOM.querySelector("#".concat(r,"_list"))):"gridOutput"===e&&(i="#".concat(s,"textOutput").concat(i),n='
      Grid Output

        '),this.dummyDOM.querySelector(i)?this.dummyDOM.querySelector(i).insertAdjacentHTML("afterend",n):this.dummyDOM.querySelector("#".concat(o)).innerHTML=n,this._accessibleOutputs[r].map=this.dummyDOM.querySelector("#".concat(r,"_map"))),this._accessibleOutputs[r].shapeDetails=this.dummyDOM.querySelector("#".concat(r,"_shapeDetails")),this._accessibleOutputs[r].summary=this.dummyDOM.querySelector("#".concat(r,"_summary"))},o.default.prototype._updateAccsOutput=function(){var e=this.canvas.id;JSON.stringify(this.ingredients.shapes)!==this.ingredients.pShapes&&(this.ingredients.pShapes=JSON.stringify(this.ingredients.shapes),this._accessibleOutputs.text&&this._updateTextOutput(e+"textOutput"),this._accessibleOutputs.grid&&this._updateGridOutput(e+"gridOutput"),this._accessibleOutputs.textLabel&&this._updateTextOutput(e+"textOutputLabel"),this._accessibleOutputs.gridLabel&&this._updateGridOutput(e+"gridOutputLabel"))},o.default.prototype._accsBackground=function(e){this.ingredients.pShapes=JSON.stringify(this.ingredients.shapes),this.ingredients.shapes={},this.ingredients.colors.backgroundRGBA!==e&&(this.ingredients.colors.backgroundRGBA=e,this.ingredients.colors.background=this._rgbColorName(e))},o.default.prototype._accsCanvasColors=function(e,t){"fill"===e?this.ingredients.colors.fillRGBA!==t&&(this.ingredients.colors.fillRGBA=t,this.ingredients.colors.fill=this._rgbColorName(t)):"stroke"===e&&this.ingredients.colors.strokeRGBA!==t&&(this.ingredients.colors.strokeRGBA=t,this.ingredients.colors.stroke=this._rgbColorName(t))},o.default.prototype._accsOutput=function(e,t){"ellipse"===e&&t[2]===t[3]?e="circle":"rectangle"===e&&t[2]===t[3]&&(e="square");var r,o,n={},s=!0,i=function(e,t){var r;e="rectangle"===e||"ellipse"===e||"arc"===e||"circle"===e||"square"===e?(r=Math.round(t[0]+t[2]/2),Math.round(t[1]+t[3]/2)):"triangle"===e?(r=(t[0]+t[2]+t[4])/3,(t[1]+t[3]+t[5])/3):"quadrilateral"===e?(r=(t[0]+t[2]+t[4]+t[6])/4,(t[1]+t[3]+t[5]+t[7])/4):"line"===e?(r=(t[0]+t[2])/2,(t[1]+t[3])/2):(r=t[0],t[1]);return[r,e]}(e,t);if("line"===e?(n.color=this.ingredients.colors.stroke,n.length=Math.round(this.dist(t[0],t[1],t[2],t[3])),r=l([t[0],[1]],this.width,this.height),o=l([t[2],[3]],this.width,this.height),n.loc=u(i,this.width,this.height),n.pos=r===o?"at ".concat(r):"from ".concat(r," to ").concat(o)):("point"===e?n.color=this.ingredients.colors.stroke:(n.color=this.ingredients.colors.fill,n.area=function(e,t,r,o){var n=0;{var s,i,a,l,u,c,d;"arc"===e?(s=((t[5]-t[4])%(2*Math.PI)+2*Math.PI)%(2*Math.PI),n=s*t[2]*t[3]/8,"open"!==t[6]&&"chord"!==t[6]||(d=t[0],i=t[1],a=t[0]+t[2]/2*Math.cos(t[4]).toFixed(2),l=t[1]+t[3]/2*Math.sin(t[4]).toFixed(2),u=t[0]+t[2]/2*Math.cos(t[5]).toFixed(2),c=t[1]+t[3]/2*Math.sin(t[5]).toFixed(2),d=Math.abs(d*(l-c)+a*(c-i)+u*(i-l))/2,s>Math.PI?n+=d:n-=d)):"ellipse"===e||"circle"===e?n=3.14*t[2]/2*t[3]/2:"line"===e||"point"===e?n=0:"quadrilateral"===e?n=Math.abs((t[6]+t[0])*(t[7]-t[1])+(t[0]+t[2])*(t[1]-t[3])+(t[2]+t[4])*(t[3]-t[5])+(t[4]+t[6])*(t[5]-t[7]))/2:"rectangle"===e||"square"===e?n=t[2]*t[3]:"triangle"===e&&(n=Math.abs(t[0]*(t[3]-t[5])+t[2]*(t[5]-t[1])+t[4]*(t[1]-t[3]))/2)}return Math.round(100*n/(r*o))}(e,t,this.width,this.height)),n.pos=l(i,this.width,this.height),n.loc=u(i,this.width,this.height)),this.ingredients.shapes[e]){if(this.ingredients.shapes[e]!==[n]){for(var a in this.ingredients.shapes[e])JSON.stringify(this.ingredients.shapes[e][a])===JSON.stringify(n)&&(s=!1);!0===s&&this.ingredients.shapes[e].push(n)}}else this.ingredients.shapes[e]=[n]};e=o.default;r.default=e},{"../core/main":267,"core-js/modules/es.array.concat":149,"core-js/modules/es.array.fill":152,"core-js/modules/es.array.map":161,"core-js/modules/es.number.to-fixed":171}],250:[function(e,t,r){"use strict";e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.concat"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;e=(e=e("../core/main"))&&e.__esModule?e:{default:e};e.default.prototype._updateTextOutput=function(e){var t,r,o,n;this.dummyDOM.querySelector("#".concat(e,"_summary"))&&(t=this._accessibleOutputs[e],o=function(e,t,r,o){r="Your output is a, ".concat(r," by ").concat(o," pixels, ").concat(t," canvas containing the following");r=1===e?"".concat(r," shape:"):"".concat(r," ").concat(e," shapes:");return r}((r=function(e,t){var r,o="",n=0;for(r in t)for(var s in t[r]){var i='
      • ').concat(t[r][s].color," ").concat(r,"");"line"===r?i+=", ".concat(t[r][s].pos,", ").concat(t[r][s].length," pixels long.
      • "):(i+=", at ".concat(t[r][s].pos),"point"!==r&&(i+=", covering ".concat(t[r][s].area,"% of the canvas")),i+="."),o+=i,n++}return{numShapes:n,listShapes:o}}(e,this.ingredients.shapes)).numShapes,this.ingredients.colors.background,this.width,this.height),n=function(e,t){var r,o="",n=0;for(r in t)for(var s in t[r]){var i='').concat(t[r][s].color," ").concat(r,"");"line"===r?i+="location = ".concat(t[r][s].pos,"length = ").concat(t[r][s].length," pixels"):(i+="location = ".concat(t[r][s].pos,""),"point"!==r&&(i+=" area = ".concat(t[r][s].area,"%")),i+=""),o+=i,n++}return o}(e,this.ingredients.shapes),o!==t.summary.innerHTML&&(t.summary.innerHTML=o),r.listShapes!==t.list.innerHTML&&(t.list.innerHTML=r.listShapes),n!==t.shapeDetails.innerHTML&&(t.shapeDetails.innerHTML=n),this._accessibleOutputs[e]=t)};e=e.default;r.default=e},{"../core/main":267,"core-js/modules/es.array.concat":149}],251:[function(e,t,r){"use strict";var o=(o=e("./core/main"))&&o.__esModule?o:{default:o};e("./core/constants"),e("./core/environment"),e("./core/friendly_errors/stacktrace"),e("./core/friendly_errors/validate_params"),e("./core/friendly_errors/file_errors"),e("./core/friendly_errors/fes_core"),e("./core/friendly_errors/sketch_reader"),e("./core/helpers"),e("./core/legacy"),e("./core/preload"),e("./core/p5.Element"),e("./core/p5.Graphics"),e("./core/p5.Renderer"),e("./core/p5.Renderer2D"),e("./core/rendering"),e("./core/shim"),e("./core/structure"),e("./core/transform"),e("./core/shape/2d_primitives"),e("./core/shape/attributes"),e("./core/shape/curves"),e("./core/shape/vertex"),e("./accessibility/outputs"),e("./accessibility/textOutput"),e("./accessibility/gridOutput"),e("./accessibility/color_namer"),e("./color/color_conversion"),e("./color/creating_reading"),e("./color/p5.Color"),e("./color/setting"),e("./data/p5.TypedDict"),e("./data/local_storage.js"),e("./dom/dom"),e("./accessibility/describe"),e("./events/acceleration"),e("./events/keyboard"),e("./events/mouse"),e("./events/touch"),e("./image/filters"),e("./image/image"),e("./image/loading_displaying"),e("./image/p5.Image"),e("./image/pixels"),e("./io/files"),e("./io/p5.Table"),e("./io/p5.TableRow"),e("./io/p5.XML"),e("./math/calculation"),e("./math/math"),e("./math/noise"),e("./math/p5.Vector"),e("./math/random"),e("./math/trigonometry"),e("./typography/attributes"),e("./typography/loading_displaying"),e("./typography/p5.Font"),e("./utilities/array_functions"),e("./utilities/conversion"),e("./utilities/string_functions"),e("./utilities/time_date"),e("./webgl/3d_primitives"),e("./webgl/interaction"),e("./webgl/light"),e("./webgl/loading"),e("./webgl/material"),e("./webgl/p5.Camera"),e("./webgl/p5.Geometry"),e("./webgl/p5.Matrix"),e("./webgl/p5.RendererGL.Immediate"),e("./webgl/p5.RendererGL"),e("./webgl/p5.RendererGL.Retained"),e("./webgl/p5.Shader"),e("./webgl/p5.RenderBuffer"),e("./webgl/p5.Texture"),e("./webgl/text"),e("./core/init"),t.exports=o.default},{"./accessibility/color_namer":246,"./accessibility/describe":247,"./accessibility/gridOutput":248,"./accessibility/outputs":249,"./accessibility/textOutput":250,"./color/color_conversion":252,"./color/creating_reading":253,"./color/p5.Color":254,"./color/setting":255,"./core/constants":256,"./core/environment":257,"./core/friendly_errors/fes_core":258,"./core/friendly_errors/file_errors":259,"./core/friendly_errors/sketch_reader":260,"./core/friendly_errors/stacktrace":261,"./core/friendly_errors/validate_params":262,"./core/helpers":263,"./core/init":264,"./core/legacy":266,"./core/main":267,"./core/p5.Element":268,"./core/p5.Graphics":269,"./core/p5.Renderer":270,"./core/p5.Renderer2D":271,"./core/preload":272,"./core/rendering":273,"./core/shape/2d_primitives":274,"./core/shape/attributes":275,"./core/shape/curves":276,"./core/shape/vertex":277,"./core/shim":278,"./core/structure":279,"./core/transform":280,"./data/local_storage.js":281,"./data/p5.TypedDict":282,"./dom/dom":283,"./events/acceleration":284,"./events/keyboard":285,"./events/mouse":286,"./events/touch":287,"./image/filters":288,"./image/image":289,"./image/loading_displaying":290,"./image/p5.Image":291,"./image/pixels":292,"./io/files":293,"./io/p5.Table":294,"./io/p5.TableRow":295,"./io/p5.XML":296,"./math/calculation":297,"./math/math":298,"./math/noise":299,"./math/p5.Vector":300,"./math/random":301,"./math/trigonometry":302,"./typography/attributes":303,"./typography/loading_displaying":304,"./typography/p5.Font":305,"./utilities/array_functions":306,"./utilities/conversion":307,"./utilities/string_functions":308,"./utilities/time_date":309,"./webgl/3d_primitives":310,"./webgl/interaction":311,"./webgl/light":312,"./webgl/loading":313,"./webgl/material":314,"./webgl/p5.Camera":315,"./webgl/p5.Geometry":316,"./webgl/p5.Matrix":317,"./webgl/p5.RenderBuffer":318,"./webgl/p5.RendererGL":321,"./webgl/p5.RendererGL.Immediate":319,"./webgl/p5.RendererGL.Retained":320,"./webgl/p5.Shader":322,"./webgl/p5.Texture":323,"./webgl/text":324}],252:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;e=(e=e("../core/main"))&&e.__esModule?e:{default:e};e.default.ColorConversion={},e.default.ColorConversion._hsbaToHSLA=function(e){var t=e[0],r=e[1],o=e[2],n=(2-r)*o/2;return 0!=n&&(1==n?r=0:n<.5?r/=2-r:r=r*o/(2-2*n)),[t,r,n,e[3]]},e.default.ColorConversion._hsbaToRGBA=function(e){var t,r,o,n,s,i=6*e[0],a=e[1],l=e[2];return 0===a?[l,l,l,e[3]]:(r=l*(1-a),o=l*(1-a*(i-(t=Math.floor(i)))),a=l*(1-a*(1+t-i)),i=1===t?(n=o,s=l,r):2===t?(n=r,s=l,a):3===t?(n=r,s=o,l):4===t?(n=a,s=r,l):5===t?(n=l,s=r,o):(n=l,s=a,r),[n,s,i,e[3]])},e.default.ColorConversion._hslaToHSBA=function(e){var t=e[0],r=e[1],o=e[2],n=o<.5?(1+r)*o:o+r-o*r;return[t,r=2*(n-o)/n,n,e[3]]},e.default.ColorConversion._hslaToRGBA=function(e){var t,r=6*e[0],o=e[1],n=e[2];return 0===o?[n,n,n,e[3]]:[(t=function(e,t,r){return e<0?e+=6:6<=e&&(e-=6),e<1?t+(r-t)*e:e<3?r:e<4?t+(r-t)*(4-e):t})(2+r,o=2*n-(n=n<.5?(1+o)*n:n+o-n*o),n),t(r,o,n),t(r-2,o,n),e[3]]},e.default.ColorConversion._rgbaToHSBA=function(e){var t,r,o=e[0],n=e[1],s=e[2],i=Math.max(o,n,s),a=i-Math.min(o,n,s);return 0==a?r=t=0:(r=a/i,o===i?t=(n-s)/a:n===i?t=2+(s-o)/a:s===i&&(t=4+(o-n)/a),t<0?t+=6:6<=t&&(t-=6)),[t/6,r,i,e[3]]},e.default.ColorConversion._rgbaToHSLA=function(e){var t,r,o=e[0],n=e[1],s=e[2],i=Math.max(o,n,s),a=Math.min(o,n,s),l=i+a,a=i-a;return 0==a?r=t=0:(r=l<1?a/l:a/(2-l),o===i?t=(n-s)/a:n===i?t=2+(s-o)/a:s===i&&(t=4+(o-n)/a),t<0?t+=6:6<=t&&(t-=6)),[t/6,r,l/2,e[3]]};e=e.default.ColorConversion;r.default=e},{"../core/main":267}],253:[function(e,t,r){"use strict";function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e){return(i="function"==typeof Symbol&&"symbol"===o(Symbol.iterator)?function(e){return o(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":o(e)})(e)}e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.description"),e("core-js/modules/es.symbol.iterator"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.map"),e("core-js/modules/es.object.get-own-property-descriptor"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.weak-map"),e("core-js/modules/web.dom-collections.iterator"),e("core-js/modules/es.array.map"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var l=(n=e("../core/main"))&&n.__esModule?n:{default:n},u=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var r,o={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e){var s;Object.prototype.hasOwnProperty.call(e,r)&&((s=n?Object.getOwnPropertyDescriptor(e,r):null)&&(s.get||s.set)?Object.defineProperty(o,r,s):o[r]=e[r])}o.default=e,t&&t.set(e,o);return o}(e("../core/constants"));function a(){var e;return"function"!=typeof WeakMap?null:(e=new WeakMap,a=function(){return e},e)}e("./p5.Color"),e("../core/friendly_errors/validate_params"),e("../core/friendly_errors/file_errors"),e("../core/friendly_errors/fes_core"),l.default.prototype.alpha=function(e){return l.default._validateParameters("alpha",arguments),this.color(e)._getAlpha()},l.default.prototype.blue=function(e){return l.default._validateParameters("blue",arguments),this.color(e)._getBlue()},l.default.prototype.brightness=function(e){return l.default._validateParameters("brightness",arguments),this.color(e)._getBrightness()},l.default.prototype.color=function(){var e;return l.default._validateParameters("color",arguments),arguments[0]instanceof l.default.Color?arguments[0]:(e=arguments[0]instanceof Array?arguments[0]:arguments,new l.default.Color(this,e))},l.default.prototype.green=function(e){return l.default._validateParameters("green",arguments),this.color(e)._getGreen()},l.default.prototype.hue=function(e){return l.default._validateParameters("hue",arguments),this.color(e)._getHue()},l.default.prototype.lerpColor=function(e,t,r){l.default._validateParameters("lerpColor",arguments);var o,n,s,i=this._colorMode,a=this._colorMaxes;if(i===u.RGB)n=e.levels.map(function(e){return e/255}),s=t.levels.map(function(e){return e/255});else if(i===u.HSB)e._getBrightness(),t._getBrightness(),n=e.hsba,s=t.hsba;else{if(i!==u.HSL)throw new Error("".concat(i,"cannot be used for interpolation."));e._getLightness(),t._getLightness(),n=e.hsla,s=t.hsla}return r=Math.max(Math.min(r,1),0),void 0===this.lerp&&(this.lerp=function(e,t,r){return r*(t-e)+e}),e=this.lerp(n[0],s[0],r),t=this.lerp(n[1],s[1],r),o=this.lerp(n[2],s[2],r),n=this.lerp(n[3],s[3],r),e*=a[i][0],t*=a[i][1],o*=a[i][2],n*=a[i][3],this.color(e,t,o,n)},l.default.prototype.lightness=function(e){return l.default._validateParameters("lightness",arguments),this.color(e)._getLightness()},l.default.prototype.red=function(e){return l.default._validateParameters("red",arguments),this.color(e)._getRed()},l.default.prototype.saturation=function(e){return l.default._validateParameters("saturation",arguments),this.color(e)._getSaturation()};var n=l.default;r.default=n},{"../core/constants":256,"../core/friendly_errors/fes_core":258,"../core/friendly_errors/file_errors":259,"../core/friendly_errors/validate_params":262,"../core/main":267,"./p5.Color":254,"core-js/modules/es.array.iterator":158,"core-js/modules/es.array.map":161,"core-js/modules/es.object.get-own-property-descriptor":173,"core-js/modules/es.object.to-string":177,"core-js/modules/es.string.iterator":186,"core-js/modules/es.symbol":196,"core-js/modules/es.symbol.description":194,"core-js/modules/es.symbol.iterator":195,"core-js/modules/es.weak-map":228,"core-js/modules/web.dom-collections.iterator":230}],254:[function(e,t,r){"use strict";function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e){return(i="function"==typeof Symbol&&"symbol"===o(Symbol.iterator)?function(e){return o(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":o(e)})(e)}e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.description"),e("core-js/modules/es.symbol.iterator"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.join"),e("core-js/modules/es.array.map"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.object.get-own-property-descriptor"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.regexp.constructor"),e("core-js/modules/es.regexp.exec"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.string.trim"),e("core-js/modules/es.weak-map"),e("core-js/modules/web.dom-collections.iterator"),e("core-js/modules/es.array.join"),e("core-js/modules/es.array.map"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.regexp.constructor"),e("core-js/modules/es.regexp.exec"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.string.trim"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var c=n(e("../core/main")),d=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var r,o={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e){var s;Object.prototype.hasOwnProperty.call(e,r)&&((s=n?Object.getOwnPropertyDescriptor(e,r):null)&&(s.get||s.set)?Object.defineProperty(o,r,s):o[r]=e[r])}o.default=e,t&&t.set(e,o);return o}(e("../core/constants")),f=n(e("./color_conversion"));function a(){var e;return"function"!=typeof WeakMap?null:(e=new WeakMap,a=function(){return e},e)}function n(e){return e&&e.__esModule?e:{default:e}}c.default.Color=function(e,t){if(this._storeModeAndMaxes(e._colorMode,e._colorMaxes),this.mode!==d.RGB&&this.mode!==d.HSL&&this.mode!==d.HSB)throw new Error("".concat(this.mode," is an invalid colorMode."));return this._array=c.default.Color._parseInputs.apply(this,t),this._calculateLevels(),this},c.default.Color.prototype.toString=function(e){var t=this.levels,r=this._array,o=r[3];switch(e){case"#rrggbb":return"#".concat(t[0]<16?"0".concat(t[0].toString(16)):t[0].toString(16),t[1]<16?"0".concat(t[1].toString(16)):t[1].toString(16),t[2]<16?"0".concat(t[2].toString(16)):t[2].toString(16));case"#rrggbbaa":return"#".concat(t[0]<16?"0".concat(t[0].toString(16)):t[0].toString(16),t[1]<16?"0".concat(t[1].toString(16)):t[1].toString(16),t[2]<16?"0".concat(t[2].toString(16)):t[2].toString(16),t[3]<16?"0".concat(t[3].toString(16)):t[3].toString(16));case"#rgb":return"#".concat(Math.round(15*r[0]).toString(16),Math.round(15*r[1]).toString(16),Math.round(15*r[2]).toString(16));case"#rgba":return"#".concat(Math.round(15*r[0]).toString(16),Math.round(15*r[1]).toString(16),Math.round(15*r[2]).toString(16),Math.round(15*r[3]).toString(16));case"rgb":return"rgb(".concat(t[0],", ",t[1],", ",t[2],")");case"rgb%":return"rgb(".concat((100*r[0]).toPrecision(3),"%, ",(100*r[1]).toPrecision(3),"%, ",(100*r[2]).toPrecision(3),"%)");case"rgba%":return"rgba(".concat((100*r[0]).toPrecision(3),"%, ",(100*r[1]).toPrecision(3),"%, ",(100*r[2]).toPrecision(3),"%, ",(100*r[3]).toPrecision(3),"%)");case"hsb":case"hsv":return this.hsba||(this.hsba=f.default._rgbaToHSBA(this._array)),"hsb(".concat(this.hsba[0]*this.maxes[d.HSB][0],", ",this.hsba[1]*this.maxes[d.HSB][1],", ",this.hsba[2]*this.maxes[d.HSB][2],")");case"hsb%":case"hsv%":return this.hsba||(this.hsba=f.default._rgbaToHSBA(this._array)),"hsb(".concat((100*this.hsba[0]).toPrecision(3),"%, ",(100*this.hsba[1]).toPrecision(3),"%, ",(100*this.hsba[2]).toPrecision(3),"%)");case"hsba":case"hsva":return this.hsba||(this.hsba=f.default._rgbaToHSBA(this._array)),"hsba(".concat(this.hsba[0]*this.maxes[d.HSB][0],", ",this.hsba[1]*this.maxes[d.HSB][1],", ",this.hsba[2]*this.maxes[d.HSB][2],", ",o,")");case"hsba%":case"hsva%":return this.hsba||(this.hsba=f.default._rgbaToHSBA(this._array)),"hsba(".concat((100*this.hsba[0]).toPrecision(3),"%, ",(100*this.hsba[1]).toPrecision(3),"%, ",(100*this.hsba[2]).toPrecision(3),"%, ",(100*o).toPrecision(3),"%)");case"hsl":return this.hsla||(this.hsla=f.default._rgbaToHSLA(this._array)),"hsl(".concat(this.hsla[0]*this.maxes[d.HSL][0],", ",this.hsla[1]*this.maxes[d.HSL][1],", ",this.hsla[2]*this.maxes[d.HSL][2],")");case"hsl%":return this.hsla||(this.hsla=f.default._rgbaToHSLA(this._array)),"hsl(".concat((100*this.hsla[0]).toPrecision(3),"%, ",(100*this.hsla[1]).toPrecision(3),"%, ",(100*this.hsla[2]).toPrecision(3),"%)");case"hsla":return this.hsla||(this.hsla=f.default._rgbaToHSLA(this._array)),"hsla(".concat(this.hsla[0]*this.maxes[d.HSL][0],", ",this.hsla[1]*this.maxes[d.HSL][1],", ",this.hsla[2]*this.maxes[d.HSL][2],", ",o,")");case"hsla%":return this.hsla||(this.hsla=f.default._rgbaToHSLA(this._array)),"hsl(".concat((100*this.hsla[0]).toPrecision(3),"%, ",(100*this.hsla[1]).toPrecision(3),"%, ",(100*this.hsla[2]).toPrecision(3),"%, ",(100*o).toPrecision(3),"%)");default:return"rgba(".concat(t[0],",",t[1],",",t[2],",",o,")")}},c.default.Color.prototype.setRed=function(e){this._array[0]=e/this.maxes[d.RGB][0],this._calculateLevels()},c.default.Color.prototype.setGreen=function(e){this._array[1]=e/this.maxes[d.RGB][1],this._calculateLevels()},c.default.Color.prototype.setBlue=function(e){this._array[2]=e/this.maxes[d.RGB][2],this._calculateLevels()},c.default.Color.prototype.setAlpha=function(e){this._array[3]=e/this.maxes[this.mode][3],this._calculateLevels()},c.default.Color.prototype._calculateLevels=function(){for(var e=this._array,t=this.levels=new Array(e.length),r=e.length-1;0<=r;--r)t[r]=Math.round(255*e[r]);this.hsla=null,this.hsba=null},c.default.Color.prototype._getAlpha=function(){return this._array[3]*this.maxes[this.mode][3]},c.default.Color.prototype._storeModeAndMaxes=function(e,t){this.mode=e,this.maxes=t},c.default.Color.prototype._getMode=function(){return this.mode},c.default.Color.prototype._getMaxes=function(){return this.maxes},c.default.Color.prototype._getBlue=function(){return this._array[2]*this.maxes[d.RGB][2]},c.default.Color.prototype._getBrightness=function(){return this.hsba||(this.hsba=f.default._rgbaToHSBA(this._array)),this.hsba[2]*this.maxes[d.HSB][2]},c.default.Color.prototype._getGreen=function(){return this._array[1]*this.maxes[d.RGB][1]},c.default.Color.prototype._getHue=function(){return this.mode===d.HSB?(this.hsba||(this.hsba=f.default._rgbaToHSBA(this._array)),this.hsba[0]*this.maxes[d.HSB][0]):(this.hsla||(this.hsla=f.default._rgbaToHSLA(this._array)),this.hsla[0]*this.maxes[d.HSL][0])},c.default.Color.prototype._getLightness=function(){return this.hsla||(this.hsla=f.default._rgbaToHSLA(this._array)),this.hsla[2]*this.maxes[d.HSL][2]},c.default.Color.prototype._getRed=function(){return this._array[0]*this.maxes[d.RGB][0]},c.default.Color.prototype._getSaturation=function(){return this.mode===d.HSB?(this.hsba||(this.hsba=f.default._rgbaToHSBA(this._array)),this.hsba[1]*this.maxes[d.HSB][1]):(this.hsla||(this.hsla=f.default._rgbaToHSLA(this._array)),this.hsla[1]*this.maxes[d.HSL][1])};var h={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},e=/\s*/,s=/(\d{1,3})/,l=/((?:\d+(?:\.\d+)?)|(?:\.\d+))/,u=new RegExp("".concat(l.source,"%")),p={HEX3:/^#([a-f0-9])([a-f0-9])([a-f0-9])$/i,HEX4:/^#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])$/i,HEX6:/^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i,HEX8:/^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i,RGB:new RegExp(["^rgb\\(",s.source,",",s.source,",",s.source,"\\)$"].join(e.source),"i"),RGB_PERCENT:new RegExp(["^rgb\\(",u.source,",",u.source,",",u.source,"\\)$"].join(e.source),"i"),RGBA:new RegExp(["^rgba\\(",s.source,",",s.source,",",s.source,",",l.source,"\\)$"].join(e.source),"i"),RGBA_PERCENT:new RegExp(["^rgba\\(",u.source,",",u.source,",",u.source,",",l.source,"\\)$"].join(e.source),"i"),HSL:new RegExp(["^hsl\\(",s.source,",",u.source,",",u.source,"\\)$"].join(e.source),"i"),HSLA:new RegExp(["^hsla\\(",s.source,",",u.source,",",u.source,",",l.source,"\\)$"].join(e.source),"i"),HSB:new RegExp(["^hsb\\(",s.source,",",u.source,",",u.source,"\\)$"].join(e.source),"i"),HSBA:new RegExp(["^hsba\\(",s.source,",",u.source,",",u.source,",",l.source,"\\)$"].join(e.source),"i")},s=(c.default.Color._parseInputs=function(e,t,r,o){var n,s=arguments.length,i=this.mode,a=this.maxes[i],l=[];if(3<=s){for(l[0]=e/a[0],l[1]=t/a[1],l[2]=r/a[2],l[3]="number"==typeof o?o/a[3]:1,n=l.length-1;0<=n;--n){var u=l[n];u<0?l[n]=0:1"].indexOf(r[0])?void 0:r[0],lineNumber:r[1],columnNumber:r[2],source:e}},this)},parseFFOrSafari:function(e){return e.stack.split("\n").filter(function(e){return!e.match(o)},this).map(function(e){var t,r;return-1===(e=-1 eval")?e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1"):e).indexOf("@")&&-1===e.indexOf(":")?{functionName:e}:{functionName:(r=e.match(t=/((.*".+"[^@]*)?[^@]*)(?:@)/))&&r[1]?r[1]:void 0,fileName:(r=this.extractLocation(e.replace(t,"")))[0],lineNumber:r[1],columnNumber:r[2],source:e}},this)},parseOpera:function(e){return!e.stacktrace||-1e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\d+).*script (?:in )?(\S+)/i,r=e.message.split("\n"),o=[],n=2,s=r.length;n/,"$2").replace(/\([^)]*\)/g,"")||void 0,args:void 0===(t=r.match(/\(([^)]*)\)/)?r.replace(/^[^(]+\(([^)]*)\)$/,"$1"):t)||"[arguments not available]"===t?void 0:t.split(","),fileName:o[0],lineNumber:o[1],columnNumber:o[2],source:e}},this)}}}e.default._getErrorStackParser=function(){return new o};e=e.default;r.default=e},{"../main":267,"core-js/modules/es.array.filter":153,"core-js/modules/es.array.index-of":157,"core-js/modules/es.array.join":159,"core-js/modules/es.array.map":161,"core-js/modules/es.array.slice":162,"core-js/modules/es.regexp.exec":181,"core-js/modules/es.string.match":187,"core-js/modules/es.string.replace":189,"core-js/modules/es.string.split":191}],262:[function(e,t,r){"use strict";function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.description"),e("core-js/modules/es.symbol.iterator"),e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.for-each"),e("core-js/modules/es.array.includes"),e("core-js/modules/es.array.index-of"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.join"),e("core-js/modules/es.array.last-index-of"),e("core-js/modules/es.array.map"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.function.name"),e("core-js/modules/es.map"),e("core-js/modules/es.number.constructor"),e("core-js/modules/es.object.get-own-property-descriptor"),e("core-js/modules/es.object.get-prototype-of"),e("core-js/modules/es.object.keys"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.reflect.construct"),e("core-js/modules/es.regexp.exec"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.set"),e("core-js/modules/es.string.includes"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.string.split"),e("core-js/modules/es.weak-map"),e("core-js/modules/web.dom-collections.for-each"),e("core-js/modules/web.dom-collections.iterator"),e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.description"),e("core-js/modules/es.symbol.iterator"),e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.for-each"),e("core-js/modules/es.array.includes"),e("core-js/modules/es.array.index-of"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.join"),e("core-js/modules/es.array.last-index-of"),e("core-js/modules/es.array.map"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.function.name"),e("core-js/modules/es.map"),e("core-js/modules/es.number.constructor"),e("core-js/modules/es.object.get-prototype-of"),e("core-js/modules/es.object.keys"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.reflect.construct"),e("core-js/modules/es.regexp.exec"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.set"),e("core-js/modules/es.string.includes"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.string.split"),e("core-js/modules/web.dom-collections.for-each"),e("core-js/modules/web.dom-collections.iterator"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n=(n=e("../main"))&&n.__esModule?n:{default:n};(function(e){if(e&&e.__esModule)return;if(null===e||"object"!==a(e)&&"function"!=typeof e)return;var t=i();if(t&&t.has(e))return t.get(e);var r,o={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e){var s;Object.prototype.hasOwnProperty.call(e,r)&&((s=n?Object.getOwnPropertyDescriptor(e,r):null)&&(s.get||s.set)?Object.defineProperty(o,r,s):o[r]=e[r])}o.default=e,t&&t.set(e,o)})(e("../constants")),e("../internationalization");function i(){var e;return"function"!=typeof WeakMap?null:(e=new WeakMap,i=function(){return e},e)}function a(e){return(a="function"==typeof Symbol&&"symbol"===o(Symbol.iterator)?function(e){return o(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":o(e)})(e)}n.default._validateParameters=n.default._clearValidateParamsCache=function(){};e=n.default;r.default=e},{"../../../docs/parameterData.json":void 0,"../constants":256,"../internationalization":265,"../main":267,"core-js/modules/es.array.concat":149,"core-js/modules/es.array.for-each":154,"core-js/modules/es.array.includes":156,"core-js/modules/es.array.index-of":157,"core-js/modules/es.array.iterator":158,"core-js/modules/es.array.join":159,"core-js/modules/es.array.last-index-of":160,"core-js/modules/es.array.map":161,"core-js/modules/es.array.slice":162,"core-js/modules/es.function.name":165,"core-js/modules/es.map":166,"core-js/modules/es.number.constructor":169,"core-js/modules/es.object.get-own-property-descriptor":173,"core-js/modules/es.object.get-prototype-of":175,"core-js/modules/es.object.keys":176,"core-js/modules/es.object.to-string":177,"core-js/modules/es.reflect.construct":179,"core-js/modules/es.regexp.exec":181,"core-js/modules/es.regexp.to-string":182,"core-js/modules/es.set":183,"core-js/modules/es.string.includes":185,"core-js/modules/es.string.iterator":186,"core-js/modules/es.string.split":191,"core-js/modules/es.symbol":196,"core-js/modules/es.symbol.description":194,"core-js/modules/es.symbol.iterator":195,"core-js/modules/es.weak-map":228,"core-js/modules/web.dom-collections.for-each":229,"core-js/modules/web.dom-collections.iterator":230}],263:[function(e,t,r){"use strict";function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e){return(i="function"==typeof Symbol&&"symbol"===o(Symbol.iterator)?function(e){return o(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":o(e)})(e)}e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.description"),e("core-js/modules/es.symbol.iterator"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.object.get-own-property-descriptor"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.weak-map"),e("core-js/modules/web.dom-collections.iterator"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var s=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var r,o={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e){var s;Object.prototype.hasOwnProperty.call(e,r)&&((s=n?Object.getOwnPropertyDescriptor(e,r):null)&&(s.get||s.set)?Object.defineProperty(o,r,s):o[r]=e[r])}o.default=e,t&&t.set(e,o);return o}(e("./constants"));function a(){var e;return"function"!=typeof WeakMap?null:(e=new WeakMap,a=function(){return e},e)}r.default={modeAdjust:function(e,t,r,o,n){return n===s.CORNER?{x:e,y:t,w:r,h:o}:n===s.CORNERS?{x:e,y:t,w:r-e,h:o-t}:n===s.RADIUS?{x:e-r,y:t-o,w:2*r,h:2*o}:n===s.CENTER?{x:e-.5*r,y:t-.5*o,w:r,h:o}:void 0}}},{"./constants":256,"core-js/modules/es.array.iterator":158,"core-js/modules/es.object.get-own-property-descriptor":173,"core-js/modules/es.object.to-string":177,"core-js/modules/es.string.iterator":186,"core-js/modules/es.symbol":196,"core-js/modules/es.symbol.description":194,"core-js/modules/es.symbol.iterator":195,"core-js/modules/es.weak-map":228,"core-js/modules/web.dom-collections.iterator":230}],264:[function(e,t,r){"use strict";e("core-js/modules/es.array.iterator"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.promise"),e("core-js/modules/es.string.iterator"),e("core-js/modules/web.dom-collections.iterator"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.promise"),e("core-js/modules/es.string.iterator"),e("core-js/modules/web.dom-collections.iterator");var o=(n=e("../core/main"))&&n.__esModule?n:{default:n};e("./internationalization");var n=Promise.resolve();Promise.all([new Promise(function(e,t){"complete"===document.readyState?e():window.addEventListener("load",e,!1)}),n]).then(function(){void 0!==window._setupDone?console.warn("p5.js seems to have been imported multiple times. Please remove the duplicate import"):window.mocha||(window.setup&&"function"==typeof window.setup||window.draw&&"function"==typeof window.draw)&&!o.default.instance&&new o.default})},{"../core/main":267,"./internationalization":265,"core-js/modules/es.array.iterator":158,"core-js/modules/es.object.to-string":177,"core-js/modules/es.promise":178,"core-js/modules/es.string.iterator":186,"core-js/modules/web.dom-collections.iterator":230}],265:[function(e,t,r){"use strict";e("core-js/modules/es.array.includes"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.join"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.object.keys"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.promise"),e("core-js/modules/es.regexp.exec"),e("core-js/modules/es.string.includes"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.string.split"),e("core-js/modules/web.dom-collections.iterator"),e("core-js/modules/es.array.includes"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.join"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.object.keys"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.promise"),e("core-js/modules/es.regexp.exec"),e("core-js/modules/es.string.includes"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.string.split"),e("core-js/modules/web.dom-collections.iterator"),Object.defineProperty(r,"__esModule",{value:!0}),r.setTranslatorLanguage=r.currentTranslatorLanguage=r.availableTranslatorLanguages=r.initialize=r.translator=void 0;var n,s,o=a(e("i18next")),i=a(e("i18next-browser-languagedetector"));function a(e){return e&&e.__esModule?e:{default:e}}function l(e,t){for(var r=0;r=i.width||t>=i.height?[0,0,0,0]:this._getPixel(e,t);n=new a.default.Image(r,o);return n.canvas.getContext("2d").drawImage(i,e,t,r*s,o*s,0,0,r,o),n},a.default.Renderer.prototype.textLeading=function(e){return"number"==typeof e?(this._setProperty("_leadingSet",!0),this._setProperty("_textLeading",e),this._pInst):this._textLeading},a.default.Renderer.prototype.textSize=function(e){return"number"==typeof e?(this._setProperty("_textSize",e),this._leadingSet||this._setProperty("_textLeading",e*k._DEFAULT_LEADMULT),this._applyTextProperties()):this._textSize},a.default.Renderer.prototype.textStyle=function(e){return e?(e!==k.NORMAL&&e!==k.ITALIC&&e!==k.BOLD&&e!==k.BOLDITALIC||this._setProperty("_textStyle",e),this._applyTextProperties()):this._textStyle},a.default.Renderer.prototype.textAscent=function(){return null===this._textAscent&&this._updateTextMetrics(),this._textAscent},a.default.Renderer.prototype.textDescent=function(){return null===this._textDescent&&this._updateTextMetrics(),this._textDescent},a.default.Renderer.prototype.textAlign=function(e,t){return void 0!==e?(this._setProperty("_textAlign",e),void 0!==t&&this._setProperty("_textBaseline",t),this._applyTextProperties()):{horizontal:this._textAlign,vertical:this._textBaseline}},a.default.Renderer.prototype.textWrap=function(e){return this._setProperty("_textWrap",e),this._textWrap},a.default.Renderer.prototype.text=function(e,t,r,o,n){var s,i,a,l,u=this._pInst,c=this._textWrap,d=Number.MAX_VALUE,f=r;if((this._doFill||this._doStroke)&&void 0!==e){if(s=(e=(e="string"!=typeof e?e.toString():e).replace(/(\t)/g," ")).split("\n"),void 0!==o){switch(this._rectMode===k.CENTER&&(t-=o/2),this._textAlign){case k.CENTER:t+=o/2;break;case k.RIGHT:t+=o}if(void 0!==n){this._rectMode===k.CENTER&&(r-=n/2);var e=r,h=u.textAscent();switch(this._textBaseline){case k.BOTTOM:l=r+n,r=Math.max(l,r),f+=h;break;case k.CENTER:l=r+n/2,r=Math.max(l,r),f+=h/2}d=r+n-h,this._textBaseline===k.CENTER&&(d=e+n-h/2)}else{if(this._textBaseline===k.BOTTOM)return console.warn("textAlign(*, BOTTOM) requires x, y, width and height");if(this._textBaseline===k.CENTER)return console.warn("textAlign(*, CENTER) requires x, y, width and height")}if(c===k.WORD){for(var p=[],m=0;ma.HALF_PI&&e<=3*a.HALF_PI?Math.atan(r/o*Math.tan(e))+a.PI:Math.atan(r/o*Math.tan(e))+a.TWO_PI,t=t<=a.HALF_PI?Math.atan(r/o*Math.tan(t)):t>a.HALF_PI&&t<=3*a.HALF_PI?Math.atan(r/o*Math.tan(t))+a.PI:Math.atan(r/o*Math.tan(t))+a.TWO_PI),tp||Math.abs(this.accelerationY-this.pAccelerationY)>p||Math.abs(this.accelerationZ-this.pAccelerationZ)>p)&&s.deviceMoved(),"function"==typeof s.deviceTurned&&(t=this.rotationX+180,e=this.pRotationX+180,r=l+180,0>>24],r+=R[(16711680&D)>>16],o+=R[(65280&D)>>8],n+=R[255&D],t+=B[b],i++}j[a=S+g]=s/t,_[a]=r/t,x[a]=o/t,w[a]=n/t}S+=f}for(u=(l=-N)*f,v=S=0;v>>16,e[1+r]=(65280&t[o])>>>8,e[2+r]=255&t[o],e[3+r]=(4278190080&t[o])>>>24},V._toImageData=function(e){return e instanceof ImageData?e:e.getContext("2d").getImageData(0,0,e.width,e.height)},V._createImageData=function(e,t){return V._tmpCanvas=document.createElement("canvas"),V._tmpCtx=V._tmpCanvas.getContext("2d"),this._tmpCtx.createImageData(e,t)},V.apply=function(e,t,r){var o=e.getContext("2d"),n=o.getImageData(0,0,e.width,e.height),t=t(n,r);t instanceof ImageData?o.putImageData(t,0,0,0,0,e.width,e.height):o.putImageData(n,0,0,0,0,e.width,e.height)},V.threshold=function(e,t){for(var r=V._toPixels(e),o=(void 0===t&&(t=.5),Math.floor(255*t)),n=0;n>8)/o,r[n+1]=255*(i*t>>8)/o,r[n+2]=255*(a*t>>8)/o}},V.dilate=function(e){for(var t,r,o,n,s,i,a,l,u,c=V._toPixels(e),d=0,f=c.length?c.length/4:0,h=new Int32Array(f);d>16&255)+151*(n>>8&255)+28*(255&n))<(a=77*(u>>16&255)+151*(u>>8&255)+28*(255&u))&&(o=u,n=a),n<(a=77*((u=V._getARGB(c,l))>>16&255)+151*(u>>8&255)+28*(255&u))&&(o=u,n=a),n<(l=77*(s>>16&255)+151*(s>>8&255)+28*(255&s))&&(o=s,n=l),n<(u=77*(i>>16&255)+151*(i>>8&255)+28*(255&i))&&(o=i,n=u),h[d++]=o;V._setPixels(c,h)},V.erode=function(e){for(var t,r,o,n,s,i,a,l,u,c=V._toPixels(e),d=0,f=c.length?c.length/4:0,h=new Int32Array(f);d>16&255)+151*(u>>8&255)+28*(255&u))<(n=77*(n>>16&255)+151*(n>>8&255)+28*(255&n))&&(o=u,n=a),(a=77*((u=V._getARGB(c,l))>>16&255)+151*(u>>8&255)+28*(255&u))>16&255)+151*(s>>8&255)+28*(255&s))>16&255)+151*(i>>8&255)+28*(255&i))"+u.length.toString()+" out of "+s.toString()),e.next=44,new Promise(function(e){return setTimeout(e,0)});e.next=46;break;case 44:e.next=35;break;case 46:c.html("Frames processed, generating color palette..."),this.loop(),this.pixelDensity(l),h=(0,L.GIFEncoder)(),p=function(e){for(var t=new Uint8Array(e.length*e[0].length),r=0;r"+y.toString()+" out of "+s.toString()),e.next=68,new Promise(function(e){return setTimeout(e,0)});case 68:y++,e.next=53;break;case 71:h.finish(),T=h.bytesView(),T=new Blob([T],{type:"image/gif"}),u=[],this.loop(),c.html("Done. Downloading your gif!🌸"),O.default.prototype.downloadFile(T,t,"gif");case 79:case"end":return e.stop()}},e,this)});var a,r=function(){var e=this,i=arguments;return new Promise(function(t,r){var o=a.apply(e,i);function n(e){l(o,t,r,n,s,"next",e)}function s(e){l(o,t,r,n,s,"throw",e)}n(void 0)})};return function(e,t){return r.apply(this,arguments)}}(),O.default.prototype.image=function(e,t,r,o,n,s,i,a,l,u,c,d){O.default._validateParameters("image",arguments);var f=e.width,h=e.height,p=(d=d||j.CENTER,c=c||j.CENTER,e.elt&&e.elt.videoWidth&&!e.canvas&&(f=e.elt.videoWidth,h=e.elt.videoHeight),o||f),n=n||h,s=s||0,i=i||0,a=v(a||f,f),f=v(l||h,h),l=1;e.elt&&!e.canvas&&e.elt.style.width&&(l=e.elt.videoWidth&&!o?e.elt.videoWidth:e.elt.width,l/=parseInt(e.elt.style.width,10)),s*=l,i*=l,f*=l,a*=l;h=y(u,c,d,(h=m.default.modeAdjust(t,r,p,n,this._renderer._imageMode)).x,h.y,h.w,h.h,s,i,a,f);this._renderer.image(e,h.sx,h.sy,h.sw,h.sh,h.dx,h.dy,h.dw,h.dh)},O.default.prototype.tint=function(){for(var e=arguments.length,t=new Array(e),r=0;r=t&&(t=Math.floor(r.timeDisplayed/t),r.timeDisplayed=0,r.lastChangeTime=e,r.displayIndex+=t,r.loopCount=Math.floor(r.displayIndex/r.numFrames),null!==r.loopLimit&&r.loopCount>=r.loopLimit?r.playing=!1:(e=r.displayIndex%r.numFrames,this.drawingContext.putImageData(r.frames[e].image,0,0),r.displayIndex=e,this.setModified(!0))))},s.default.Image.prototype._setProperty=function(e,t){this[e]=t,this.setModified(!0)},s.default.Image.prototype.loadPixels=function(){s.default.Renderer2D.prototype.loadPixels.call(this),this.setModified(!0)},s.default.Image.prototype.updatePixels=function(e,t,r,o){s.default.Renderer2D.prototype.updatePixels.call(this,e,t,r,o),this.setModified(!0)},s.default.Image.prototype.get=function(e,t,r,o){return s.default._validateParameters("p5.Image.get",arguments),s.default.Renderer2D.prototype.get.apply(this,arguments)},s.default.Image.prototype._getPixel=s.default.Renderer2D.prototype._getPixel,s.default.Image.prototype.set=function(e,t,r){s.default.Renderer2D.prototype.set.call(this,e,t,r),this.setModified(!0)},s.default.Image.prototype.resize=function(e,t){0===e&&0===t?(e=this.canvas.width,t=this.canvas.height):0===e?e=this.canvas.width*t/this.canvas.height:0===t&&(t=this.canvas.height*e/this.canvas.width),e=Math.floor(e),t=Math.floor(t);var r=document.createElement("canvas");if(r.width=e,r.height=t,this.gifProperties)for(var o=this.gifProperties,n=0;n/g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e,t){t&&!0!==t&&"true"!==t||(t="");var r="";return(e=e||"untitled")&&e.includes(".")&&(r=e.split(".").pop()),t&&r!==t&&(r=t,e="".concat(e,".").concat(r)),[e,r]}e("../core/friendly_errors/validate_params"),e("../core/friendly_errors/file_errors"),e("../core/friendly_errors/fes_core"),v.default.prototype.loadJSON=function(){for(var e=arguments.length,t=new Array(e),r=0;r"),n.print("");if(n.print(' '),n.print(""),n.print(""),n.print(" "),"0"!==s[0]){n.print(" ");for(var c=0;c".concat(d)),n.print(" ")}n.print(" ")}for(var f=0;f");for(var h=0;h".concat(p)),n.print(" ")}n.print(" ")}n.print("
        "),n.print(""),n.print("")}n.close(),n.clear()},v.default.prototype.writeFile=function(e,t,r){var o="application/octet-stream",e=(v.default.prototype._isSafari()&&(o="text/plain"),new Blob(e,{type:o}));v.default.prototype.downloadFile(e,t,r)},v.default.prototype.downloadFile=function(e,t,r){var o,t=i(t,r),r=t[0];e instanceof Blob?n.default.saveAs(e,r):((o=document.createElement("a")).href=e,o.download=r,o.onclick=function(e){document.body.removeChild(e.target),e.stopPropagation()},o.style.display="none",document.body.appendChild(o),v.default.prototype._isSafari()&&(e=(e='Hello, Safari user! To download this file...\n1. Go to File --\x3e Save As.\n2. Choose "Page Source" as the Format.\n')+'3. Name it with this extension: ."'.concat(t[1],'"'),alert(e)),o.click())},v.default.prototype._checkFileExtension=i,v.default.prototype._isSafari=function(){return 0>>0},getSeed:function(){return t},rand:function(){return(r=(1664525*r+1013904223)%o)/o}};n.setSeed(e),j=new Array(4096);for(var s=0;s<4096;s++)j[s]=n.rand()},e.default);r.default=e},{"../core/main":267}],300:[function(e,t,r){"use strict";function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e){return(i="function"==typeof Symbol&&"symbol"===o(Symbol.iterator)?function(e){return o(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":o(e)})(e)}e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.description"),e("core-js/modules/es.symbol.iterator"),e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.every"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.array.some"),e("core-js/modules/es.math.sign"),e("core-js/modules/es.number.constructor"),e("core-js/modules/es.number.is-finite"),e("core-js/modules/es.object.get-own-property-descriptor"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.string.sub"),e("core-js/modules/es.weak-map"),e("core-js/modules/web.dom-collections.iterator"),e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.every"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.array.some"),e("core-js/modules/es.math.sign"),e("core-js/modules/es.number.constructor"),e("core-js/modules/es.number.is-finite"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.string.sub"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var a=(s=e("../core/main"))&&s.__esModule?s:{default:s},n=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var t=l();if(t&&t.has(e))return t.get(e);var r,o={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e){var s;Object.prototype.hasOwnProperty.call(e,r)&&((s=n?Object.getOwnPropertyDescriptor(e,r):null)&&(s.get||s.set)?Object.defineProperty(o,r,s):o[r]=e[r])}o.default=e,t&&t.set(e,o);return o}(e("../core/constants"));function l(){var e;return"function"!=typeof WeakMap?null:(e=new WeakMap,l=function(){return e},e)}a.default.Vector=function(){var e,t,r="[object Function]"==={}.toString.call(arguments[0])?(this.isPInst=!0,this._fromRadians=arguments[0],this._toRadians=arguments[1],e=arguments[2]||0,t=arguments[3]||0,arguments[4]||0):(e=arguments[0]||0,t=arguments[1]||0,arguments[2]||0);this.x=e,this.y=t,this.z=r},a.default.Vector.prototype.toString=function(){return"p5.Vector Object : [".concat(this.x,", ").concat(this.y,", ").concat(this.z,"]")},a.default.Vector.prototype.set=function(e,t,r){return e instanceof a.default.Vector?(this.x=e.x||0,this.y=e.y||0,this.z=e.z||0):e instanceof Array?(this.x=e[0]||0,this.y=e[1]||0,this.z=e[2]||0):(this.x=e||0,this.y=t||0,this.z=r||0),this},a.default.Vector.prototype.copy=function(){return this.isPInst?new a.default.Vector(this._fromRadians,this._toRadians,this.x,this.y,this.z):new a.default.Vector(this.x,this.y,this.z)},a.default.Vector.prototype.add=function(e,t,r){return e instanceof a.default.Vector?(this.x+=e.x||0,this.y+=e.y||0,this.z+=e.z||0):e instanceof Array?(this.x+=e[0]||0,this.y+=e[1]||0,this.z+=e[2]||0):(this.x+=e||0,this.y+=t||0,this.z+=r||0),this};function u(e,t){return 0!==e&&(this.x=this.x%e),0!==t&&(this.y=this.y%t),this}function c(e,t,r){return 0!==e&&(this.x=this.x%e),0!==t&&(this.y=this.y%t),0!==r&&(this.z=this.z%r),this}a.default.Vector.prototype.rem=function(e,t,r){var o;if(e instanceof a.default.Vector){if(Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z))return n=parseFloat(e.x),s=parseFloat(e.y),o=parseFloat(e.z),c.call(this,n,s,o)}else if(e instanceof Array){if(e.every(function(e){return Number.isFinite(e)}))return 2===e.length?u.call(this,e[0],e[1]):3===e.length?c.call(this,e[0],e[1],e[2]):void 0}else if(1===arguments.length){if(Number.isFinite(e)&&0!==e)return this.x=this.x%e,this.y=this.y%e,this.z=this.z%e,this}else if(2===arguments.length){var n=Array.prototype.slice.call(arguments);if(n.every(function(e){return Number.isFinite(e)})&&2===n.length)return u.call(this,n[0],n[1])}else if(3===arguments.length){var s=Array.prototype.slice.call(arguments);if(s.every(function(e){return Number.isFinite(e)})&&3===s.length)return c.call(this,s[0],s[1],s[2])}},a.default.Vector.prototype.sub=function(e,t,r){return e instanceof a.default.Vector?(this.x-=e.x||0,this.y-=e.y||0,this.z-=e.z||0):e instanceof Array?(this.x-=e[0]||0,this.y-=e[1]||0,this.z-=e[2]||0):(this.x-=e||0,this.y-=t||0,this.z-=r||0),this},a.default.Vector.prototype.mult=function(e,t,r){var o;return e instanceof a.default.Vector?Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z)&&"number"==typeof e.x&&"number"==typeof e.y&&"number"==typeof e.z?(this.x*=e.x,this.y*=e.y,this.z*=e.z):console.warn("p5.Vector.prototype.mult:","x contains components that are either undefined or not finite numbers"):e instanceof Array?e.every(function(e){return Number.isFinite(e)})&&e.every(function(e){return"number"==typeof e})?1===e.length?(this.x*=e[0],this.y*=e[0],this.z*=e[0]):2===e.length?(this.x*=e[0],this.y*=e[1]):3===e.length&&(this.x*=e[0],this.y*=e[1],this.z*=e[2]):console.warn("p5.Vector.prototype.mult:","x contains elements that are either undefined or not finite numbers"):(o=Array.prototype.slice.call(arguments)).every(function(e){return Number.isFinite(e)})&&o.every(function(e){return"number"==typeof e})?(1===arguments.length&&(this.x*=e,this.y*=e,this.z*=e),2===arguments.length&&(this.x*=e,this.y*=t),3===arguments.length&&(this.x*=e,this.y*=t,this.z*=r)):console.warn("p5.Vector.prototype.mult:","x, y, or z arguments are either undefined or not a finite number"),this},a.default.Vector.prototype.div=function(e,t,r){if(e instanceof a.default.Vector)if(Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z)&&"number"==typeof e.x&&"number"==typeof e.y&&"number"==typeof e.z){if(0===e.x||0===e.y||0===e.z)return console.warn("p5.Vector.prototype.div:","divide by 0"),this;this.x/=e.x,this.y/=e.y,this.z/=e.z}else console.warn("p5.Vector.prototype.div:","x contains components that are either undefined or not finite numbers");else if(e instanceof Array)if(e.every(function(e){return Number.isFinite(e)})&&e.every(function(e){return"number"==typeof e})){if(e.some(function(e){return 0===e}))return console.warn("p5.Vector.prototype.div:","divide by 0"),this;1===e.length?(this.x/=e[0],this.y/=e[0],this.z/=e[0]):2===e.length?(this.x/=e[0],this.y/=e[1]):3===e.length&&(this.x/=e[0],this.y/=e[1],this.z/=e[2])}else console.warn("p5.Vector.prototype.div:","x contains components that are either undefined or not finite numbers");else{var o=Array.prototype.slice.call(arguments);if(o.every(function(e){return Number.isFinite(e)})&&o.every(function(e){return"number"==typeof e})){if(o.some(function(e){return 0===e}))return console.warn("p5.Vector.prototype.div:","divide by 0"),this;1===arguments.length&&(this.x/=e,this.y/=e,this.z/=e),2===arguments.length&&(this.x/=e,this.y/=t),3===arguments.length&&(this.x/=e,this.y/=t,this.z/=r)}else console.warn("p5.Vector.prototype.div:","x, y, or z arguments are either undefined or not a finite number")}return this},a.default.Vector.prototype.mag=function(){return Math.sqrt(this.magSq())},a.default.Vector.prototype.magSq=function(){var e=this.x,t=this.y,r=this.z;return e*e+t*t+r*r},a.default.Vector.prototype.dot=function(e,t,r){return e instanceof a.default.Vector?this.dot(e.x,e.y,e.z):this.x*(e||0)+this.y*(t||0)+this.z*(r||0)},a.default.Vector.prototype.cross=function(e){var t=this.y*e.z-this.z*e.y,r=this.z*e.x-this.x*e.z,e=this.x*e.y-this.y*e.x;return this.isPInst?new a.default.Vector(this._fromRadians,this._toRadians,t,r,e):new a.default.Vector(t,r,e)},a.default.Vector.prototype.dist=function(e){return e.copy().sub(this).mag()},a.default.Vector.prototype.normalize=function(){var e=this.mag();return 0!==e&&this.mult(1/e),this},a.default.Vector.prototype.limit=function(e){var t=this.magSq();return e*e>>0},n.default.prototype.randomSeed=function(e){this._lcgSetSeed(s,e),this._gaussian_previous=!1},n.default.prototype.random=function(e,t){var r,o;return n.default._validateParameters("random",arguments),r=null!=this[s]?this._lcg(s):Math.random(),void 0===e?r:void 0===t?e instanceof Array?e[Math.floor(r*e.length)]:r*e:(th&&(b=d,v=a,s=l,d=x+h*(i&&x=t?r.substring(r.length-t,r.length):r}},o.default.prototype.unhex=function(e){return e instanceof Array?e.map(o.default.prototype.unhex):parseInt("0x".concat(e),16)};e=o.default;r.default=e},{"../core/main":267,"core-js/modules/es.array.map":161,"core-js/modules/es.number.constructor":169,"core-js/modules/es.object.to-string":177,"core-js/modules/es.regexp.to-string":182,"core-js/modules/es.string.repeat":188}],308:[function(e,t,r){"use strict";e("core-js/modules/es.array.filter"),e("core-js/modules/es.array.index-of"),e("core-js/modules/es.array.join"),e("core-js/modules/es.array.map"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.regexp.constructor"),e("core-js/modules/es.regexp.exec"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.string.match"),e("core-js/modules/es.string.replace"),e("core-js/modules/es.string.split"),e("core-js/modules/es.string.trim"),e("core-js/modules/es.array.filter"),e("core-js/modules/es.array.index-of"),e("core-js/modules/es.array.join"),e("core-js/modules/es.array.map"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.regexp.constructor"),e("core-js/modules/es.regexp.exec"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.string.match"),e("core-js/modules/es.string.replace"),e("core-js/modules/es.string.split"),e("core-js/modules/es.string.trim"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var s=(l=e("../core/main"))&&l.__esModule?l:{default:l};function o(e,t,r){var o=e<0,e=o?e.toString().substring(1):e.toString(),n=e.indexOf("."),s=-1!==n?e.substring(0,n):e,i=-1!==n?e.substring(n+1):"",a=o?"-":"";if(void 0!==r){o="";(-1!==n||0r&&(i=i.substring(0,r));for(var l=0;lo.length)for(var n=t-(o+=-1===r?".":"").length+1,s=0;s=_.TWO_PI?"".concat(c="ellipse","|"):"".concat(c="arc","|").concat(s,"|").concat(i,"|").concat(a,"|")).concat(l,"|"),c=(this.geometryInHash(u)||((t=new S.default.Geometry(l,1,function(){if(this.strokeIndices=[],s.toFixed(10)!==i.toFixed(10)){a!==_.PIE&&void 0!==a||(this.vertices.push(new S.default.Vector(.5,.5,0)),this.uvs.push([.5,.5]));for(var e=0;e<=l;e++){var t=(i-s)*(e/l)+s,r=.5+Math.cos(t)/2,t=.5+Math.sin(t)/2;this.vertices.push(new S.default.Vector(r,t,0)),this.uvs.push([r,t]),e>5&31)/31,(p>>10&31)/31):(r=i,o=a,l)),new x.default.Vector(y,g,v)),j=1;j<=3;j++){var _=m+12*j,_=new x.default.Vector(u.getFloat32(_,!0),u.getFloat32(4+_,!0),u.getFloat32(8+_,!0));e.vertices.push(_),e.vertexNormals.push(b),d&&s.push(r,o,n)}e.faces.push([3*h,3*h+1,3*h+2]),e.uvs.push([0,0],[0,0],[0,0])}}(e,t);else{t=new DataView(t);if(!("TextDecoder"in window))return console.warn("Sorry, ASCII STL loading only works in browsers that support TextDecoder (https://caniuse.com/#feat=textencoder)");t=new TextDecoder("utf-8").decode(t).split("\n");!function(e,t){for(var r,o,n="",s=[],i=0;iMath.PI?s=Math.PI:s<=0&&(s=.001),Math.sin(s)*i*Math.sin(o)),e=Math.cos(s)*i,r=Math.sin(s)*i*Math.cos(o);this.camera(n+this.centerX,e+this.centerY,r+this.centerZ,this.centerX,this.centerY,this.centerZ,0,1,0)},f.default.Camera.prototype._isActive=function(){return this===this._renderer._curCamera},f.default.prototype.setCamera=function(e){this._renderer._curCamera=e,this._renderer.uPMatrix.set(e.projMatrix.mat4[0],e.projMatrix.mat4[1],e.projMatrix.mat4[2],e.projMatrix.mat4[3],e.projMatrix.mat4[4],e.projMatrix.mat4[5],e.projMatrix.mat4[6],e.projMatrix.mat4[7],e.projMatrix.mat4[8],e.projMatrix.mat4[9],e.projMatrix.mat4[10],e.projMatrix.mat4[11],e.projMatrix.mat4[12],e.projMatrix.mat4[13],e.projMatrix.mat4[14],e.projMatrix.mat4[15])};e=f.default.Camera;r.default=e},{"../core/main":267}],316:[function(e,t,r){"use strict";e("core-js/modules/es.string.sub"),e("core-js/modules/es.string.sub"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var l=(e=e("../core/main"))&&e.__esModule?e:{default:e};l.default.Geometry=function(e,t,r){return this.vertices=[],this.lineVertices=[],this.lineNormals=[],this.vertexNormals=[],this.faces=[],this.uvs=[],this.edges=[],this.vertexColors=[],this.detailX=void 0!==e?e:1,this.detailY=void 0!==t?t:1,this.dirtyFlags={},r instanceof Function&&r.call(this),this},l.default.Geometry.prototype.reset=function(){this.lineVertices.length=0,this.lineNormals.length=0,this.vertices.length=0,this.edges.length=0,this.vertexColors.length=0,this.vertexNormals.length=0,this.uvs.length=0,this.dirtyFlags={}},l.default.Geometry.prototype.computeFaces=function(){this.faces.length=0;for(var e,t,r,o=this.detailX+1,n=0;nthis.vertices.length-1-this.detailX;o--)e.add(this.vertexNormals[o]);e=l.default.Vector.div(e,this.detailX);for(var n=this.vertices.length-1;n>this.vertices.length-1-this.detailX;n--)this.vertexNormals[n]=e;return this},l.default.Geometry.prototype._makeTriangleEdges=function(){if(this.edges.length=0,Array.isArray(this.strokeIndices))for(var e=0,t=this.strokeIndices.length;e 65535 triangles. Your web browser does not support the WebGL Extension OES_element_index_uint.");r.drawElements(r.TRIANGLES,t.vertexCount,t.indexBufferType,0)}else r.drawArrays(e||r.TRIANGLES,0,t.vertexCount)},a.default.RendererGL.prototype._drawPoints=function(e,t){var r=this.GL,o=this._getImmediatePointShader();this._setPointUniforms(o),this._bindBuffer(t,r.ARRAY_BUFFER,this._vToNArray(e),Float32Array,r.STATIC_DRAW),o.enableAttrib(o.attributes.aPosition,3),r.drawArrays(r.Points,0,e.length),o.unbindShader()},a.default.RendererGL);r.default=n},{"../core/main":267,"./p5.RenderBuffer":318,"./p5.RendererGL":321,"core-js/modules/es.array.fill":152,"core-js/modules/es.array.iterator":158,"core-js/modules/es.array.some":163,"core-js/modules/es.object.keys":176,"core-js/modules/es.object.to-string":177,"core-js/modules/es.string.iterator":186,"core-js/modules/es.symbol":196,"core-js/modules/es.symbol.description":194,"core-js/modules/es.symbol.iterator":195,"core-js/modules/es.typed-array.copy-within":197,"core-js/modules/es.typed-array.every":198,"core-js/modules/es.typed-array.fill":199,"core-js/modules/es.typed-array.filter":200,"core-js/modules/es.typed-array.find":202,"core-js/modules/es.typed-array.find-index":201,"core-js/modules/es.typed-array.float32-array":203,"core-js/modules/es.typed-array.for-each":205,"core-js/modules/es.typed-array.includes":206,"core-js/modules/es.typed-array.index-of":207,"core-js/modules/es.typed-array.iterator":210,"core-js/modules/es.typed-array.join":211,"core-js/modules/es.typed-array.last-index-of":212,"core-js/modules/es.typed-array.map":213,"core-js/modules/es.typed-array.reduce":215,"core-js/modules/es.typed-array.reduce-right":214,"core-js/modules/es.typed-array.reverse":216,"core-js/modules/es.typed-array.set":217,"core-js/modules/es.typed-array.slice":218,"core-js/modules/es.typed-array.some":219,"core-js/modules/es.typed-array.sort":220,"core-js/modules/es.typed-array.subarray":221,"core-js/modules/es.typed-array.to-locale-string":222,"core-js/modules/es.typed-array.to-string":223,"core-js/modules/es.typed-array.uint16-array":224,"core-js/modules/es.typed-array.uint32-array":225,"core-js/modules/web.dom-collections.iterator":230}],321:[function(e,t,r){"use strict";function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e){return(i="function"==typeof Symbol&&"symbol"===o(Symbol.iterator)?function(e){return o(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":o(e)})(e)}e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.description"),e("core-js/modules/es.symbol.iterator"),e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.fill"),e("core-js/modules/es.array.filter"),e("core-js/modules/es.array.from"),e("core-js/modules/es.array.includes"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.object.assign"),e("core-js/modules/es.object.get-own-property-descriptor"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.string.includes"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.typed-array.float32-array"),e("core-js/modules/es.typed-array.float64-array"),e("core-js/modules/es.typed-array.int16-array"),e("core-js/modules/es.typed-array.uint8-array"),e("core-js/modules/es.typed-array.uint16-array"),e("core-js/modules/es.typed-array.uint32-array"),e("core-js/modules/es.typed-array.copy-within"),e("core-js/modules/es.typed-array.every"),e("core-js/modules/es.typed-array.fill"),e("core-js/modules/es.typed-array.filter"),e("core-js/modules/es.typed-array.find"),e("core-js/modules/es.typed-array.find-index"),e("core-js/modules/es.typed-array.for-each"),e("core-js/modules/es.typed-array.includes"),e("core-js/modules/es.typed-array.index-of"),e("core-js/modules/es.typed-array.iterator"),e("core-js/modules/es.typed-array.join"),e("core-js/modules/es.typed-array.last-index-of"),e("core-js/modules/es.typed-array.map"),e("core-js/modules/es.typed-array.reduce"),e("core-js/modules/es.typed-array.reduce-right"),e("core-js/modules/es.typed-array.reverse"),e("core-js/modules/es.typed-array.set"),e("core-js/modules/es.typed-array.slice"),e("core-js/modules/es.typed-array.some"),e("core-js/modules/es.typed-array.sort"),e("core-js/modules/es.typed-array.subarray"),e("core-js/modules/es.typed-array.to-locale-string"),e("core-js/modules/es.typed-array.to-string"),e("core-js/modules/es.weak-map"),e("core-js/modules/web.dom-collections.iterator"),e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.description"),e("core-js/modules/es.symbol.iterator"),e("core-js/modules/es.array.concat"),e("core-js/modules/es.array.fill"),e("core-js/modules/es.array.filter"),e("core-js/modules/es.array.from"),e("core-js/modules/es.array.includes"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.slice"),e("core-js/modules/es.object.assign"),e("core-js/modules/es.object.to-string"),e("core-js/modules/es.regexp.to-string"),e("core-js/modules/es.string.includes"),e("core-js/modules/es.string.iterator"),e("core-js/modules/es.typed-array.float32-array"),e("core-js/modules/es.typed-array.float64-array"),e("core-js/modules/es.typed-array.int16-array"),e("core-js/modules/es.typed-array.uint8-array"),e("core-js/modules/es.typed-array.uint16-array"),e("core-js/modules/es.typed-array.uint32-array"),e("core-js/modules/es.typed-array.copy-within"),e("core-js/modules/es.typed-array.every"),e("core-js/modules/es.typed-array.fill"),e("core-js/modules/es.typed-array.filter"),e("core-js/modules/es.typed-array.find"),e("core-js/modules/es.typed-array.find-index"),e("core-js/modules/es.typed-array.for-each"),e("core-js/modules/es.typed-array.includes"),e("core-js/modules/es.typed-array.index-of"),e("core-js/modules/es.typed-array.iterator"),e("core-js/modules/es.typed-array.join"),e("core-js/modules/es.typed-array.last-index-of"),e("core-js/modules/es.typed-array.map"),e("core-js/modules/es.typed-array.reduce"),e("core-js/modules/es.typed-array.reduce-right"),e("core-js/modules/es.typed-array.reverse"),e("core-js/modules/es.typed-array.set"),e("core-js/modules/es.typed-array.slice"),e("core-js/modules/es.typed-array.some"),e("core-js/modules/es.typed-array.sort"),e("core-js/modules/es.typed-array.subarray"),e("core-js/modules/es.typed-array.to-locale-string"),e("core-js/modules/es.typed-array.to-string"),e("core-js/modules/web.dom-collections.iterator"),Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var l=u(e("../core/main")),s=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var r,o={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e){var s;Object.prototype.hasOwnProperty.call(e,r)&&((s=n?Object.getOwnPropertyDescriptor(e,r):null)&&(s.get||s.set)?Object.defineProperty(o,r,s):o[r]=e[r])}o.default=e,t&&t.set(e,o);return o}(e("../core/constants")),n=u(e("libtess"));e("./p5.Shader"),e("./p5.Camera"),e("../core/p5.Renderer"),e("./p5.Matrix"),e("path");function a(){var e;return"function"!=typeof WeakMap?null:(e=new WeakMap,a=function(){return e},e)}function u(e){return e&&e.__esModule?e:{default:e}}function c(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t vTexCoord.y;\n bool y1 = p1.y > vTexCoord.y;\n bool y2 = p2.y > vTexCoord.y;\n\n // could web be under the curve (after t1)?\n if (y1 ? !y2 : y0) {\n // add the coverage for t1\n coverage.x += saturate(C1.x + 0.5);\n // calculate the anti-aliasing for t1\n weight.x = min(weight.x, abs(C1.x));\n }\n\n // are we outside the curve (after t2)?\n if (y1 ? !y0 : y2) {\n // subtract the coverage for t2\n coverage.x -= saturate(C2.x + 0.5);\n // calculate the anti-aliasing for t2\n weight.x = min(weight.x, abs(C2.x));\n }\n}\n\n// this is essentially the same as coverageX, but with the axes swapped\nvoid coverageY(vec2 p0, vec2 p1, vec2 p2) {\n\n vec2 C1, C2;\n calulateCrossings(p0, p1, p2, C1, C2);\n\n bool x0 = p0.x > vTexCoord.x;\n bool x1 = p1.x > vTexCoord.x;\n bool x2 = p2.x > vTexCoord.x;\n\n if (x1 ? !x2 : x0) {\n coverage.y -= saturate(C1.y + 0.5);\n weight.y = min(weight.y, abs(C1.y));\n }\n\n if (x1 ? !x0 : x2) {\n coverage.y += saturate(C2.y + 0.5);\n weight.y = min(weight.y, abs(C2.y));\n }\n}\n\nvoid main() {\n\n // calculate the pixel scale based on screen-coordinates\n pixelScale = hardness / fwidth(vTexCoord);\n\n // which grid cell is this pixel in?\n ivec2 gridCoord = ifloor(vTexCoord * vec2(uGridSize));\n\n // intersect curves in this row\n {\n // the index into the row info bitmap\n int rowIndex = gridCoord.y + uGridOffset.y;\n // fetch the info texel\n vec4 rowInfo = getTexel(uSamplerRows, rowIndex, uGridImageSize);\n // unpack the rowInfo\n int rowStrokeIndex = getInt16(rowInfo.xy);\n int rowStrokeCount = getInt16(rowInfo.zw);\n\n for (int iRowStroke = INT(0); iRowStroke < N; iRowStroke++) {\n if (iRowStroke >= rowStrokeCount)\n break;\n\n // each stroke is made up of 3 points: the start and control point\n // and the start of the next curve.\n // fetch the indices of this pair of strokes:\n vec4 strokeIndices = getTexel(uSamplerRowStrokes, rowStrokeIndex++, uCellsImageSize);\n\n // unpack the stroke index\n int strokePos = getInt16(strokeIndices.xy);\n\n // fetch the two strokes\n vec4 stroke0 = getTexel(uSamplerStrokes, strokePos + INT(0), uStrokeImageSize);\n vec4 stroke1 = getTexel(uSamplerStrokes, strokePos + INT(1), uStrokeImageSize);\n\n // calculate the coverage\n coverageX(stroke0.xy, stroke0.zw, stroke1.xy);\n }\n }\n\n // intersect curves in this column\n {\n int colIndex = gridCoord.x + uGridOffset.x;\n vec4 colInfo = getTexel(uSamplerCols, colIndex, uGridImageSize);\n int colStrokeIndex = getInt16(colInfo.xy);\n int colStrokeCount = getInt16(colInfo.zw);\n \n for (int iColStroke = INT(0); iColStroke < N; iColStroke++) {\n if (iColStroke >= colStrokeCount)\n break;\n\n vec4 strokeIndices = getTexel(uSamplerColStrokes, colStrokeIndex++, uCellsImageSize);\n\n int strokePos = getInt16(strokeIndices.xy);\n vec4 stroke0 = getTexel(uSamplerStrokes, strokePos + INT(0), uStrokeImageSize);\n vec4 stroke1 = getTexel(uSamplerStrokes, strokePos + INT(1), uStrokeImageSize);\n coverageY(stroke0.xy, stroke0.zw, stroke1.xy);\n }\n }\n\n weight = saturate(1.0 - weight * 2.0);\n float distance = max(weight.x + weight.y, minDistance); // manhattan approx.\n float antialias = abs(dot(coverage, weight) / distance);\n float cover = min(abs(coverage.x), abs(coverage.y));\n gl_FragColor = uMaterialColor;\n gl_FragColor.a *= saturate(max(antialias, cover));\n}",lineVert:"/*\n Part of the Processing project - http://processing.org\n Copyright (c) 2012-15 The Processing Foundation\n Copyright (c) 2004-12 Ben Fry and Casey Reas\n Copyright (c) 2001-04 Massachusetts Institute of Technology\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation, version 2.1.\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General\n Public License along with this library; if not, write to the\n Free Software Foundation, Inc., 59 Temple Place, Suite 330,\n Boston, MA 02111-1307 USA\n*/\n\n#define PROCESSING_LINE_SHADER\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform float uStrokeWeight;\n\nuniform vec4 uViewport;\nuniform int uPerspective;\n\nattribute vec4 aPosition;\nattribute vec4 aDirection;\n \nvoid main() {\n // using a scale <1 moves the lines towards the camera\n // in order to prevent popping effects due to half of\n // the line disappearing behind the geometry faces.\n vec3 scale = vec3(0.9995);\n\n vec4 posp = uModelViewMatrix * aPosition;\n vec4 posq = uModelViewMatrix * (aPosition + vec4(aDirection.xyz, 0));\n\n // Moving vertices slightly toward the camera\n // to avoid depth-fighting with the fill triangles.\n // Discussed here:\n // http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=252848 \n posp.xyz = posp.xyz * scale;\n posq.xyz = posq.xyz * scale;\n\n vec4 p = uProjectionMatrix * posp;\n vec4 q = uProjectionMatrix * posq;\n\n // formula to convert from clip space (range -1..1) to screen space (range 0..[width or height])\n // screen_p = (p.xy/p.w + <1,1>) * 0.5 * uViewport.zw\n\n // prevent division by W by transforming the tangent formula (div by 0 causes\n // the line to disappear, see https://github.com/processing/processing/issues/5183)\n // t = screen_q - screen_p\n //\n // tangent is normalized and we don't care which aDirection it points to (+-)\n // t = +- normalize( screen_q - screen_p )\n // t = +- normalize( (q.xy/q.w+<1,1>)*0.5*uViewport.zw - (p.xy/p.w+<1,1>)*0.5*uViewport.zw )\n //\n // extract common factor, <1,1> - <1,1> cancels out\n // t = +- normalize( (q.xy/q.w - p.xy/p.w) * 0.5 * uViewport.zw )\n //\n // convert to common divisor\n // t = +- normalize( ((q.xy*p.w - p.xy*q.w) / (p.w*q.w)) * 0.5 * uViewport.zw )\n //\n // remove the common scalar divisor/factor, not needed due to normalize and +-\n // (keep uViewport - can't remove because it has different components for x and y\n // and corrects for aspect ratio, see https://github.com/processing/processing/issues/5181)\n // t = +- normalize( (q.xy*p.w - p.xy*q.w) * uViewport.zw )\n\n vec2 tangent = normalize((q.xy*p.w - p.xy*q.w) * uViewport.zw);\n\n // flip tangent to normal (it's already normalized)\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n float thickness = aDirection.w * uStrokeWeight;\n vec2 offset = normal * thickness / 2.0;\n\n vec2 curPerspScale;\n\n if(uPerspective == 1) {\n // Perspective ---\n // convert from world to clip by multiplying with projection scaling factor\n // to get the right thickness (see https://github.com/processing/processing/issues/5182)\n // invert Y, projections in Processing invert Y\n curPerspScale = (uProjectionMatrix * vec4(1, -1, 0, 0)).xy;\n } else {\n // No Perspective ---\n // multiply by W (to cancel out division by W later in the pipeline) and\n // convert from screen to clip (derived from clip to screen above)\n curPerspScale = p.w / (0.5 * uViewport.zw);\n }\n\n gl_Position.xy = p.xy + offset.xy * curPerspScale;\n gl_Position.zw = p.zw;\n}\n",lineFrag:"precision mediump float;\nprecision mediump int;\n\nuniform vec4 uMaterialColor;\n\nvoid main() {\n gl_FragColor = uMaterialColor;\n}",pointVert:"attribute vec3 aPosition;\nuniform float uPointSize;\nvarying float vStrokeWeight;\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nvoid main() {\n\tvec4 positionVec4 = vec4(aPosition, 1.0);\n\tgl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n\tgl_PointSize = uPointSize;\n\tvStrokeWeight = uPointSize;\n}",pointFrag:"precision mediump float;\nprecision mediump int;\nuniform vec4 uMaterialColor;\nvarying float vStrokeWeight;\n\nvoid main(){\n\tfloat mask = 0.0;\n\n\t// make a circular mask using the gl_PointCoord (goes from 0 - 1 on a point)\n // might be able to get a nicer edge on big strokeweights with smoothstep but slightly less performant\n\n\tmask = step(0.98, length(gl_PointCoord * 2.0 - 1.0));\n\n\t// if strokeWeight is 1 or less lets just draw a square\n\t// this prevents weird artifacting from carving circles when our points are really small\n\t// if strokeWeight is larger than 1, we just use it as is\n\n\tmask = mix(0.0, mask, clamp(floor(vStrokeWeight - 0.5),0.0,1.0));\n\n\t// throw away the borders of the mask\n // otherwise we get weird alpha blending issues\n\n\tif(mask > 0.98){\n discard;\n \t}\n\n \tgl_FragColor = vec4(uMaterialColor.rgb * (1.0 - mask), uMaterialColor.a) ;\n}"},e=(l.default.RendererGL=function(e,t,r,o){return l.default.Renderer.call(this,e,t,r),this._setAttributeDefaults(t),this._initContext(),this.isP3D=!0,this.GL=this.drawingContext,this._pInst._setProperty("drawingContext",this.drawingContext),this._isErasing=!1,this._enableLighting=!1,this.ambientLightColors=[],this.specularColors=[1,1,1],this.directionalLightDirections=[],this.directionalLightDiffuseColors=[],this.directionalLightSpecularColors=[],this.pointLightPositions=[],this.pointLightDiffuseColors=[],this.pointLightSpecularColors=[],this.spotLightPositions=[],this.spotLightDirections=[],this.spotLightDiffuseColors=[],this.spotLightSpecularColors=[],this.spotLightAngle=[],this.spotLightConc=[],this.drawMode=s.FILL,this.curFillColor=this._cachedFillStyle=[1,1,1,1],this.curAmbientColor=this._cachedFillStyle=[0,0,0,0],this.curSpecularColor=this._cachedFillStyle=[0,0,0,0],this.curEmissiveColor=this._cachedFillStyle=[0,0,0,0],this.curStrokeColor=this._cachedStrokeStyle=[0,0,0,1],this.curBlendMode=s.BLEND,this._cachedBlendMode=void 0,this.blendExt=this.GL.getExtension("EXT_blend_minmax"),this._isBlending=!1,this._useSpecularMaterial=!1,this._useEmissiveMaterial=!1,this._useNormalMaterial=!1,this._useShininess=1,this._tint=[255,255,255,255],this.constantAttenuation=1,this.linearAttenuation=0,this.quadraticAttenuation=0,this.uMVMatrix=new l.default.Matrix,this.uPMatrix=new l.default.Matrix,this.uNMatrix=new l.default.Matrix("mat3"),this._currentNormal=new l.default.Vector(0,0,1),this._curCamera=new l.default.Camera(this),this._curCamera._computeCameraDefaultSettings(),this._curCamera._setDefaultCamera(),this._defaultLightShader=void 0,this._defaultImmediateModeShader=void 0,this._defaultNormalShader=void 0,this._defaultColorShader=void 0,this._defaultPointShader=void 0,this.userFillShader=void 0,this.userStrokeShader=void 0,this.userPointShader=void 0,this.retainedMode={geometry:{},buffers:{stroke:[new l.default.RenderBuffer(3,"lineVertices","lineVertexBuffer","aPosition",this,this._flatten),new l.default.RenderBuffer(4,"lineNormals","lineNormalBuffer","aDirection",this,this._flatten)],fill:[new l.default.RenderBuffer(3,"vertices","vertexBuffer","aPosition",this,this._vToNArray),new l.default.RenderBuffer(3,"vertexNormals","normalBuffer","aNormal",this,this._vToNArray),new l.default.RenderBuffer(4,"vertexColors","colorBuffer","aVertexColor",this),new l.default.RenderBuffer(3,"vertexAmbients","ambientBuffer","aAmbientColor",this),new l.default.RenderBuffer(2,"uvs","uvBuffer","aTexCoord",this,this._flatten)],text:[new l.default.RenderBuffer(3,"vertices","vertexBuffer","aPosition",this,this._vToNArray),new l.default.RenderBuffer(2,"uvs","uvBuffer","aTexCoord",this,this._flatten)]}},this.immediateMode={geometry:new l.default.Geometry,shapeMode:s.TRIANGLE_FAN,_bezierVertex:[],_quadraticVertex:[],_curveVertex:[],buffers:{fill:[new l.default.RenderBuffer(3,"vertices","vertexBuffer","aPosition",this,this._vToNArray),new l.default.RenderBuffer(3,"vertexNormals","normalBuffer","aNormal",this,this._vToNArray),new l.default.RenderBuffer(4,"vertexColors","colorBuffer","aVertexColor",this),new l.default.RenderBuffer(3,"vertexAmbients","ambientBuffer","aAmbientColor",this),new l.default.RenderBuffer(2,"uvs","uvBuffer","aTexCoord",this,this._flatten)],stroke:[new l.default.RenderBuffer(3,"lineVertices","lineVertexBuffer","aPosition",this,this._flatten),new l.default.RenderBuffer(4,"lineNormals","lineNormalBuffer","aDirection",this,this._flatten)],point:this.GL.createBuffer()}},this.pointSize=5,this.curStrokeWeight=1,this.textures=[],this.textureMode=s.IMAGE,this.textureWrapX=s.CLAMP,this.textureWrapY=s.CLAMP,this._tex=null,this._curveTightness=6,this._lookUpTableBezier=[],this._lookUpTableQuadratic=[],this._lutBezierDetail=0,this._lutQuadraticDetail=0,this._tessy=this._initTessy(),this.fontInfos={},this._curShader=void 0,this},l.default.RendererGL.prototype=Object.create(l.default.Renderer.prototype),l.default.RendererGL.prototype._setAttributeDefaults=function(e){var t={alpha:!1,depth:!0,stencil:!0,antialias:navigator.userAgent.toLowerCase().includes("safari"),premultipliedAlpha:!1,preserveDrawingBuffer:!0,perPixelLighting:!0};null===e._glAttributes?e._glAttributes=t:e._glAttributes=Object.assign(t,e._glAttributes)},l.default.RendererGL.prototype._initContext=function(){if(this.drawingContext=this.canvas.getContext("webgl",this._pInst._glAttributes)||this.canvas.getContext("experimental-webgl",this._pInst._glAttributes),null===this.drawingContext)throw new Error("Error creating webgl context");var e=this.drawingContext;e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),this._viewport=this.drawingContext.getParameter(this.drawingContext.VIEWPORT)},l.default.RendererGL.prototype._resetContext=function(e,t){var r,o=this.width,n=this.height,s=this.canvas.id,i=this._pInst instanceof l.default.Graphics,s=(i?((r=this._pInst).canvas.parentNode.removeChild(r.canvas),r.canvas=document.createElement("canvas"),(r._pInst._userNode||document.body).appendChild(r.canvas),l.default.Element.call(r,r.canvas,r._pInst),r.width=o,r.height=n):((r=this.canvas)&&r.parentNode.removeChild(r),(r=document.createElement("canvas")).id=s,(this._pInst._userNode||document.body).appendChild(r),this._pInst.canvas=r,this.canvas=r),new l.default.RendererGL(this._pInst.canvas,this._pInst,!i));this._pInst._setProperty("_renderer",s),s.resize(o,n),s._applyDefaults(),i||this._pInst._elements.push(s),"function"==typeof t&&setTimeout(function(){t.apply(window._renderer,e)},0)},l.default.prototype.setAttributes=function(e,t){if(void 0===this._glAttributes)console.log("You are trying to use setAttributes on a p5.Graphics object that does not use a WEBGL renderer.");else{var r=!0;if(void 0!==t?(null===this._glAttributes&&(this._glAttributes={}),this._glAttributes[e]!==t&&(this._glAttributes[e]=t,r=!1)):e instanceof Object&&this._glAttributes!==e&&(this._glAttributes=e,r=!1),this._renderer.isP3D&&!r){if(!this._setupDone)for(var o in this._renderer.retainedMode.geometry)if(this._renderer.retainedMode.geometry.hasOwnProperty(o))return void console.error("Sorry, Could not set the attributes, you need to call setAttributes() before calling the other drawing methods in setup()");this.push(),this._renderer._resetContext(),this.pop(),this._renderer._curCamera&&(this._renderer._curCamera._renderer=this._renderer)}}},l.default.RendererGL.prototype._update=function(){this.uMVMatrix.set(this._curCamera.cameraMatrix.mat4[0],this._curCamera.cameraMatrix.mat4[1],this._curCamera.cameraMatrix.mat4[2],this._curCamera.cameraMatrix.mat4[3],this._curCamera.cameraMatrix.mat4[4],this._curCamera.cameraMatrix.mat4[5],this._curCamera.cameraMatrix.mat4[6],this._curCamera.cameraMatrix.mat4[7],this._curCamera.cameraMatrix.mat4[8],this._curCamera.cameraMatrix.mat4[9],this._curCamera.cameraMatrix.mat4[10],this._curCamera.cameraMatrix.mat4[11],this._curCamera.cameraMatrix.mat4[12],this._curCamera.cameraMatrix.mat4[13],this._curCamera.cameraMatrix.mat4[14],this._curCamera.cameraMatrix.mat4[15]),this.ambientLightColors.length=0,this.specularColors=[1,1,1],this.directionalLightDirections.length=0,this.directionalLightDiffuseColors.length=0,this.directionalLightSpecularColors.length=0,this.pointLightPositions.length=0,this.pointLightDiffuseColors.length=0,this.pointLightSpecularColors.length=0,this.spotLightPositions.length=0,this.spotLightDirections.length=0,this.spotLightDiffuseColors.length=0,this.spotLightSpecularColors.length=0,this.spotLightAngle.length=0,this.spotLightConc.length=0,this._enableLighting=!1,this._tint=[255,255,255,255],this.GL.clear(this.GL.DEPTH_BUFFER_BIT)},l.default.RendererGL.prototype.background=function(){var e=(e=this._pInst).color.apply(e,arguments),t=e.levels[0]/255,r=e.levels[1]/255,o=e.levels[2]/255,e=e.levels[3]/255;this.GL.clearColor(t,r,o,e),this.GL.clear(this.GL.COLOR_BUFFER_BIT)},l.default.RendererGL.prototype.fill=function(e,t,r,o){var n=l.default.prototype.color.apply(this._pInst,arguments);this.curFillColor=n._array,this.drawMode=s.FILL,this._useNormalMaterial=!1,this._tex=null},l.default.RendererGL.prototype.stroke=function(e,t,r,o){arguments[3]=255;var n=l.default.prototype.color.apply(this._pInst,arguments);this.curStrokeColor=n._array},l.default.RendererGL.prototype.strokeCap=function(e){console.error("Sorry, strokeCap() is not yet implemented in WEBGL mode")},l.default.RendererGL.prototype.strokeJoin=function(e){console.error("Sorry, strokeJoin() is not yet implemented in WEBGL mode")},l.default.RendererGL.prototype.filter=function(e){console.error("filter() does not work in WEBGL mode")},l.default.RendererGL.prototype.blendMode=function(e){e===s.DARKEST||e===s.LIGHTEST||e===s.ADD||e===s.BLEND||e===s.SUBTRACT||e===s.SCREEN||e===s.EXCLUSION||e===s.REPLACE||e===s.MULTIPLY||e===s.REMOVE?this.curBlendMode=e:e!==s.BURN&&e!==s.OVERLAY&&e!==s.HARD_LIGHT&&e!==s.SOFT_LIGHT&&e!==s.DODGE||console.warn("BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.")},l.default.RendererGL.prototype.erase=function(e,t){this._isErasing||(this._applyBlendMode(s.REMOVE),this._isErasing=!0,this._cachedFillStyle=this.curFillColor.slice(),this.curFillColor=[1,1,1,e/255],this._cachedStrokeStyle=this.curStrokeColor.slice(),this.curStrokeColor=[1,1,1,t/255])},l.default.RendererGL.prototype.noErase=function(){this._isErasing&&(this._isErasing=!1,this.curFillColor=this._cachedFillStyle.slice(),this.curStrokeColor=this._cachedStrokeStyle.slice(),this.blendMode(this._cachedBlendMode))},l.default.RendererGL.prototype.strokeWeight=function(e){this.curStrokeWeight!==e&&(this.pointSize=e,this.curStrokeWeight=e)},l.default.RendererGL.prototype._getPixel=function(e,t){var r=new Uint8Array(4);return this.drawingContext.readPixels(e,t,1,1,this.drawingContext.RGBA,this.drawingContext.UNSIGNED_BYTE,r),[r[0],r[1],r[2],r[3]]},l.default.RendererGL.prototype.loadPixels=function(){var e,t=this._pixelsState;!0!==this._pInst._glAttributes.preserveDrawingBuffer?console.log("loadPixels only works in WebGL when preserveDrawingBuffer is true."):(t=t.pixels,e=this.GL.drawingBufferWidth*this.GL.drawingBufferHeight*4,t instanceof Uint8Array&&t.length===e||(t=new Uint8Array(e),this._pixelsState._setProperty("pixels",t)),e=this._pInst._pixelDensity,this.GL.readPixels(0,0,this.width*e,this.height*e,this.GL.RGBA,this.GL.UNSIGNED_BYTE,t))},l.default.RendererGL.prototype.geometryInHash=function(e){return void 0!==this.retainedMode.geometry[e]},l.default.RendererGL.prototype.resize=function(e,t){l.default.Renderer.prototype.resize.call(this,e,t),this.GL.viewport(0,0,this.GL.drawingBufferWidth,this.GL.drawingBufferHeight),this._viewport=this.GL.getParameter(this.GL.VIEWPORT),this._curCamera._resize();e=this._pixelsState;void 0!==e.pixels&&e._setProperty("pixels",new Uint8Array(this.GL.drawingBufferWidth*this.GL.drawingBufferHeight*4))},l.default.RendererGL.prototype.clear=function(){this.GL.clearColor((arguments.length<=0?void 0:arguments[0])||0,(arguments.length<=1?void 0:arguments[1])||0,(arguments.length<=2?void 0:arguments[2])||0,(arguments.length<=3?void 0:arguments[3])||0),this.GL.clearDepth(1),this.GL.clear(this.GL.COLOR_BUFFER_BIT|this.GL.DEPTH_BUFFER_BIT)},l.default.RendererGL.prototype.applyMatrix=function(e,t,r,o,n,s){16===arguments.length?l.default.Matrix.prototype.apply.apply(this.uMVMatrix,arguments):this.uMVMatrix.apply([e,t,0,0,r,o,0,0,0,0,1,0,n,s,0,1])},l.default.RendererGL.prototype.translate=function(e,t,r){return e instanceof l.default.Vector&&(r=e.z,t=e.y,e=e.x),this.uMVMatrix.translate([e,t,r]),this},l.default.RendererGL.prototype.scale=function(e,t,r){return this.uMVMatrix.scale(e,t,r),this},l.default.RendererGL.prototype.rotate=function(e,t){return void 0===t?this.rotateZ(e):(l.default.Matrix.prototype.rotate.apply(this.uMVMatrix,arguments),this)},l.default.RendererGL.prototype.rotateX=function(e){return this.rotate(e,1,0,0),this},l.default.RendererGL.prototype.rotateY=function(e){return this.rotate(e,0,1,0),this},l.default.RendererGL.prototype.rotateZ=function(e){return this.rotate(e,0,0,1),this},l.default.RendererGL.prototype.push=function(){var e=l.default.Renderer.prototype.push.apply(this),t=e.properties;return t.uMVMatrix=this.uMVMatrix.copy(),t.uPMatrix=this.uPMatrix.copy(),t._curCamera=this._curCamera,this._curCamera=this._curCamera.copy(),t.ambientLightColors=this.ambientLightColors.slice(),t.specularColors=this.specularColors.slice(),t.directionalLightDirections=this.directionalLightDirections.slice(),t.directionalLightDiffuseColors=this.directionalLightDiffuseColors.slice(),t.directionalLightSpecularColors=this.directionalLightSpecularColors.slice(),t.pointLightPositions=this.pointLightPositions.slice(),t.pointLightDiffuseColors=this.pointLightDiffuseColors.slice(),t.pointLightSpecularColors=this.pointLightSpecularColors.slice(),t.spotLightPositions=this.spotLightPositions.slice(),t.spotLightDirections=this.spotLightDirections.slice(),t.spotLightDiffuseColors=this.spotLightDiffuseColors.slice(),t.spotLightSpecularColors=this.spotLightSpecularColors.slice(),t.spotLightAngle=this.spotLightAngle.slice(),t.spotLightConc=this.spotLightConc.slice(),t.userFillShader=this.userFillShader,t.userStrokeShader=this.userStrokeShader,t.userPointShader=this.userPointShader,t.pointSize=this.pointSize,t.curStrokeWeight=this.curStrokeWeight,t.curStrokeColor=this.curStrokeColor,t.curFillColor=this.curFillColor,t.curAmbientColor=this.curAmbientColor,t.curSpecularColor=this.curSpecularColor,t.curEmissiveColor=this.curEmissiveColor,t._useSpecularMaterial=this._useSpecularMaterial,t._useEmissiveMaterial=this._useEmissiveMaterial,t._useShininess=this._useShininess,t.constantAttenuation=this.constantAttenuation,t.linearAttenuation=this.linearAttenuation,t.quadraticAttenuation=this.quadraticAttenuation,t._enableLighting=this._enableLighting,t._useNormalMaterial=this._useNormalMaterial,t._tex=this._tex,t.drawMode=this.drawMode,t._currentNormal=this._currentNormal,t.curBlendMode=this.curBlendMode,e},l.default.RendererGL.prototype.resetMatrix=function(){return this.uMVMatrix=l.default.Matrix.identity(this._pInst),this},l.default.RendererGL.prototype._getImmediateStrokeShader=function(){var e=this.userStrokeShader;return e&&e.isStrokeShader()?e:this._getLineShader()},l.default.RendererGL.prototype._getRetainedStrokeShader=l.default.RendererGL.prototype._getImmediateStrokeShader,l.default.RendererGL.prototype._getImmediateFillShader=function(){var e=this.userFillShader;if(this._useNormalMaterial&&(!e||!e.isNormalShader()))return this._getNormalShader();if(this._enableLighting){if(!e||!e.isLightShader())return this._getLightShader()}else if(this._tex){if(!e||!e.isTextureShader())return this._getLightShader()}else if(!e)return this._getImmediateModeShader();return e},l.default.RendererGL.prototype._getRetainedFillShader=function(){if(this._useNormalMaterial)return this._getNormalShader();var e=this.userFillShader;if(this._enableLighting){if(!e||!e.isLightShader())return this._getLightShader()}else if(this._tex){if(!e||!e.isTextureShader())return this._getLightShader()}else if(!e)return this._getColorShader();return e},l.default.RendererGL.prototype._getImmediatePointShader=function(){var e=this.userPointShader;return e&&e.isPointShader()?e:this._getPointShader()},l.default.RendererGL.prototype._getRetainedLineShader=l.default.RendererGL.prototype._getImmediateLineShader,l.default.RendererGL.prototype._getLightShader=function(){return this._defaultLightShader||(this._pInst._glAttributes.perPixelLighting?this._defaultLightShader=new l.default.Shader(this,d.phongVert,d.phongFrag):this._defaultLightShader=new l.default.Shader(this,d.lightVert,d.lightTextureFrag)),this._defaultLightShader},l.default.RendererGL.prototype._getImmediateModeShader=function(){return this._defaultImmediateModeShader||(this._defaultImmediateModeShader=new l.default.Shader(this,d.immediateVert,d.vertexColorFrag)),this._defaultImmediateModeShader},l.default.RendererGL.prototype._getNormalShader=function(){return this._defaultNormalShader||(this._defaultNormalShader=new l.default.Shader(this,d.normalVert,d.normalFrag)),this._defaultNormalShader},l.default.RendererGL.prototype._getColorShader=function(){return this._defaultColorShader||(this._defaultColorShader=new l.default.Shader(this,d.normalVert,d.basicFrag)),this._defaultColorShader},l.default.RendererGL.prototype._getPointShader=function(){return this._defaultPointShader||(this._defaultPointShader=new l.default.Shader(this,d.pointVert,d.pointFrag)),this._defaultPointShader},l.default.RendererGL.prototype._getLineShader=function(){return this._defaultLineShader||(this._defaultLineShader=new l.default.Shader(this,d.lineVert,d.lineFrag)),this._defaultLineShader},l.default.RendererGL.prototype._getFontShader=function(){return this._defaultFontShader||(this.GL.getExtension("OES_standard_derivatives"),this._defaultFontShader=new l.default.Shader(this,d.fontVert,d.fontFrag)),this._defaultFontShader},l.default.RendererGL.prototype._getEmptyTexture=function(){var e;return this._emptyTexture||((e=new l.default.Image(1,1)).set(0,0,255),this._emptyTexture=new l.default.Texture(this,e)),this._emptyTexture},l.default.RendererGL.prototype.getTexture=function(e){var t=this.textures,r=!0,o=!1,n=void 0;try{for(var s,i=t[Symbol.iterator]();!(r=(s=i.next()).done);r=!0){var a=s.value;if(a.src===e)return a}}catch(e){o=!0,n=e}finally{try{r||null==i.return||i.return()}finally{if(o)throw n}}o=new l.default.Texture(this,e);return t.push(o),o},l.default.RendererGL.prototype._setStrokeUniforms=function(e){e.bindShader(),e.setUniform("uMaterialColor",this.curStrokeColor),e.setUniform("uStrokeWeight",this.curStrokeWeight)},l.default.RendererGL.prototype._setFillUniforms=function(e){e.bindShader(),e.setUniform("uMaterialColor",this.curFillColor),e.setUniform("isTexture",!!this._tex),this._tex&&e.setUniform("uSampler",this._tex),e.setUniform("uTint",this._tint),e.setUniform("uAmbientMatColor",this.curAmbientColor),e.setUniform("uSpecularMatColor",this.curSpecularColor),e.setUniform("uEmissiveMatColor",this.curEmissiveColor),e.setUniform("uSpecular",this._useSpecularMaterial),e.setUniform("uEmissive",this._useEmissiveMaterial),e.setUniform("uShininess",this._useShininess),e.setUniform("uUseLighting",this._enableLighting);var t=this.pointLightDiffuseColors.length/3,t=(e.setUniform("uPointLightCount",t),e.setUniform("uPointLightLocation",this.pointLightPositions),e.setUniform("uPointLightDiffuseColors",this.pointLightDiffuseColors),e.setUniform("uPointLightSpecularColors",this.pointLightSpecularColors),this.directionalLightDiffuseColors.length/3),t=(e.setUniform("uDirectionalLightCount",t),e.setUniform("uLightingDirection",this.directionalLightDirections),e.setUniform("uDirectionalDiffuseColors",this.directionalLightDiffuseColors),e.setUniform("uDirectionalSpecularColors",this.directionalLightSpecularColors),this.ambientLightColors.length/3),t=(e.setUniform("uAmbientLightCount",t),e.setUniform("uAmbientColor",this.ambientLightColors),this.spotLightDiffuseColors.length/3);e.setUniform("uSpotLightCount",t),e.setUniform("uSpotLightAngle",this.spotLightAngle),e.setUniform("uSpotLightConc",this.spotLightConc),e.setUniform("uSpotLightDiffuseColors",this.spotLightDiffuseColors),e.setUniform("uSpotLightSpecularColors",this.spotLightSpecularColors),e.setUniform("uSpotLightLocation",this.spotLightPositions),e.setUniform("uSpotLightDirection",this.spotLightDirections),e.setUniform("uConstantAttenuation",this.constantAttenuation),e.setUniform("uLinearAttenuation",this.linearAttenuation),e.setUniform("uQuadraticAttenuation",this.quadraticAttenuation),e.bindTextures()},l.default.RendererGL.prototype._setPointUniforms=function(e){e.bindShader(),e.setUniform("uMaterialColor",this.curStrokeColor),e.setUniform("uPointSize",this.pointSize*this._pInst._pixelDensity)},l.default.RendererGL.prototype._bindBuffer=function(e,t,r,o,n){t=t||this.GL.ARRAY_BUFFER,this.GL.bindBuffer(t,e),void 0!==r&&(e=new(o||Float32Array)(r),this.GL.bufferData(t,e,n||this.GL.STATIC_DRAW))},l.default.RendererGL.prototype._arraysEqual=function(e,t){var r=e.length;if(r!==t.length)return!1;for(var o=0;o>7,127&d,c>>7,127&c);for(var f=0;f>7,127&h,0,0)}}return{cellImageInfo:a,dimOffset:t,dimImageInfo:n}}}}var V=Math.sqrt(3);B.default.RendererGL.prototype._renderText=function(e,t,r,o,n){if(this._textFont&&"string"!=typeof this._textFont){if(!(n<=o)&&this._doFill){if(this._isOpenType()){e.push();var n=this._doStroke,s=this.drawMode,i=(this._doStroke=!1,this.drawMode=E.TEXTURE,this._textFont.font),a=(a=this._textFont._fontInfo)||(this._textFont._fontInfo=new T(i)),r=this._textFont._handleAlignment(this,t,r,o),o=this._textSize/i.unitsPerEm,l=(this.translate(r.x,r.y,0),this.scale(o,o,1),this.GL),r=!this._defaultFontShader,u=this._getFontShader(),c=(u.init(),u.bindShader(),r&&(u.setUniform("uGridImageSize",[64,64]),u.setUniform("uCellsImageSize",[64,64]),u.setUniform("uStrokeImageSize",[64,64]),u.setUniform("uGridSize",[9,9])),this._applyColorBlend(this.curFillColor),this.retainedMode.geometry.glyph),d=(c||((o=this._textGeom=new B.default.Geometry(1,1,function(){for(var e=0;e<=1;e++)for(var t=0;t<=1;t++)this.vertices.push(new B.default.Vector(t,e,0)),this.uvs.push(t,e)})).computeFaces().computeNormals(),c=this.createBuffers("glyph",o)),!0),r=!1,o=void 0;try{for(var f,h=this.retainedMode.buffers.text[Symbol.iterator]();!(d=(f=h.next()).done);d=!0)f.value._prepareBuffer(c,u)}catch(e){r=!0,o=e}finally{try{d||null==h.return||h.return()}finally{if(r)throw o}}this._bindBuffer(c.indexBuffer,l.ELEMENT_ARRAY_BUFFER),u.setUniform("uMaterialColor",this.curFillColor);try{var p=0,m=null,y=i.stringToGlyphs(t),g=!0,v=!1,b=void 0;try{for(var j,_=y[Symbol.iterator]();!(g=(j=_.next()).done);g=!0){var x,w,S=j.value,M=(m&&(p+=i.getKerningValue(m,S)),a.getGlyphInfo(S));M.uGlyphRect&&(x=M.rowInfo,w=M.colInfo,u.setUniform("uSamplerStrokes",M.strokeImageInfo.imageData),u.setUniform("uSamplerRowStrokes",x.cellImageInfo.imageData),u.setUniform("uSamplerRows",x.dimImageInfo.imageData),u.setUniform("uSamplerColStrokes",w.cellImageInfo.imageData),u.setUniform("uSamplerCols",w.dimImageInfo.imageData),u.setUniform("uGridOffset",M.uGridOffset),u.setUniform("uGlyphRect",M.uGlyphRect),u.setUniform("uGlyphOffset",p),u.bindTextures(),l.drawElements(l.TRIANGLES,6,this.GL.UNSIGNED_SHORT,0)),p+=S.advanceWidth,m=S}}catch(e){v=!0,b=e}finally{try{g||null==_.return||_.return()}finally{if(v)throw b}}}finally{u.unbindShader(),this._doStroke=n,this.drawMode=s,e.pop()}}else console.log("WEBGL: only Opentype (.otf) and Truetype (.ttf) fonts are supported");return e}}else console.log("WEBGL: you must load and set a font before drawing text. See `loadFont` and `textFont` for more details.")}},{"../core/constants":256,"../core/main":267,"./p5.RendererGL.Retained":320,"./p5.Shader":322,"core-js/modules/es.array.iterator":158,"core-js/modules/es.object.get-own-property-descriptor":173,"core-js/modules/es.object.to-string":177,"core-js/modules/es.regexp.exec":181,"core-js/modules/es.string.iterator":186,"core-js/modules/es.string.split":191,"core-js/modules/es.string.sub":192,"core-js/modules/es.symbol":196,"core-js/modules/es.symbol.description":194,"core-js/modules/es.symbol.iterator":195,"core-js/modules/es.weak-map":228,"core-js/modules/web.dom-collections.iterator":230}]},{},[251])(251)}); \ No newline at end of file diff --git a/static/assets/data/libraries/p5.patgrad.js b/static/assets/data/libraries/p5.patgrad.js new file mode 100644 index 0000000..90ea0db --- /dev/null +++ b/static/assets/data/libraries/p5.patgrad.js @@ -0,0 +1,125 @@ +p5.Gradient = class { + constructor() {} + + setAngle(angle) { + if (_angleMode === "degrees") { + this.angle = radians(angle); + } else { + this.angle = angle; + } + } + + colors() { + let stops; + + if (Array.isArray(arguments[0])) { + stops = arguments[0]; + } else { + stops = arguments; + } + + for (let i = 0; i < stops.length; i += 2) { + const pos = stops[i]; + const col = stops[i + 1].toString(); + this.gradient.addColorStop(pos, col); + } + } +}; + +p5.LinearGradient = class LinearGradient extends p5.Gradient { + constructor(angle, width) { + super(); + this.setAngle(angle || 0); + this.width = width || 100; + + const x = cos(this.angle) * this.width; + const y = sin(this.angle) * this.width; + + this.gradient = drawingContext.createLinearGradient(0, 0, x, y); + } +}; + +p5.RadialGradient = class RadialGradient extends p5.Gradient { + constructor(innerRadius, outerRadius, x, y) { + super(); + this.innerRadius = innerRadius || 0; + this.outerRadius = outerRadius || 100; + this.x = x || 0; + this.y = y || 0; + + this.gradient = drawingContext.createRadialGradient( + this.x, + this.y, + this.innerRadius, + this.x, + this.y, + this.outerRadius + ); + } +}; + +p5.ConicGradient = class ConicGradient extends p5.Gradient { + constructor(angle, x, y) { + super(); + this.setAngle(angle || 0); + this.x = x || 0; + this.y = y || 0; + + this.gradient = drawingContext.createConicGradient(this.angle, this.x, this.y); + } +}; + +p5.prototype.createLinearGradient = function (angle, width) { + return new p5.LinearGradient(angle, width); +}; + +p5.prototype.createConicGradient = function (angle, x, y) { + return new p5.ConicGradient(angle, x, y); +}; + +p5.prototype.createRadialGradient = function (innerRadius, outerRadius, x, y) { + return new p5.RadialGradient(innerRadius, outerRadius, x, y); +}; + +p5.prototype.fillGradient = function (gradient) { + this.drawingContext.fillStyle = gradient.gradient ? gradient.gradient : gradient; +}; + +p5.prototype.strokeGradient = function (gradient) { + this.drawingContext.strokeStyle = gradient.gradient ? gradient.gradient : gradient; +}; + +p5.prototype.backgroundGradient = function (gradient) { + this.drawingContext.fillStyle = gradient.gradient ? gradient.gradient : gradient; + this.drawingContext.fillRect(0, 0, this.width, this.height); +}; + +p5.prototype.createPattern = function (patternElement, repeat) { + if (patternElement.canvas) { + patternElement = patternElement.canvas; + } else if (patternElement.elt) { + patternElement = patternElement.elt; + } + return this.drawingContext.createPattern(patternElement, repeat || "repeat"); +}; + +p5.prototype.createSimplePattern = (func, w, h, repeat) => { + let buffer = this.createGraphics(w || 5, h || 5); + buffer.pixelDensity(1); + buffer.background(255); + func(buffer); + return this.drawingContext.createPattern(buffer.canvas, repeat || "repeat"); +}; + +p5.prototype.fillPattern = function (pattern) { + this.drawingContext.fillStyle = pattern; +}; + +p5.prototype.strokePattern = function (pattern) { + this.drawingContext.strokeStyle = pattern; +}; + +p5.prototype.backgroundPattern = function (pattern) { + this.drawingContext.fillStyle = pattern; + this.drawingContext.fillRect(0, 0, width, height); +}; diff --git a/static/assets/data/libraries/p5.sound.min.js b/static/assets/data/libraries/p5.sound.min.js new file mode 100644 index 0000000..44f2523 --- /dev/null +++ b/static/assets/data/libraries/p5.sound.min.js @@ -0,0 +1,3 @@ +/** [p5.sound] Version: 1.0.1 - 2021-05-25 */ + !function(n){var i={};function r(t){if(i[t])return i[t].exports;var e=i[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}r.m=n,r.c=i,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=40)}([function(t,e,n){var i;void 0===(i=function(){"use strict";function l(t,e){this.isUndef(t)||1===t?this.input=this.context.createGain():1t)this.cancelScheduledValues(t),this.linearRampToValueAtTime(e,t);else{var i=this._searchAfter(t);i&&(this.cancelScheduledValues(t),i.type===u.TimelineSignal.Type.Linear?this.linearRampToValueAtTime(e,t):i.type===u.TimelineSignal.Type.Exponential&&this.exponentialRampToValueAtTime(e,t)),this.setValueAtTime(e,t)}return this},u.TimelineSignal.prototype.linearRampToValueBetween=function(t,e,n){return this.setRampPoint(e),this.linearRampToValueAtTime(t,n),this},u.TimelineSignal.prototype.exponentialRampToValueBetween=function(t,e,n){return this.setRampPoint(e),this.exponentialRampToValueAtTime(t,n),this},u.TimelineSignal.prototype._searchBefore=function(t){return this._events.get(t)},u.TimelineSignal.prototype._searchAfter=function(t){return this._events.getAfter(t)},u.TimelineSignal.prototype.getValueAtTime=function(t){t=this.toSeconds(t);var e=this._searchAfter(t),n=this._searchBefore(t),i=this._initial;if(null===n)i=this._initial;else if(n.type===u.TimelineSignal.Type.Target){var r,o=this._events.getBefore(n.time);r=null===o?this._initial:o.value,i=this._exponentialApproach(n.time,r,n.value,n.constant,t)}else i=n.type===u.TimelineSignal.Type.Curve?this._curveInterpolate(n.time,n.value,n.duration,t):null===e?n.value:e.type===u.TimelineSignal.Type.Linear?this._linearInterpolate(n.time,n.value,e.time,e.value,t):e.type===u.TimelineSignal.Type.Exponential?this._exponentialInterpolate(n.time,n.value,e.time,e.value,t):n.value;return i},u.TimelineSignal.prototype.connect=u.SignalBase.prototype.connect,u.TimelineSignal.prototype._exponentialApproach=function(t,e,n,i,r){return n+(e-n)*Math.exp(-(r-t)/i)},u.TimelineSignal.prototype._linearInterpolate=function(t,e,n,i,r){return e+(r-t)/(n-t)*(i-e)},u.TimelineSignal.prototype._exponentialInterpolate=function(t,e,n,i,r){return(e=Math.max(this._minOutput,e))*Math.pow(i/e,(r-t)/(n-t))},u.TimelineSignal.prototype._curveInterpolate=function(t,e,n,i){var r=e.length;if(t+n<=i)return e[r-1];if(i<=t)return e[0];var o=(i-t)/n,s=Math.floor((r-1)*o),a=Math.ceil((r-1)*o),u=e[s],c=e[a];return a===s?u:this._linearInterpolate(s,u,a,c,o*(r-1))},u.TimelineSignal.prototype.dispose=function(){u.Signal.prototype.dispose.call(this),u.Param.prototype.dispose.call(this),this._events.dispose(),this._events=null},u.TimelineSignal}.apply(e,i))||(t.exports=r)},function(t,e,n){var i,r;i=[n(0),n(4),n(1),n(2)],void 0===(r=function(n){"use strict";return n.Scale=function(t,e){this._outputMin=this.defaultArg(t,0),this._outputMax=this.defaultArg(e,1),this._scale=this.input=new n.Multiply(1),this._add=this.output=new n.Add(0),this._scale.connect(this._add),this._setRange()},n.extend(n.Scale,n.SignalBase),Object.defineProperty(n.Scale.prototype,"min",{get:function(){return this._outputMin},set:function(t){this._outputMin=t,this._setRange()}}),Object.defineProperty(n.Scale.prototype,"max",{get:function(){return this._outputMax},set:function(t){this._outputMax=t,this._setRange()}}),n.Scale.prototype._setRange=function(){this._add.value=this._outputMin,this._scale.value=this._outputMax-this._outputMin},n.Scale.prototype.dispose=function(){return n.prototype.dispose.call(this),this._add.dispose(),this._add=null,this._scale.dispose(),this._scale=null,this},n.Scale}.apply(e,i))||(t.exports=r)},function(t,e,n){var i,r;i=[n(0),n(16),n(30),n(31),n(12)],void 0===(r=function(e){return e.Type={Default:"number",Time:"time",Frequency:"frequency",TransportTime:"transportTime",Ticks:"ticks",NormalRange:"normalRange",AudioRange:"audioRange",Decibels:"db",Interval:"interval",BPM:"bpm",Positive:"positive",Cents:"cents",Degrees:"degrees",MIDI:"midi",BarsBeatsSixteenths:"barsBeatsSixteenths",Samples:"samples",Hertz:"hertz",Note:"note",Milliseconds:"milliseconds",Seconds:"seconds",Notation:"notation"},e.prototype.toSeconds=function(t){return this.isNumber(t)?t:this.isUndef(t)?this.now():this.isString(t)?new e.Time(t).toSeconds():t instanceof e.TimeBase?t.toSeconds():void 0},e.prototype.toFrequency=function(t){return this.isNumber(t)?t:this.isString(t)||this.isUndef(t)?new e.Frequency(t).valueOf():t instanceof e.TimeBase?t.toFrequency():void 0},e.prototype.toTicks=function(t){return this.isNumber(t)||this.isString(t)?new e.TransportTime(t).toTicks():this.isUndef(t)?e.Transport.ticks:t instanceof e.TimeBase?t.toTicks():void 0},e}.apply(e,i))||(t.exports=r)},function(t,e,n){var i,r;i=[n(0),n(18),n(9)],void 0===(r=function(n){"use strict";return window.GainNode&&!AudioContext.prototype.createGain&&(AudioContext.prototype.createGain=AudioContext.prototype.createGainNode),n.Gain=function(){var t=this.optionsObject(arguments,["gain","units"],n.Gain.defaults);this.input=this.output=this._gainNode=this.context.createGain(),this.gain=new n.Param({param:this._gainNode.gain,units:t.units,value:t.gain,convert:t.convert}),this._readOnly("gain")},n.extend(n.Gain),n.Gain.defaults={gain:1,convert:!0},n.Gain.prototype.dispose=function(){n.Param.prototype.dispose.call(this),this._gainNode.disconnect(),this._gainNode=null,this._writable("gain"),this.gain.dispose(),this.gain=null},n.prototype.createInsOuts=function(t,e){1===t?this.input=new n.Gain:1this._nextTick&&this._state;){var e=this._state.getValueAtTime(this._nextTick);if(e!==this._lastState){this._lastState=e;var n=this._state.get(this._nextTick);e===r.State.Started?(this._nextTick=n.time,this.isUndef(n.offset)||(this.ticks=n.offset),this.emit("start",n.time,this.ticks)):e===r.State.Stopped?(this.ticks=0,this.emit("stop",n.time)):e===r.State.Paused&&this.emit("pause",n.time)}var i=this._nextTick;this.frequency&&(this._nextTick+=1/this.frequency.getValueAtTime(this._nextTick),e===r.State.Started&&(this.callback(i),this.ticks++))}},r.Clock.prototype.getStateAtTime=function(t){return t=this.toSeconds(t),this._state.getValueAtTime(t)},r.Clock.prototype.dispose=function(){r.Emitter.prototype.dispose.call(this),this.context.off("tick",this._boundLoop),this._writable("frequency"),this.frequency.dispose(),this.frequency=null,this._boundLoop=null,this._nextTick=1/0,this.callback=null,this._state.dispose(),this._state=null},r.Clock}.apply(e,i))||(t.exports=r)},function(t,e,n){var i,r;i=[n(0),n(14)],void 0===(r=function(i){function t(t,e,n){if(t.input)Array.isArray(t.input)?(i.prototype.isUndef(n)&&(n=0),this.connect(t.input[n])):this.connect(t.input,e,n);else try{t instanceof AudioNode?r.call(this,t,e,n):r.call(this,t,e)}catch(e){throw new Error("error connecting to node: "+t+"\n"+e)}}var r,o;return!window.hasOwnProperty("AudioContext")&&window.hasOwnProperty("webkitAudioContext")&&(window.AudioContext=window.webkitAudioContext),i.Context=function(t){for(var e in i.Emitter.call(this),t=t||new window.AudioContext,this._context=t,this._context)this._defineProperty(this._context,e);this._latencyHint="interactive",this._lookAhead=.1,this._updateInterval=this._lookAhead/3,this._computedUpdateInterval=0,this._worker=this._createWorker(),this._constants={}},i.extend(i.Context,i.Emitter),i.Emitter.mixin(i.Context),i.Context.prototype._defineProperty=function(e,n){this.isUndef(this[n])&&Object.defineProperty(this,n,{get:function(){return"function"==typeof e[n]?e[n].bind(e):e[n]},set:function(t){e[n]=t}})},i.Context.prototype.now=function(){return this._context.currentTime},i.Context.prototype._createWorker=function(){window.URL=window.URL||window.webkitURL;var t=new Blob(["var timeoutTime = "+(1e3*this._updateInterval).toFixed(1)+";self.onmessage = function(msg){\ttimeoutTime = parseInt(msg.data);};function tick(){\tsetTimeout(tick, timeoutTime);\tself.postMessage('tick');}tick();"]),e=URL.createObjectURL(t),n=new Worker(e);return n.addEventListener("message",function(){this.emit("tick")}.bind(this)),n.addEventListener("message",function(){var t=this.now();if(this.isNumber(this._lastUpdate)){var e=t-this._lastUpdate;this._computedUpdateInterval=Math.max(e,.97*this._computedUpdateInterval)}this._lastUpdate=t}.bind(this)),n},i.Context.prototype.getConstant=function(t){if(this._constants[t])return this._constants[t];for(var e=this._context.createBuffer(1,128,this._context.sampleRate),n=e.getChannelData(0),i=0;ithis.memory){var n=this.length-this.memory;this._timeline.splice(0,n)}return this},e.Timeline.prototype.remove=function(t){if(this._iterating)this._toRemove.push(t);else{var e=this._timeline.indexOf(t);-1!==e&&this._timeline.splice(e,1)}return this},e.Timeline.prototype.get=function(t){var e=this._search(t);return-1!==e?this._timeline[e]:null},e.Timeline.prototype.peek=function(){return this._timeline[0]},e.Timeline.prototype.shift=function(){return this._timeline.shift()},e.Timeline.prototype.getAfter=function(t){var e=this._search(t);return e+1=t&&(this._timeline=[]);return this},e.Timeline.prototype.cancelBefore=function(t){if(this._timeline.length){var e=this._search(t);0<=e&&(this._timeline=this._timeline.slice(e+1))}return this},e.Timeline.prototype._search=function(t){var e=0,n=this._timeline.length,i=n;if(0t)return r;o.time>t?i=r:o.time=t;)n--;return this._iterate(e,n+1),this},e.Timeline.prototype.forEachAtTime=function(e,n){var t=this._search(e);return-1!==t&&this._iterate(function(t){t.time===e&&n(t)},0,t),this},e.Timeline.prototype.dispose=function(){e.prototype.dispose.call(this),this._timeline=null,this._toRemove=null},e.Timeline}.apply(e,i))||(t.exports=r)},function(t,e,n){var i,r;i=[n(0),n(1),n(2)],void 0===(r=function(t){"use strict";return t.Negate=function(){this._multiply=this.input=this.output=new t.Multiply(-1)},t.extend(t.Negate,t.SignalBase),t.Negate.prototype.dispose=function(){return t.prototype.dispose.call(this),this._multiply.dispose(),this._multiply=null,this},t.Negate}.apply(e,i))||(t.exports=r)},function(t,e,n){var i,r;i=[n(0),n(2),n(1),n(6)],void 0===(r=function(t){"use strict";return t.GreaterThanZero=function(){this._thresh=this.output=new t.WaveShaper(function(t){return t<=0?0:1},127),this._scale=this.input=new t.Multiply(1e4),this._scale.connect(this._thresh)},t.extend(t.GreaterThanZero,t.SignalBase),t.GreaterThanZero.prototype.dispose=function(){return t.prototype.dispose.call(this),this._scale.dispose(),this._scale=null,this._thresh.dispose(),this._thresh=null,this},t.GreaterThanZero}.apply(e,i))||(t.exports=r)},function(t,e,n){var i,r,o;r=[],void 0===(o="function"==typeof(i=function(){var s=function(t,e){this._dragged=!1,this._element=t,this._bindedMove=this._moved.bind(this),this._bindedEnd=this._ended.bind(this,e),t.addEventListener("touchstart",this._bindedEnd),t.addEventListener("touchmove",this._bindedMove),t.addEventListener("touchend",this._bindedEnd),t.addEventListener("mouseup",this._bindedEnd)};function o(t){return"running"===t.state}return s.prototype._moved=function(t){this._dragged=!0},s.prototype._ended=function(t){this._dragged||function(t){var e=t.createBuffer(1,1,t.sampleRate),n=t.createBufferSource();n.buffer=e,n.connect(t.destination),n.start(0),t.resume&&t.resume()}(t),this._dragged=!1},s.prototype.dispose=function(){this._element.removeEventListener("touchstart",this._bindedEnd),this._element.removeEventListener("touchmove",this._bindedMove),this._element.removeEventListener("touchend",this._bindedEnd),this._element.removeEventListener("mouseup",this._bindedEnd),this._bindedMove=null,this._bindedEnd=null,this._element=null},function(e,t,n){var i=new Promise(function(t){!function(e,n){o(e)?n():function t(){o(e)?n():(requestAnimationFrame(t),e.resume&&e.resume())}()}(e,t)}),r=[];return function t(e,n,i){if(Array.isArray(e)||NodeList&&e instanceof NodeList)for(var r=0;r= this._length) {\n this._writeIndex = 0;\n } // For excessive frames, the buffer will be overwritten.\n\n\n this._framesAvailable += sourceLength;\n\n if (this._framesAvailable > this._length) {\n this._framesAvailable = this._length;\n }\n }\n /**\n * Pull data out of buffer and fill a given sequence of Float32Arrays.\n *\n * @param {array} arraySequence An array of Float32Arrays.\n */\n\n }, {\n key: "pull",\n value: function pull(arraySequence) {\n // The channel count of arraySequence and the length of each channel must\n // match with this buffer obejct.\n // If the FIFO is completely empty, do nothing.\n if (this._framesAvailable === 0) {\n return;\n }\n\n var destinationLength = arraySequence[0].length; // Transfer data from the internal buffer to the |arraySequence| storage.\n\n for (var i = 0; i < destinationLength; ++i) {\n var readIndex = (this._readIndex + i) % this._length;\n\n for (var channel = 0; channel < this._channelCount; ++channel) {\n arraySequence[channel][i] = this._channelData[channel][readIndex];\n }\n }\n\n this._readIndex += destinationLength;\n\n if (this._readIndex >= this._length) {\n this._readIndex = 0;\n }\n\n this._framesAvailable -= destinationLength;\n\n if (this._framesAvailable < 0) {\n this._framesAvailable = 0;\n }\n }\n }, {\n key: "framesAvailable",\n get: function get() {\n return this._framesAvailable;\n }\n }]);\n\n return RingBuffer;\n }()\n}["default"];\n\nvar RecorderProcessor =\n/*#__PURE__*/\nfunction (_AudioWorkletProcesso) {\n _inherits(RecorderProcessor, _AudioWorkletProcesso);\n\n function RecorderProcessor(options) {\n var _this;\n\n _classCallCheck(this, RecorderProcessor);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(RecorderProcessor).call(this));\n var processorOptions = options.processorOptions || {};\n _this.numOutputChannels = options.outputChannelCount || 2;\n _this.numInputChannels = processorOptions.numInputChannels || 2;\n _this.bufferSize = processorOptions.bufferSize || 1024;\n _this.recording = false;\n\n _this.clear();\n\n _this.port.onmessage = function (event) {\n var data = event.data;\n\n if (data.name === \'start\') {\n _this.record(data.duration);\n } else if (data.name === \'stop\') {\n _this.stop();\n }\n };\n\n return _this;\n }\n\n _createClass(RecorderProcessor, [{\n key: "process",\n value: function process(inputs) {\n if (!this.recording) {\n return true;\n } else if (this.sampleLimit && this.recordedSamples >= this.sampleLimit) {\n this.stop();\n return true;\n }\n\n var input = inputs[0];\n this.inputRingBuffer.push(input);\n\n if (this.inputRingBuffer.framesAvailable >= this.bufferSize) {\n this.inputRingBuffer.pull(this.inputRingBufferArraySequence);\n\n for (var channel = 0; channel < this.numOutputChannels; ++channel) {\n var inputChannelCopy = this.inputRingBufferArraySequence[channel].slice();\n\n if (channel === 0) {\n this.leftBuffers.push(inputChannelCopy);\n\n if (this.numInputChannels === 1) {\n this.rightBuffers.push(inputChannelCopy);\n }\n } else if (channel === 1 && this.numInputChannels > 1) {\n this.rightBuffers.push(inputChannelCopy);\n }\n }\n\n this.recordedSamples += this.bufferSize;\n }\n\n return true;\n }\n }, {\n key: "record",\n value: function record(duration) {\n if (duration) {\n this.sampleLimit = Math.round(duration * sampleRate);\n }\n\n this.recording = true;\n }\n }, {\n key: "stop",\n value: function stop() {\n this.recording = false;\n var buffers = this.getBuffers();\n var leftBuffer = buffers[0].buffer;\n var rightBuffer = buffers[1].buffer;\n this.port.postMessage({\n name: \'buffers\',\n leftBuffer: leftBuffer,\n rightBuffer: rightBuffer\n }, [leftBuffer, rightBuffer]);\n this.clear();\n }\n }, {\n key: "getBuffers",\n value: function getBuffers() {\n var buffers = [];\n buffers.push(this.mergeBuffers(this.leftBuffers));\n buffers.push(this.mergeBuffers(this.rightBuffers));\n return buffers;\n }\n }, {\n key: "mergeBuffers",\n value: function mergeBuffers(channelBuffer) {\n var result = new Float32Array(this.recordedSamples);\n var offset = 0;\n var lng = channelBuffer.length;\n\n for (var i = 0; i < lng; i++) {\n var buffer = channelBuffer[i];\n result.set(buffer, offset);\n offset += buffer.length;\n }\n\n return result;\n }\n }, {\n key: "clear",\n value: function clear() {\n var _this2 = this;\n\n this.leftBuffers = [];\n this.rightBuffers = [];\n this.inputRingBuffer = new RingBuffer(this.bufferSize, this.numInputChannels);\n this.inputRingBufferArraySequence = new Array(this.numInputChannels).fill(null).map(function () {\n return new Float32Array(_this2.bufferSize);\n });\n this.recordedSamples = 0;\n this.sampleLimit = null;\n }\n }]);\n\n return RecorderProcessor;\n}(_wrapNativeSuper(AudioWorkletProcessor));\n\nregisterProcessor(processorNames.recorderProcessor, RecorderProcessor);'},function(t,e,n){"use strict";n.r(e),e.default='function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// import dependencies via preval.require so that they\'re available as values at compile time\nvar processorNames = {\n "recorderProcessor": "recorder-processor",\n "soundFileProcessor": "sound-file-processor",\n "amplitudeProcessor": "amplitude-processor"\n};\nvar RingBuffer = {\n "default":\n /*#__PURE__*/\n function () {\n /**\n * @constructor\n * @param {number} length Buffer length in frames.\n * @param {number} channelCount Buffer channel count.\n */\n function RingBuffer(length, channelCount) {\n _classCallCheck(this, RingBuffer);\n\n this._readIndex = 0;\n this._writeIndex = 0;\n this._framesAvailable = 0;\n this._channelCount = channelCount;\n this._length = length;\n this._channelData = [];\n\n for (var i = 0; i < this._channelCount; ++i) {\n this._channelData[i] = new Float32Array(length);\n }\n }\n /**\n * Getter for Available frames in buffer.\n *\n * @return {number} Available frames in buffer.\n */\n\n\n _createClass(RingBuffer, [{\n key: "push",\n\n /**\n * Push a sequence of Float32Arrays to buffer.\n *\n * @param {array} arraySequence A sequence of Float32Arrays.\n */\n value: function push(arraySequence) {\n // The channel count of arraySequence and the length of each channel must\n // match with this buffer obejct.\n // Transfer data from the |arraySequence| storage to the internal buffer.\n var sourceLength = arraySequence[0] ? arraySequence[0].length : 0;\n\n for (var i = 0; i < sourceLength; ++i) {\n var writeIndex = (this._writeIndex + i) % this._length;\n\n for (var channel = 0; channel < this._channelCount; ++channel) {\n this._channelData[channel][writeIndex] = arraySequence[channel][i];\n }\n }\n\n this._writeIndex += sourceLength;\n\n if (this._writeIndex >= this._length) {\n this._writeIndex = 0;\n } // For excessive frames, the buffer will be overwritten.\n\n\n this._framesAvailable += sourceLength;\n\n if (this._framesAvailable > this._length) {\n this._framesAvailable = this._length;\n }\n }\n /**\n * Pull data out of buffer and fill a given sequence of Float32Arrays.\n *\n * @param {array} arraySequence An array of Float32Arrays.\n */\n\n }, {\n key: "pull",\n value: function pull(arraySequence) {\n // The channel count of arraySequence and the length of each channel must\n // match with this buffer obejct.\n // If the FIFO is completely empty, do nothing.\n if (this._framesAvailable === 0) {\n return;\n }\n\n var destinationLength = arraySequence[0].length; // Transfer data from the internal buffer to the |arraySequence| storage.\n\n for (var i = 0; i < destinationLength; ++i) {\n var readIndex = (this._readIndex + i) % this._length;\n\n for (var channel = 0; channel < this._channelCount; ++channel) {\n arraySequence[channel][i] = this._channelData[channel][readIndex];\n }\n }\n\n this._readIndex += destinationLength;\n\n if (this._readIndex >= this._length) {\n this._readIndex = 0;\n }\n\n this._framesAvailable -= destinationLength;\n\n if (this._framesAvailable < 0) {\n this._framesAvailable = 0;\n }\n }\n }, {\n key: "framesAvailable",\n get: function get() {\n return this._framesAvailable;\n }\n }]);\n\n return RingBuffer;\n }()\n}["default"];\n\nvar SoundFileProcessor =\n/*#__PURE__*/\nfunction (_AudioWorkletProcesso) {\n _inherits(SoundFileProcessor, _AudioWorkletProcesso);\n\n function SoundFileProcessor(options) {\n var _this;\n\n _classCallCheck(this, SoundFileProcessor);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SoundFileProcessor).call(this));\n var processorOptions = options.processorOptions || {};\n _this.bufferSize = processorOptions.bufferSize || 256;\n _this.inputRingBuffer = new RingBuffer(_this.bufferSize, 1);\n _this.inputRingBufferArraySequence = [new Float32Array(_this.bufferSize)];\n return _this;\n }\n\n _createClass(SoundFileProcessor, [{\n key: "process",\n value: function process(inputs) {\n var input = inputs[0]; // we only care about the first input channel, because that contains the position data\n\n this.inputRingBuffer.push([input[0]]);\n\n if (this.inputRingBuffer.framesAvailable >= this.bufferSize) {\n this.inputRingBuffer.pull(this.inputRingBufferArraySequence);\n var inputChannel = this.inputRingBufferArraySequence[0];\n var position = inputChannel[inputChannel.length - 1] || 0;\n this.port.postMessage({\n name: \'position\',\n position: position\n });\n }\n\n return true;\n }\n }]);\n\n return SoundFileProcessor;\n}(_wrapNativeSuper(AudioWorkletProcessor));\n\nregisterProcessor(processorNames.soundFileProcessor, SoundFileProcessor);'},function(t,e,n){"use strict";n.r(e),e.default='function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// import dependencies via preval.require so that they\'re available as values at compile time\nvar processorNames = {\n "recorderProcessor": "recorder-processor",\n "soundFileProcessor": "sound-file-processor",\n "amplitudeProcessor": "amplitude-processor"\n};\nvar RingBuffer = {\n "default":\n /*#__PURE__*/\n function () {\n /**\n * @constructor\n * @param {number} length Buffer length in frames.\n * @param {number} channelCount Buffer channel count.\n */\n function RingBuffer(length, channelCount) {\n _classCallCheck(this, RingBuffer);\n\n this._readIndex = 0;\n this._writeIndex = 0;\n this._framesAvailable = 0;\n this._channelCount = channelCount;\n this._length = length;\n this._channelData = [];\n\n for (var i = 0; i < this._channelCount; ++i) {\n this._channelData[i] = new Float32Array(length);\n }\n }\n /**\n * Getter for Available frames in buffer.\n *\n * @return {number} Available frames in buffer.\n */\n\n\n _createClass(RingBuffer, [{\n key: "push",\n\n /**\n * Push a sequence of Float32Arrays to buffer.\n *\n * @param {array} arraySequence A sequence of Float32Arrays.\n */\n value: function push(arraySequence) {\n // The channel count of arraySequence and the length of each channel must\n // match with this buffer obejct.\n // Transfer data from the |arraySequence| storage to the internal buffer.\n var sourceLength = arraySequence[0] ? arraySequence[0].length : 0;\n\n for (var i = 0; i < sourceLength; ++i) {\n var writeIndex = (this._writeIndex + i) % this._length;\n\n for (var channel = 0; channel < this._channelCount; ++channel) {\n this._channelData[channel][writeIndex] = arraySequence[channel][i];\n }\n }\n\n this._writeIndex += sourceLength;\n\n if (this._writeIndex >= this._length) {\n this._writeIndex = 0;\n } // For excessive frames, the buffer will be overwritten.\n\n\n this._framesAvailable += sourceLength;\n\n if (this._framesAvailable > this._length) {\n this._framesAvailable = this._length;\n }\n }\n /**\n * Pull data out of buffer and fill a given sequence of Float32Arrays.\n *\n * @param {array} arraySequence An array of Float32Arrays.\n */\n\n }, {\n key: "pull",\n value: function pull(arraySequence) {\n // The channel count of arraySequence and the length of each channel must\n // match with this buffer obejct.\n // If the FIFO is completely empty, do nothing.\n if (this._framesAvailable === 0) {\n return;\n }\n\n var destinationLength = arraySequence[0].length; // Transfer data from the internal buffer to the |arraySequence| storage.\n\n for (var i = 0; i < destinationLength; ++i) {\n var readIndex = (this._readIndex + i) % this._length;\n\n for (var channel = 0; channel < this._channelCount; ++channel) {\n arraySequence[channel][i] = this._channelData[channel][readIndex];\n }\n }\n\n this._readIndex += destinationLength;\n\n if (this._readIndex >= this._length) {\n this._readIndex = 0;\n }\n\n this._framesAvailable -= destinationLength;\n\n if (this._framesAvailable < 0) {\n this._framesAvailable = 0;\n }\n }\n }, {\n key: "framesAvailable",\n get: function get() {\n return this._framesAvailable;\n }\n }]);\n\n return RingBuffer;\n }()\n}["default"];\n\nvar AmplitudeProcessor =\n/*#__PURE__*/\nfunction (_AudioWorkletProcesso) {\n _inherits(AmplitudeProcessor, _AudioWorkletProcesso);\n\n function AmplitudeProcessor(options) {\n var _this;\n\n _classCallCheck(this, AmplitudeProcessor);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AmplitudeProcessor).call(this));\n var processorOptions = options.processorOptions || {};\n _this.numOutputChannels = options.outputChannelCount || 1;\n _this.numInputChannels = processorOptions.numInputChannels || 2;\n _this.normalize = processorOptions.normalize || false;\n _this.smoothing = processorOptions.smoothing || 0;\n _this.bufferSize = processorOptions.bufferSize || 2048;\n _this.inputRingBuffer = new RingBuffer(_this.bufferSize, _this.numInputChannels);\n _this.outputRingBuffer = new RingBuffer(_this.bufferSize, _this.numOutputChannels);\n _this.inputRingBufferArraySequence = new Array(_this.numInputChannels).fill(null).map(function () {\n return new Float32Array(_this.bufferSize);\n });\n _this.stereoVol = [0, 0];\n _this.stereoVolNorm = [0, 0];\n _this.volMax = 0.001;\n\n _this.port.onmessage = function (event) {\n var data = event.data;\n\n if (data.name === \'toggleNormalize\') {\n _this.normalize = data.normalize;\n } else if (data.name === \'smoothing\') {\n _this.smoothing = Math.max(0, Math.min(1, data.smoothing));\n }\n };\n\n return _this;\n } // TO DO make this stereo / dependent on # of audio channels\n\n\n _createClass(AmplitudeProcessor, [{\n key: "process",\n value: function process(inputs, outputs) {\n var input = inputs[0];\n var output = outputs[0];\n var smoothing = this.smoothing;\n this.inputRingBuffer.push(input);\n\n if (this.inputRingBuffer.framesAvailable >= this.bufferSize) {\n this.inputRingBuffer.pull(this.inputRingBufferArraySequence);\n\n for (var channel = 0; channel < this.numInputChannels; ++channel) {\n var inputBuffer = this.inputRingBufferArraySequence[channel];\n var bufLength = inputBuffer.length;\n var sum = 0;\n\n for (var i = 0; i < bufLength; i++) {\n var x = inputBuffer[i];\n\n if (this.normalize) {\n sum += Math.max(Math.min(x / this.volMax, 1), -1) * Math.max(Math.min(x / this.volMax, 1), -1);\n } else {\n sum += x * x;\n }\n } // ... then take the square root of the sum.\n\n\n var rms = Math.sqrt(sum / bufLength);\n this.stereoVol[channel] = Math.max(rms, this.stereoVol[channel] * smoothing);\n this.volMax = Math.max(this.stereoVol[channel], this.volMax);\n } // calculate stero normalized volume and add volume from all channels together\n\n\n var volSum = 0;\n\n for (var index = 0; index < this.stereoVol.length; index++) {\n this.stereoVolNorm[index] = Math.max(Math.min(this.stereoVol[index] / this.volMax, 1), 0);\n volSum += this.stereoVol[index];\n } // volume is average of channels\n\n\n var volume = volSum / this.stereoVol.length; // normalized value\n\n var volNorm = Math.max(Math.min(volume / this.volMax, 1), 0);\n this.port.postMessage({\n name: \'amplitude\',\n volume: volume,\n volNorm: volNorm,\n stereoVol: this.stereoVol,\n stereoVolNorm: this.stereoVolNorm\n }); // pass input through to output\n\n this.outputRingBuffer.push(this.inputRingBufferArraySequence);\n } // pull 128 frames out of the ring buffer\n // if the ring buffer does not have enough frames, the output will be silent\n\n\n this.outputRingBuffer.pull(output);\n return true;\n }\n }]);\n\n return AmplitudeProcessor;\n}(_wrapNativeSuper(AudioWorkletProcessor));\n\nregisterProcessor(processorNames.amplitudeProcessor, AmplitudeProcessor);'},function(t,e,n){var i,r;i=[n(0),n(17)],void 0===(r=function(r){r.Frequency=function(t,e){if(!(this instanceof r.Frequency))return new r.Frequency(t,e);r.TimeBase.call(this,t,e)},r.extend(r.Frequency,r.TimeBase),r.Frequency.prototype._primaryExpressions=Object.create(r.TimeBase.prototype._primaryExpressions),r.Frequency.prototype._primaryExpressions.midi={regexp:/^(\d+(?:\.\d+)?midi)/,method:function(t){return this.midiToFrequency(t)}},r.Frequency.prototype._primaryExpressions.note={regexp:/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,method:function(t,e){var n=i[t.toLowerCase()]+12*(parseInt(e)+1);return this.midiToFrequency(n)}},r.Frequency.prototype._primaryExpressions.tr={regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method:function(t,e,n){var i=1;return t&&"0"!==t&&(i*=this._beatsToUnits(this._timeSignature()*parseFloat(t))),e&&"0"!==e&&(i*=this._beatsToUnits(parseFloat(e))),n&&"0"!==n&&(i*=this._beatsToUnits(parseFloat(n)/4)),i}},r.Frequency.prototype.transpose=function(t){return this._expr=function(t,e){return t()*this.intervalToFrequencyRatio(e)}.bind(this,this._expr,t),this},r.Frequency.prototype.harmonize=function(t){return this._expr=function(t,e){for(var n=t(),i=[],r=0;rthis.buffer.duration)throw"jump time out of range";if(e>this.buffer.duration-t)throw"end time out of range";var n=t||0,i=e||void 0;this.isPlaying()&&(this.stop(0),this.play(0,this.playbackRate,this.output.gain.value,n,i))}},{key:"channels",value:function(){return this.buffer.numberOfChannels}},{key:"sampleRate",value:function(){return this.buffer.sampleRate}},{key:"frames",value:function(){return this.buffer.length}},{key:"getPeaks",value:function(t){if(!this.buffer)throw"Cannot load peaks yet, buffer is not loaded";if(t=t||5*window.width,this.buffer){for(var e=this.buffer,n=e.length/t,i=~~(n/10)||1,r=e.numberOfChannels,o=new Float32Array(Math.round(t)),s=0;so[u])&&(o[u]=h)}return o}}},{key:"reverseBuffer",value:function(){if(!this.buffer)throw"SoundFile is not done loading";var t=this._lastPos/R.sampleRate,e=this.getVolume();this.setVolume(0,.001);for(var n=this.buffer.numberOfChannels,i=0;it[o].hi&&o++,r[o]=void 0!==r[o]?(r[o]+n[s])/2:n[s]}return r}},{key:"getOctaveBands",value:function(t,e){var n=t||3,i=e||15.625,r=[],o={lo:i/Math.pow(2,1/(2*n)),ctr:i,hi:i*Math.pow(2,1/(2*n))};r.push(o);for(var s=p.audiocontext.sampleRate/2;o.hi=this._maxDelay)throw new Error("Delay Time exceeds maximum delay time of "+this._maxDelay+" second.");t.connect(this.input),this.leftDelay.delayTime.setValueAtTime(o,this.ac.currentTime),this.rightDelay.delayTime.setValueAtTime(o,this.ac.currentTime),this._leftGain.gain.value=r,this._rightGain.gain.value=r,i&&(this._leftFilter.freq(i),this._rightFilter.freq(i))}},{key:"delayTime",value:function(t){"number"!=typeof t?(t.connect(this.leftDelay.delayTime),t.connect(this.rightDelay.delayTime)):(this.leftDelay.delayTime.cancelScheduledValues(this.ac.currentTime),this.rightDelay.delayTime.cancelScheduledValues(this.ac.currentTime),this.leftDelay.delayTime.linearRampToValueAtTime(t,this.ac.currentTime),this.rightDelay.delayTime.linearRampToValueAtTime(t,this.ac.currentTime))}},{key:"feedback",value:function(t){if(t&&"number"!=typeof t)t.connect(this._leftGain.gain),t.connect(this._rightGain.gain);else{if(1<=t)throw new Error("Feedback value will force a positive feedback loop.");"number"==typeof t&&(this._leftGain.gain.value=t,this._rightGain.gain.value=t)}return this._leftGain.gain.value}},{key:"filter",value:function(t,e){this._leftFilter.set(t,e),this._rightFilter.set(t,e)}},{key:"setType",value:function(t){switch(1===t&&(t="pingPong"),this._split.disconnect(),this._leftFilter.disconnect(),this._rightFilter.disconnect(),this._split.connect(this.leftDelay,0),this._split.connect(this.rightDelay,1),t){case"pingPong":this._rightFilter.setType(this._leftFilter.biquad.type),this._leftFilter.output.connect(this._merge,0,0),this._rightFilter.output.connect(this._merge,0,1),this._leftFilter.output.connect(this.rightDelay),this._rightFilter.output.connect(this.leftDelay);break;default:this._leftFilter.output.connect(this._merge,0,0),this._rightFilter.output.connect(this._merge,0,1),this._leftFilter.output.connect(this.leftDelay),this._rightFilter.output.connect(this.rightDelay)}}},{key:"dispose",value:function(){de(ye(e.prototype),"dispose",this).call(this),this._split.disconnect(),this._leftFilter.dispose(),this._rightFilter.dispose(),this._merge.disconnect(),this._leftGain.disconnect(),this._rightGain.disconnect(),this.leftDelay.disconnect(),this.rightDelay.disconnect(),this._split=void 0,this._leftFilter=void 0,this._rightFilter=void 0,this._merge=void 0,this._leftGain=void 0,this._rightGain=void 0,this.leftDelay=void 0,this.rightDelay=void 0}}]),e}();function _e(t){return(_e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ge(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function be(t,e){for(var n=0;nthis.length&&(this.length=i.sequence.length)}},{key:"removePhrase",value:function(t){for(var e in this.phrases)this.phrases[e].name===t&&this.phrases.splice(e,1)}},{key:"getPhrase",value:function(t){for(var e in this.phrases)if(this.phrases[e].name===t)return this.phrases[e]}},{key:"replaceSequence",value:function(t,e){for(var n in this.phrases)this.phrases[n].name===t&&(this.phrases[n].sequence=e)}},{key:"incrementStep",value:function(t){this.partStep=t.parts.length?(t.scoreStep=0,t.onended()):(t.scoreStep=0,t.parts[t.currentPart-1].stop(),t.parts[t.currentPart].start())}function Ue(t,e){for(var n=0;nthis.cutoff&&e>this.threshold&&0this.treshold){this.isDetected=!0,this.callback?this.callback(this.energy):e&&e(this.energy);var n=this;setTimeout(function(){n.isDetected=!1},this.sensitivity)}this.penergy=this.energy}}]),r}();function xn(t,e){for(var n=0;n -1 || + userAgent.indexOf("firefox") > -1 || + userAgent.indexOf("epiphany") > -1) { + return false; + } + if (userAgent.indexOf('safari/') > -1) { + return true; + } + return false; + } + + function isEdge() { + var userAgent = navigator.userAgent.toLowerCase(); + return userAgent.indexOf("edge") > -1; + } + + // endregion + + + //////////////////////////////////////////////////////////////////////////////// + // region PRIVATE/STATIC DATA AND FUNCTIONS + //////////////////////////////////////////////////////////////////////////////// + var cssInjected = false, + css = ".qs_main{background-color:#dddddd;text-align:left;position:absolute;width:200px;font:12px sans-serif;box-shadow:5px 5px 8px rgba(0,0,0,0.35);user-select:none;-webkit-user-select:none;color:#000000;border:none}.qs_content{background-color:#cccccc;overflow-y:auto}.qs_title_bar{background-color:#eeeeee;user-select:none;-webkit-user-select:none;cursor:pointer;padding:5px;font-weight:bold;border:none;color:#000000}.qs_container{margin:5px;padding:5px;background-color:#eeeeee;border:none;position:relative}.qs_container_selected{border:none;background-color:#ffffff}.qs_range{-webkit-appearance:none;-moz-appearance:none;width:100%;height:17px;padding:0;margin:0;background-color:transparent;border:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.qs_range:focus{outline:none;border:none}.qs_range::-webkit-slider-runnable-track{width:100%;height:15px;cursor:pointer;background:#cccccc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.qs_range:focus::-webkit-slider-runnable-track{background:#cccccc}.qs_range::-webkit-slider-thumb{-webkit-appearance:none;height:15px;width:15px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:#999999;cursor:pointer;margin-top:0}.qs_range::-moz-range-track{width:100%;height:15px;cursor:pointer;background:#cccccc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.qs_range::-moz-range-thumb{height:15px;width:15px;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:#999999;cursor:pointer}.qs_range::-ms-track{width:100%;height:15px;cursor:pointer;visibility:hidden;background:transparent}.qs_range::-ms-thumb{height:15px;width:15px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:#999999;cursor:pointer;border:none}.qs_range::-ms-fill-lower{background:#cccccc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.qs_range:focus::-ms-fill-lower{background:#cccccc}.qs_range::-ms-fill-upper{background:#cccccc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.qs_range:focus::-ms-fill-upper{background:#cccccc}.qs_button{background-color:#f6f6f6;color:#000000;height:30px;border:1px solid #aaaaaa;font:12px sans-serif}.qs_button:active{background-color:#ffffff;border:1px solid #aaaaaa}.qs_button:focus{border:1px solid #aaaaaa;outline:none}.qs_checkbox{cursor:pointer;display:inline}.qs_checkbox input{position:absolute;left:-99999px}.qs_checkbox span{height:16px;width:100%;display:block;text-indent:20px;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAALklEQVQ4T2OcOXPmfwYKACPIgLS0NLKMmDVrFsOoAaNhMJoOGBioFwZkZUWoJgApdFaxjUM1YwAAAABJRU5ErkJggg==') no-repeat}.qs_checkbox input:checked+span{background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAvElEQVQ4T63Tyw2EIBAA0OFKBxBL40wDRovAUACcKc1IB1zZDAkG18GYZTmSmafzgTnnMgwchoDWGlJKheGcP3JtnPceCqCUAmttSZznuYtgchsXQrgC+77DNE0kUpPbmBOoJaBOIVQylnqWgAAeKhDve/AN+EaklJBzhhgjWRoJVGTbNjiOowAIret6a+4jYIwpX8aDwLIs74C2D0IIYIyVP6Gm898m9kbVm85ljHUTf16k4VUefkwDrxk+zoUEwCt0GbUAAAAASUVORK5CYII=') no-repeat}.qs_checkbox_label{position:absolute;top:7px;left:30px}.qs_label{margin-bottom:3px;user-select:none;-webkit-user-select:none;cursor:default;font:12px sans-serif}.qs_text_input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;padding:0 0 0 5px;height:24px;border:1px inset #ffffff;background-color:#ffffff;color:#000000;font-size:12px}.qs_text_input:focus{outline:none;background:#ffffff;border:1px inset #ffffff}.qs_select{background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAp0lEQVRIS+2SsQ3FIAwF7RVYhA5mgQFhFuhYhJKWL0eKxI8SGylKZ0p4+OBsHGNM+HChAiS7qkgyBKrovaLeOxhjbgtxZ+cFtgelFMg5QwgBvPd/EO5sDbKAlBLUWo/8CjmL075zDmKMj6rEKbpCqBL9aqc4ZUQAhVbInBMQUXz5Vg/WfxOktXZsWWtZLds9uIqlqaH1NFV3jdhSJA47E1CAaE8ViYp+wGiWMZ/T+cgAAAAASUVORK5CYII=') no-repeat right #f6f6f6;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:#000000;width:100%;height:24px;border:1px solid #aaaaaa;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;padding:0 5px;-moz-outline:none;font-size:14px}.qs_select option{font-size:14px}.qs_select::-ms-expand{display:none}.qs_select:focus{outline:none}.qs_number{height:24px}.qs_image{width:100%}.qs_progress{width:100%;height:15px;background-color:#cccccc;border:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.qs_progress_value{height:100%;background-color:#999999}.qs_textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;resize:vertical;width:100%;padding:3px 5px;border:1px inset #ffffff;background-color:#ffffff;color:#000000;font-size:12px}.qs_textarea:focus{outline:none;background:#ffffff;border:1px inset #ffffff}.qs_color{position:absolute;left:5px;visibility:hidden}.qs_color_label{width:100%;height:20px;display:block;border:1px solid #aaaaaa;cursor:pointer;padding:0 0 0 5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.qs_file_chooser{position:absolute;left:-999999px}.qs_file_chooser_label{background-color:#f6f6f6;color:#000000;height:30px;border:1px solid #aaaaaa;font:12px sans-serif;width:100%;display:block;cursor:pointer;padding:7px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}"; // will be injected with default css + + function injectCSS() { + var styleTag = document.createElement("style"); + styleTag.innerText = css; + document.head.appendChild(styleTag); + cssInjected = true; + } + + // endregion + + + /** + * + * @alias module:QuickSettings + * @lends module:QuickSettings.prototype + */ + var QuickSettings = { + _version: "3.0.2", + _topZ: 1, + + _panel: null, + _titleBar: null, + _content: null, + _startX: 0, + _startY: 0, + _hidden: false, + _collapsed: false, + _controls: null, + _keyCode: -1, + _draggable: true, + _collapsible: true, + _globalChangeHandler: null, + + //////////////////////////////////////////////////////////////////////////////// + // region GENERAL INIT FUNCTIONS + //////////////////////////////////////////////////////////////////////////////// + + /** + * Static method. Causes QuickSettings to ignore its default styles and instead use whatever QuickSettings stylesheet is on the page. This must be called before creating any panel in order to have any effect. + * @static + */ + useExtStyleSheet: function () { + cssInjected = true; + }, + + /** + * Static method. Creates a new QuickSettings Panel + * @param x {Number} x position of panel (default 0) + * @param y {Number} y position of panel (default 0) + * @param title {String} title of panel (default "QuickSettings") + * @param parent {HTMLElement} parent element (default document.body) + * @returns {module:QuickSettings} New QuickSettings Panel + * @static + */ + create: function (x, y, title, parent) { + var obj = Object.create(this); + obj._init(x, y, title, parent); + return obj; + }, + + /** + * Destroys the panel, removing it from the document and nulling all properties. + */ + destroy: function () { + if (this._panel.parentElement) { + this._panel.parentElement.removeChild(this._panel); + } + for (var prop in this) { + this[prop] = null; + } + }, + + _init: function (x, y, title, parent) { + if (!cssInjected) { + injectCSS(); + } + this._bindHandlers(); + this._createPanel(x, y, parent); + this._createTitleBar(title || "QuickSettings"); + this._createContent(); + + }, + + _bindHandlers: function () { + this._startDrag = this._startDrag.bind(this); + this._drag = this._drag.bind(this); + this._endDrag = this._endDrag.bind(this); + this._doubleClickTitle = this._doubleClickTitle.bind(this); + this._onKeyUp = this._onKeyUp.bind(this); + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region VALUE FUNCTIONS + //////////////////////////////////////////////////////////////////////////////// + + /** + * Returns an object containing the titles and values of all user-interactive controls in this panel. + * @param asString {Boolean} If true, returns a JSON formatted string of these values. + * @returns {Object} An object or string containing the titles and values fo all user-interactive controls in this panel. + */ + getValuesAsJSON: function (asString) { + var json = {}; + for (var title in this._controls) { + if (this._controls[title].getValue) { + json[title] = this._controls[title].getValue(); + } + } + if (asString) { + json = JSON.stringify(json); + } + return json; + }, + + /** + * Sets values of any controls from a JSON object or string. The JSON is one large object with title: value elements for each control you want to set. + * @param json {Object} A string or JS object containing the titles and values to set. + * @returns {module:QuickSettings} + */ + setValuesFromJSON: function (json) { + if (typeof json === "string") { + json = JSON.parse(json); + } + for (var title in json) { + if (this._controls[title] && this._controls[title].setValue) { + this._controls[title].setValue(json[title]); + } + } + return this; + }, + + /** + * Sets up the panel to save all of its values to local storage. This will also immediately try to read in any saved values from local storage, if they exist. + * So the method should be called after all controls are created on the panel. + * @param name {String} A unique name to store the values under in localStorage. + * @return {model:QuickSettings} + */ + saveInLocalStorage: function (name) { + this._localStorageName = name; + this._readFromLocalStorage(name); + return this; + }, + + /** + * Clears any saved values in local storage. + * @param name {String} The unique name in localStorage to clear. + * @return {module:QuickSettings} + */ + clearLocalStorage: function (name) { + localStorage.removeItem(name); + return this; + }, + + _saveInLocalStorage: function (name) { + localStorage.setItem(name, this.getValuesAsJSON(true)); + }, + + _readFromLocalStorage: function (name) { + var str = localStorage.getItem(name); + if (str) { + this.setValuesFromJSON(str); + } + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region CREATION FUNCTIONS + //////////////////////////////////////////////////////////////////////////////// + + _createPanel: function (x, y, parent) { + this._panel = createElement("div", null, "qs_main", parent || document.body); + this._panel.style.zIndex = ++QuickSettings._topZ; + this.setPosition(x || 0, y || 0); + this._controls = {}; + }, + + _createTitleBar: function (text) { + this._titleBar = createElement("div", null, "qs_title_bar", this._panel); + this._titleBar.textContent = text; + + this._titleBar.addEventListener("mousedown", this._startDrag); + this._titleBar.addEventListener("dblclick", this._doubleClickTitle); + + }, + + _createContent: function () { + this._content = createElement("div", null, "qs_content", this._panel); + }, + + _createContainer: function () { + var container = createElement("div", null, "qs_container"); + container.addEventListener("focus", function () { + this.className += " qs_container_selected"; + }, true); + container.addEventListener("blur", function () { + var index = this.className.indexOf(" qs_container_selected"); + if (index > -1) { + this.className = this.className.substr(0, index); + } + }, true); + this._content.appendChild(container); + return container; + }, + + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region SIZE AND POSITION FUNCTIONS + //////////////////////////////////////////////////////////////////////////////// + + /** + * Positions the panel at the given location. + * @param x {Number} The x position. + * @param y {Number} The y position. + * @returns {module:QuickSettings} + */ + setPosition: function (x, y) { + this._panel.style.left = x + "px"; + this._panel.style.top = Math.max(y, 0) + "px"; + return this; + }, + + /** + * Sets the size of the panel. + * @param w {Number} The width of the panel. + * @param h {Number} The height of the panel. + * @returns {module:QuickSettings} + */ + setSize: function (w, h) { + this._panel.style.width = w + "px"; + this._content.style.width = w + "px"; + this._content.style.height = (h - this._titleBar.offsetHeight) + "px"; + return this; + }, + + /** + * Sets the width of the panel. + * @param w {Number} The width of the panel. + * @returns {module:QuickSettings} + */ + setWidth: function (w) { + this._panel.style.width = w + "px"; + this._content.style.width = w + "px"; + return this; + }, + + /** + * Sets the height of the panel. + * @param h {Number} The height of the panel. + * @returns {module:QuickSettings} + */ + setHeight: function (h) { + this._content.style.height = (h - this._titleBar.offsetHeight) + "px"; + return this; + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region DRAG AND DROP FUNCTIONS + //////////////////////////////////////////////////////////////////////////////// + + /** + * Sets whether or not the panel can be dragged. + * @param draggable {Boolean} Whether or not the panel can be dragged. + * @returns {module:QuickSettings} + */ + setDraggable: function (draggable) { + this._draggable = draggable; + if (this._draggable || this._collapsible) { + this._titleBar.style.cursor = "pointer"; + } + else { + this._titleBar.style.cursor = "default"; + } + return this; + }, + + _startDrag: function (event) { + if (this._draggable) { + this._panel.style.zIndex = ++QuickSettings._topZ; + document.addEventListener("mousemove", this._drag); + document.addEventListener("mouseup", this._endDrag); + this._startX = event.clientX; + this._startY = event.clientY; + } + event.preventDefault(); + }, + + _drag: function (event) { + var x = parseInt(this._panel.style.left), + y = parseInt(this._panel.style.top), + mouseX = event.clientX, + mouseY = event.clientY; + + this.setPosition(x + mouseX - this._startX, y + mouseY - this._startY); + this._startX = mouseX; + this._startY = mouseY; + event.preventDefault(); + }, + + _endDrag: function (event) { + document.removeEventListener("mousemove", this._drag); + document.removeEventListener("mouseup", this._endDrag); + event.preventDefault(); + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region CHANGE HANDLER FUNCTIONS + //////////////////////////////////////////////////////////////////////////////// + + /** + * Sets a function that will be called whenever any value in the panel is changed. + * @param handler {Function} + * @returns {module:QuickSettings} + */ + setGlobalChangeHandler: function (handler) { + this._globalChangeHandler = handler; + return this; + }, + + _callGCH: function (title) { + if (this._localStorageName) { + this._saveInLocalStorage(this._localStorageName); + } + if (this._globalChangeHandler) { + this._globalChangeHandler(title); + } + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region VISIBILITY FUNCTIONS + //////////////////////////////////////////////////////////////////////////////// + + /** + * Hides the panel. + * @returns {module:QuickSettings} + */ + hide: function () { + this._panel.style.visibility = "hidden"; + this._hidden = true; + return this; + }, + + /** + * Shows the panel. + * @returns {module:QuickSettings} + */ + show: function () { + this._panel.style.visibility = "visible"; + this._panel.style.zIndex = ++QuickSettings._topZ; + this._hidden = false; + return this; + }, + + /** + * Toggles the panel from hidden to visible and back. + * @returns {module:QuickSettings} + */ + toggleVisibility: function () { + if (this._hidden) { + this.show(); + } + else { + this.hide(); + } + return this; + }, + + /** + * Sets whether or not the panel will collapse and expand when the title is double clicked. + * @param collapsible {Boolean} Wheter or not the panel can collapse and expand. + * @returns {module:QuickSettings} + */ + setCollapsible: function (collapsible) { + this._collapsible = collapsible; + if (this._draggable || this._collapsible) { + this._titleBar.style.cursor = "pointer"; + } + else { + this._titleBar.style.cursor = "default"; + } + return this; + }, + + /** + * Collapses the panel showing only the title bar. + * @returns {module:QuickSettings} + */ + collapse: function () { + this._panel.removeChild(this._content); + this._collapsed = true; + return this; + }, + + /** + * If panel is collapsed, re-expands it. + * @returns {module:QuickSettings} + */ + expand: function () { + this._panel.appendChild(this._content); + this._collapsed = false; + return this; + }, + + /** + * Toggles the panel back and forth between collapsed and expanded states. + * @returns {module:QuickSettings} + */ + toggleCollapsed: function () { + if (this._collapsed) { + this.expand(); + } + else { + this.collapse(); + } + return this; + }, + + /** + * Sets a key that, when pressed, will show and hide the panel. + * @param char + * @returns {module:QuickSettings} + */ + setKey: function (char) { + this._keyCode = char.toUpperCase().charCodeAt(0); + document.addEventListener("keyup", this._onKeyUp); + return this; + }, + + _onKeyUp: function (event) { + if (event.keyCode === this._keyCode) { + if (["INPUT", "SELECT", "TEXTAREA"].indexOf(event.target.tagName) < 0) { + this.toggleVisibility(); + } + } + }, + + _doubleClickTitle: function () { + if (this._collapsible) { + this.toggleCollapsed(); + } + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region CONTROL FUNCTIONS + //////////////////////////////////////////////////////////////////////////////// + + /** + * Removes a given control from the panel. + * @param title {String} The title of the control to remove. + * @returns {module:QuickSettings} + */ + removeControl: function (title) { + if (this._controls[title]) { + var container = this._controls[title].container; + } + if (container && container.parentElement) { + container.parentElement.removeChild(container); + } + this._controls[title] = null; + return this; + }, + + /** + * Enables the given control. + * @param title {String} The title of the control to enable. + * @returns {module:QuickSettings} + */ + enableControl: function (title) { + if (this._controls[title]) { + this._controls[title].control.disabled = false; + } + return this; + }, + + /** + * Disables the given control. + * @param title {String} The title of the control to disable. + * @returns {module:QuickSettings} + */ + disableControl: function (title) { + if (this._controls[title]) { + this._controls[title].control.disabled = true; + } + return this; + }, + + /** + * Hides the given control. + * @param title {String} The title of the control to hide. + * @returns {module:QuickSettings} + */ + hideControl: function (title) { + if (this._controls[title]) { + this._controls[title].container.style.display = "none"; + } + return this; + }, + + /** + * Shows the given control. + * @param title {String} The title of the control to show. + * @returns {module:QuickSettings} + */ + showControl: function (title) { + if (this._controls[title]) { + this._controls[title].container.style.display = "block"; + } + return this; + }, + + /** + * Changes a specific style on the given component. + * @param title {String} The title of the control. + * @param style {String} The name of the style. + * @param value {Various} The new value of the style. + * @returns {module:QuickSettings} + */ + overrideStyle: function (title, style, value) { + if (this._controls[title]) { + this._controls[title].control.style[style] = value; + } + return this; + }, + + /** + * Hides the title label of a given control. + * @param title {String} The title of the control. + * @returns {module:QuickSettings} + */ + hideTitle: function (title) { + var label = this._controls[title].label; + if (label) { + label.style.display = "none"; + } + return this; + }, + + /** + * Shows the title label of a given control. + * @param title {String} The title of the control. + * @returns {module:QuickSettings} + */ + showTitle: function (title) { + var label = this._controls[title].label; + if (label) { + label.style.display = "block"; + } + return this; + }, + + /** + * Hides the title labels of all controls. + * @returns {module:QuickSettings} + */ + hideAllTitles: function () { + for (var title in this._controls) { + var label = this._controls[title].label; + if (label) { + label.style.display = "none"; + } + } + return this; + }, + + /** + * Shows the title labels of all controls. Button and booleans have no title labels. + * @returns {module:QuickSettings} + */ + showAllTitles: function () { + for (var title in this._controls) { + var label = this._controls[title].label; + if (label) { + label.style.display = "block"; + } + } + return this; + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region GET/SET VALUES + //////////////////////////////////////////////////////////////////////////////// + + getValue: function (title) { + return this._controls[title].getValue(); + }, + + setValue: function (title, value) { + this._controls[title].setValue(value); + this._callGCH(title); + return this; + }, + // endregion + + //========================================================================================== + //========================================================================================== + // CONTROL CREATION AND MANAGEMENT FUNCTIONS + //========================================================================================== + //========================================================================================== + + //////////////////////////////////////////////////////////////////////////////// + // region BOOLEAN + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a checkbox to the panel. + * @param title {String} The title of this control. + * @param value {Boolean} The initial value of this control. + * @param [callback] {Function} A callback function that will be called when the value of this control changes. + * @returns {module:QuickSettings} + */ + addBoolean: function (title, value, callback) { + var container = this._createContainer(); + + var id = getNextID(); + var label = createElement("label", null, "qs_checkbox_label", container); + label.textContent = title; + label.setAttribute("for", id); + + var checkbox = createElement("label", null, "qs_checkbox", container); + checkbox.setAttribute("for", id); + var input = createInput("checkbox", id, null, checkbox); + input.checked = value; + + var span = createElement("span", null, null, checkbox); + + this._controls[title] = { + container: container, + control: input, + getValue: function () { + return this.control.checked; + }, + setValue: function (value) { + this.control.checked = value; + if (callback) { + callback(value); + } + }, + }; + + var self = this; + input.addEventListener("change", function () { + if (callback) { + callback(input.checked); + } + self._callGCH(title); + }); + return this; + }, + + /** + * Adds a checkbox to the panel, bound to an object + * @param title {String} The title of this control. + * @param value {Boolean} The initial value of this control. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {module:QuickSettings} + */ + bindBoolean: function (title, value, object) { + return this.addBoolean(title, value, function (value) { + object[title] = value; + }); + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region BUTTON + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a button to the panel. + * @param title {String} The title of the control. + * @param [callback] {Function} Callback function to be called when the button is clicked. + * @returns {module:QuickSettings} + */ + addButton: function (title, callback) { + var container = this._createContainer(); + + var button = createInput("button", getNextID(), "qs_button", container); + button.value = title; + + this._controls[title] = { + container: container, + control: button + } + + var self = this; + button.addEventListener("click", function () { + if (callback) { + callback(button); + } + self._callGCH(title); + }); + return this; + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region COLOR + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a color picker control. In some browsers this will just render as a text input field, but should still retain all other functionality. + * @param title {String} The title of this control. + * @param color {String} The initial color value for this control. + * @param [callback] {Function} Callback that will be called when the value of this control changes. + * @returns {module:QuickSettings} + */ + addColor: function (title, color, callback) { + if (isSafari() || isEdge() || isIE()) { + return this.addText(title, color, callback); + } + var container = this._createContainer(); + var label = createLabel("" + title + ": " + color, container); + var id = getNextID(); + var colorInput = createInput("color", id, "qs_color", container); + colorInput.value = color || "#ff0000"; + var colorLabel = createElement("label", null, "qs_color_label", container); + colorLabel.setAttribute("for", id); + colorLabel.style.backgroundColor = colorInput.value; + + this._controls[title] = { + container: container, + control: colorInput, + colorLabel: colorLabel, + label: label, + title: title, + getValue: function () { + return this.control.value; + }, + setValue: function (value) { + this.control.value = value; + this.colorLabel.style.backgroundColor = colorInput.value; + this.label.innerHTML = "" + this.title + ": " + this.control.value; + if (callback) { + callback(value); + } + } + }; + + var self = this; + colorInput.addEventListener("input", function () { + label.innerHTML = "" + title + ": " + colorInput.value; + colorLabel.style.backgroundColor = colorInput.value; + if (callback) { + callback(colorInput.value); + } + self._callGCH(title); + }); + return this; + }, + + /** + * Adds a color picker control bound to an object. In some browsers this will just render as a text input field, but should still retain all other functionality. + * @param title {String} The title of this control. + * @param color {String} The initial color value for this control. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {module:QuickSettings} + */ + bindColor: function (title, color, object) { + return this.addColor(title, color, function (value) { + object[title] = value; + }); + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region DATE INPUT + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a date input control. In some browsers this will just render as a text input field, but should still retain all other functionality. + * @param title {String} The title of the control. + * @param date {String|Date} A string in the format "YYYY-MM-DD" or a Date object. + * @param [callback] {Function} Callback function that will be called when the value of this control changes. + * @returns {*} + */ + addDate: function (title, date, callback) { + var dateStr; + if (date instanceof Date) { + var year = date.getFullYear(); + var month = date.getMonth() + 1; + if (month < 10) month = "0" + month; + var day = date.getDate(); + dateStr = year + "-" + month + "-" + day; + } + else { + dateStr = date; + } + + if (isIE()) { + return this.addText(title, dateStr, callback); + } + var container = this._createContainer(); + var label = createLabel("" + title + "", container); + + var dateInput = createInput("date", getNextID(), "qs_text_input", container); + dateInput.value = dateStr || ""; + + this._controls[title] = { + container: container, + control: dateInput, + label: label, + getValue: function () { + return this.control.value; + }, + setValue: function (date) { + var dateStr; + if (date instanceof Date) { + var year = date.getFullYear(); + var month = date.getMonth() + 1; + if (month < 10) month = "0" + month; + var day = date.getDate(); + if (day < 10) day = "0" + day; + dateStr = year + "-" + month + "-" + day; + } + else { + dateStr = date; + } + + this.control.value = dateStr || ""; + if (callback) { + callback(dateStr); + } + } + } + + var self = this; + dateInput.addEventListener("input", function () { + if (callback) { + callback(dateInput.value); + } + self._callGCH(title); + }); + return this; + }, + + /** + * Adds a date input control. In some browsers this will just render as a text input field, but should still retain all other functionality. + * @param title {String} The title of the control. + * @param date {String|Date} A string in the format "YYYY-MM-DD" or a Date object. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {*} + */ + bindDate: function (title, date, object) { + return this.addDate(title, date, function (value) { + object[title] = value; + }); + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region DROPDOWN + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a dropdown (select) control. Dropdown items can be strings ("one", "two", "three"), any other values that can be converted to strings (1, 2, 3), or an object that contains label and value properties ({label: "one", value: 77}). + * @param title {String} The title of the control. + * @param items {Array} An array of items. + * @param [callback] {Function} Callback function that will be called when a new option is chosen. Callback will be passed an object containing "index", "label", and "value" properties. If the selected item is a simple value, then label and value will be the same. + * @returns {module:QuickSettings} + */ + addDropDown: function (title, items, callback) { + var container = this._createContainer(); + + var label = createLabel("" + title + "", container); + var select = createElement("select", null, "qs_select", container); + for (var i = 0; i < items.length; i++) { + var option = createElement("option"), + item = items[i]; + if (item.label) { + option.value = item.value; + option.innerText = item.label; + } + else { + option.label = item; + option.innerText = item; + } + select.add(option); + } + ; + + var self = this; + select.addEventListener("change", function () { + var index = select.selectedIndex, + options = select.options; + + if (callback) { + callback({ + index: index, + label: options[index].label, + value: items[index].value || items[index] + }); + } + self._callGCH(title); + }); + + this._controls[title] = { + container: container, + control: select, + label: label, + getValue: function () { + var index = this.control.selectedIndex; + return { + index: index, + label: this.control.options[index].label, + value: items[index].value || items[index] + } + }, + setValue: function (value) { + var index + if (value.index != null) { + index = value.index; + } + else { + index = value; + } + var options = this.control.options; + this.control.selectedIndex = index; + if (callback) { + callback({ + index: index, + label: options[index].label, + value: items[index].value || items[index] + }); + } + }, + }; + return this; + }, + + /** + * Adds a dropdown (select) control bound to an object. + * @param title {String} The title of the control. + * @param items {Array} An array of strings or values that will be converted to string and displayed as options. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {module:QuickSettings} + */ + bindDropDown: function (title, items, object) { + return this.addDropDown(title, items, function (value) { + object[title] = value.value; + }); + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region ELEMENT + //////////////////////////////////////////////////////////////////////////////// + + + /** + * Adds an existing HTML Element to the panel. + * @param title {String} The title of the control. + * @param element {HTMLElement} The element to add. + * @returns {module:QuickSettings} + */ + addElement: function (title, element) { + var container = this._createContainer(), + label = createLabel("" + title + "", container); + + container.appendChild(element); + + this._controls[title] = { + container: container, + label: label + }; + return this; + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region FILE CHOOSER + //////////////////////////////////////////////////////////////////////////////// + + + /** + * Adds a file input control to the panel. + * Filter accepts standard media types such as "image/*", "video/*", "audio/*", a file extension, such as ".doc", ".jpg", or mime types. + * Multiple filters can be added, comma separated. See standard HTML docs for file input "accept" attribute. + * @param title {String} The title of the control. + * @param lableStr {String} The initial label on the file button. Defaults to "Choose a file...". + * @param filter {String} Species what file types the chooser will accept. See below. + * @param [callback] {Function} Callback function that will be called when a file is chosen. + * @returns {module:QuickSettings} + */ + addFileChooser: function (title, labelStr, filter, callback) { + var container = this._createContainer(); + var label = createLabel("" + title + "", container); + var id = getNextID(); + var fileChooser = createInput("file", id, "qs_file_chooser", container); + if (filter) { + fileChooser.accept = filter; + } + + var fcLabel = createElement("label", null, "qs_file_chooser_label", container); + fcLabel.setAttribute("for", id); + fcLabel.textContent = labelStr || "Choose a file..."; + + + this._controls[title] = { + container: container, + control: fileChooser, + label: label, + getValue: function () { + return this.control.files[0]; + } + } + + var self = this; + fileChooser.addEventListener("change", function () { + if (!fileChooser.files || !fileChooser.files.length) return; + fcLabel.textContent = fileChooser.files[0].name; + if (callback) { + callback(fileChooser.files[0]); + } + self._callGCH(title); + }); + return this; + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region HTML + //////////////////////////////////////////////////////////////////////////////// + + + /** + * Adds arbitrary HTML to the panel. + * @param title {String} The title of the control. + * @param html {String} The HTML to add. + * @returns {module:QuickSettings} + */ + addHTML: function (title, html) { + var container = this._createContainer(); + var label = createLabel("" + title + ": ", container); + + var div = createElement("div", null, null, container); + div.innerHTML = html; + this._controls[title] = { + container: container, + label: label, + control: div, + getValue: function () { + return this.control.innerHTML; + }, + setValue: function (html) { + this.control.innerHTML = html; + } + }; + return this; + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region IMAGE + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds an image control. + * @param title {String} The title of the control. + * @param imageURL {String} The URL to the image. + * @param [callback] {Function} Callback function to call when the image has fully loaded + * @returns {module:QuickSettings} + */ + addImage: function (title, imageURL, callback) { + var container = this._createContainer(), + label = createLabel("" + title + "", container); + img = createElement("img", null, "qs_image", container); + img.src = imageURL; + + this._controls[title] = { + container: container, + control: img, + label: label, + getValue: function () { + return this.control.src; + }, + setValue: function (url) { + this.control.src = url; + if (callback) { + img.addEventListener("load", function _onLoad() { + img.removeEventListener("load", _onLoad) + callback(url); + }) + } + } + }; + return this; + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region NUMBER and RANGE (SLIDER) + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a range slider control. + * @param title {String} Title of the control. + * @param min {Number} Minimum value of control. + * @param max {Number} Maximum value of control. + * @param value {Number} Initial value of control. + * @param step {Number} Size of value increments. + * @param [callback] {Function} Callback function to call when control value changes. + * @returns {module:QuickSettings} + */ + addRange: function (title, min, max, value, step, callback) { + return this._addNumber("range", title, min, max, value, step, callback); + }, + + /** + * Adds a number control. + * @param title {String} Title of the control. + * @param min {Number} Minimum value of control. + * @param max {Number} Maximum value of control. + * @param value {Number} Initial value of control. + * @param step {Number} Size of value increments. + * @param [callback] {Function} Callback function to call when control value changes. + * @returns {module:QuickSettings} + */ + addNumber: function (title, min, max, value, step, callback) { + return this._addNumber("number", title, min, max, value, step, callback); + }, + + _addNumber: function (type, title, min, max, value, step, callback) { + var container = this._createContainer(); + + var label = createLabel("", container); + + var className = type === "range" ? "qs_range" : "qs_text_input qs_number"; + var input = createInput(type, getNextID(), className, container); + input.min = min || 0; + input.max = max || 100; + input.step = step || 1; + input.value = value || 0; + + label.innerHTML = "" + title + ": " + input.value; + + + this._controls[title] = { + container: container, + control: input, + label: label, + title: title, + callback: callback, + getValue: function () { + return parseFloat(this.control.value); + }, + setValue: function (value) { + this.control.value = value; + this.label.innerHTML = "" + this.title + ": " + this.control.value; + if (callback) { + callback(parseFloat(value)); + } + } + }; + + var eventName = "input"; + if (type === "range" && isIE()) { + eventName = "change"; + } + var self = this; + input.addEventListener(eventName, function () { + label.innerHTML = "" + title + ": " + input.value; + if (callback) { + callback(parseFloat(input.value)); + } + self._callGCH(title); + }); + return this; + }, + + /** + * Add a range slider control bound to an object. + * @param title {String} Title of the control. + * @param min {Number} Minimum value of control. + * @param max {Number} Maximum value of control. + * @param value {Number} Initial value of control. + * @param step {Number} Size of value increments. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {module:QuickSettings} + */ + bindRange: function (title, min, max, value, step, object) { + return this.addRange(title, min, max, value, step, function (value) { + object[title] = value; + }); + }, + + /** + * Add a number control bound to an object. + * @param title {String} Title of the control. + * @param min {Number} Minimum value of control. + * @param max {Number} Maximum value of control. + * @param value {Number} Initial value of control. + * @param step {Number} Size of value increments. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {module:QuickSettings} + */ + bindNumber: function (title, min, max, value, step, object) { + return this.addNumber(title, min, max, value, step, function (value) { + object[title] = value; + }); + }, + + /** + * Sets the parameters of a range control. + * @param title {Number} The title of the control to set the parameters on. + * @param min {Number} The minimum value of the control. + * @param max {Number} The maximum value of the control. + * @param step {Number} Size of value increments. + * @returns {module:QuickSettings} + */ + setRangeParameters: function (title, min, max, step) { + return this.setNumberParameters(title, min, max, step); + }, + + /** + * Sets the parameters of a number control. + * @param title {Number} The title of the control to set the parameters on. + * @param min {Number} The minimum value of the control. + * @param max {Number} The maximum value of the control. + * @param step {Number} Size of value increments. + * @returns {module:QuickSettings} + */ + setNumberParameters: function (title, min, max, step) { + var control = this._controls[title]; + var origValue = control.control.value; + control.control.min = min; + control.control.max = max; + control.control.step = step; + + if (control.control.value !== origValue && control.callback) { + control.callback(control.control.value); + } + return this; + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region PASSWORD + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a password input field. + * @param title {String} The title of the control. + * @param text {String} The initial text value to put in the control. + * @param [callback] {Function} Callback that will be called when the value of this control changes. + * @returns {module:QuickSettings} + */ + addPassword: function (title, text, callback) { + return this._addText("password", title, text, callback); + }, + + /** + * Adds a password input field bound to an object. + * @param title {String} The title of the control. + * @param text {String} The initial text value to put in the control. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {module:QuickSettings} + */ + bindPassword: function (title, text, object) { + return this.addPassword(title, text, function (value) { + object[title] = value; + }); + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region PROGRESS BAR + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a progress bar control. + * @param title {String} The title of the control. + * @param max (Number} The maximum value of the control. + * @param value (Number} The initial value of the control. + * @param valueDisplay {String} How to display the value. Valid values: "percent" displays percent of max, "numbers" displays value and max as fraction. Anything else, value is not shown. + * @returns {module:QuickSettings} + */ + addProgressBar: function (title, max, value, valueDisplay) { + var container = this._createContainer(), + label = createLabel("", container), + progressDiv = createElement("div", null, "qs_progress", container), + valueDiv = createElement("div", null, "qs_progress_value", progressDiv); + + valueDiv.style.width = (value / max * 100) + "%"; + + if (valueDisplay === "numbers") { + label.innerHTML = "" + title + ": " + value + " / " + max; + } + else if (valueDisplay === "percent") { + label.innerHTML = "" + title + ": " + Math.round(value / max * 100) + "%"; + } + else { + label.innerHTML = "" + title + ""; + } + + this._controls[title] = { + container: container, + control: progressDiv, + valueDiv: valueDiv, + valueDisplay: valueDisplay, + label: label, + value: value, + max: max, + title: title, + getValue: function () { + return this.value; + }, + setValue: function (value) { + this.value = Math.max(0, Math.min(value, this.max)); + this.valueDiv.style.width = (this.value / this.max * 100) + "%"; + if (this.valueDisplay === "numbers") { + this.label.innerHTML = "" + this.title + ": " + this.value + " / " + this.max; + } + else if (this.valueDisplay === "percent") { + this.label.innerHTML = "" + this.title + ": " + Math.round(this.value / this.max * 100) + "%"; + } + } + }; + return this; + }, + + /** + * Sets the maximum value for a progress bar control. + * @param title {String} The title of the control to change. + * @param max {Number} The new maximum value for the control. + * @returns {module:QuickSettings} + */ + setProgressMax: function (title, max) { + var control = this._controls[title]; + control.max = max; + control.value = Math.min(control.value, control.max); + control.valueDiv.style.width = (control.value / control.max * 100) + "%"; + + if (control.valueDisplay === "numbers") { + control.label.innerHTML = "" + control.title + ": " + control.value + " / " + control.max; + } + else if (control.valueDisplay === "percent") { + control.label.innerHTML = "" + control.title + ": " + Math.round(control.value / control.max * 100) + "%"; + } + else { + control.label.innerHTML = "" + control.title + ""; + } + return this; + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region TEXT + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a text input field. + * @param title {String} The title of the control. + * @param text {String} The initial text value to put in the control. + * @param [callback] {Function} Callback that will be called when the value of this control changes. + * @returns {module:QuickSettings} + */ + addText: function (title, text, callback) { + return this._addText("text", title, text, callback); + }, + + _addText: function (type, title, text, callback) { + var container = this._createContainer(); + var label = createLabel("" + title + "", container); + var textInput; + + if (type === "textarea") { + textInput = createElement("textarea", getNextID(), "qs_textarea", container); + textInput.rows = 5; + } + else { + textInput = createInput(type, getNextID(), "qs_text_input", container); + } + textInput.value = text || ""; + + this._controls[title] = { + container: container, + control: textInput, + label: label, + getValue: function () { + return this.control.value; + }, + setValue: function (text) { + this.control.value = text; + if (callback) { + callback(text); + } + } + }; + + var self = this; + textInput.addEventListener("input", function () { + if (callback) { + callback(textInput.value); + } + self._callGCH(title); + }); + return this; + }, + + /** + * Adds a text input field bound to an object. + * @param title {String} The title of the control. + * @param text {String} The initial text value to put in the control. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {module:QuickSettings} + */ + bindText: function (title, text, object) { + return this.addText(title, text, function (value) { + object[title] = value; + }); + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region TEXT AREA + //////////////////////////////////////////////////////////////////////////////// + + /** + * Adds a text area control. + * @param title {String} The title of the control. + * @param text {String} The initial text value to put in the control. + * @param [callback] {Function} Callback that will be called when the value of this control changes. + * @returns {module:QuickSettings} + */ + addTextArea: function (title, text, callback) { + return this._addText("textarea", title, text, callback); + }, + + + /** + * Sets the number of rows in a text area control. + * @param title {String} The control to set the number of rows on. + * @param rows {Integer} The number of rows in the text area. + * @returns {module:QuickSettings} + */ + setTextAreaRows: function (title, rows) { + this._controls[title].control.rows = rows; + return this; + }, + + /** + * Adds a text area control bound to an object. + * @param title {String} The title of the control. + * @param text {String} The initial text value to put in the control. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {module:QuickSettings} + */ + bindTextArea: function (title, text, object) { + return this.addTextArea(title, text, function (value) { + object[title] = value; + }); + }, + // endregion + + //////////////////////////////////////////////////////////////////////////////// + // region TIME INPUT + //////////////////////////////////////////////////////////////////////////////// + + + /** + * Adds a time input control. In some browsers this will just render as a text input field, but should still retain all other functionality. + * @param title {String} The title of the control. + * @param time {String|Date} A string in the format "HH:MM", "HH:MM:SS" or a Date object. + * @param [callback] {Function} Callback function that will be called when the value of this control changes. + * @returns {*} + */ + addTime: function (title, time, callback) { + var timeStr; + if (time instanceof Date) { + var hours = time.getHours(); + if (hours < 10) hours = "0" + hours; + var minutes = time.getMinutes(); + if (minutes < 10) minutes = "0" + minutes; + var seconds = time.getSeconds(); + if (seconds < 10) seconds = "0" + seconds; + timeStr = hours + ":" + minutes + ":" + seconds; + } + else { + timeStr = time; + } + + if (isIE()) { + return this.addText(title, timeStr, callback); + } + + var container = this._createContainer(); + var label = createLabel("" + title + "", container); + + var timeInput = createInput("time", getNextID(), "qs_text_input", container); + timeInput.value = timeStr || ""; + + this._controls[title] = { + container: container, + control: timeInput, + label: label, + getValue: function () { + return this.control.value; + }, + setValue: function (time) { + var timeStr; + if (time instanceof Date) { + var hours = time.getHours(); + if (hours < 10) hours = "0" + hours; + var minutes = time.getMinutes(); + if (minutes < 10) minutes = "0" + minutes; + var seconds = time.getSeconds(); + if (seconds < 10) seconds = "0" + seconds; + timeStr = hours + ":" + minutes + ":" + seconds; + } + else { + timeStr = time; + } + + this.control.value = timeStr || ""; + if (callback) { + callback(timeStr); + } + } + }; + + var self = this; + timeInput.addEventListener("input", function () { + if (callback) { + callback(timeInput.value); + } + self._callGCH(title); + }); + return this; + }, + + /** + * Adds a time input control. In some browsers this will just render as a text input field, but should still retain all other functionality. + * @param title {String} The title of the control. + * @param date {String|Date} A string in the format "HH:MM", "HH:MM:SS" or a Date object. + * @param object {Object} Object the control is bound to. When the value of the control changes, a property on this object, with the name of the title of this control, will be set to the current value of this control. + * @returns {*} + */ + bindTime: function (title, time, object) { + return this.addTime(title, time, function (value) { + object[title] = value; + }); + }, + // endregion + + + } + //////////////////////////////////////////////////////////////////////////////// + // EXPORT + //////////////////////////////////////////////////////////////////////////////// + if (typeof exports === "object" && typeof module === "object") { + module.exports = QuickSettings + } + else if (typeof define === "function" && define.amd) { + define(QuickSettings); + } + else { + window.QuickSettings = QuickSettings; + } + +}()); diff --git a/static/assets/js/gradient.js b/static/assets/js/gradient.js new file mode 100644 index 0000000..025e29d --- /dev/null +++ b/static/assets/js/gradient.js @@ -0,0 +1,10 @@ +function conicGradient(sA, cX, cY, colors) { + let gradient = drawingContext.createConicGradient( + sA, cX, cY + ); + gradient.addColorStop(0, colors[0]); + gradient.addColorStop(0.33, colors[1]); + gradient.addColorStop(0.66, colors[2]); + gradient.addColorStop(1, colors[0]); + drawingContext.fillStyle = gradient; +} \ No newline at end of file diff --git a/static/assets/js/sketch.js b/static/assets/js/sketch.js new file mode 100644 index 0000000..4f250fd --- /dev/null +++ b/static/assets/js/sketch.js @@ -0,0 +1,571 @@ +let myFont; +let data; +let geoArray = []; +let canvas; + +var w, h, tow, toh; +var x, y, tox, toy; +var scaler = 1; +var exponent = 1; +var zoom = .01; //zoom step per mouse tick + + +var wheel_scale = 0; +var drag_x = 0; +var drag_y = 0; +var e = 0; +var init_scale = 0.5; + +var check_mouse = false; +var mouse_dragged = false; +var bar; + +var scroll_height = 0; +var scroll_top = 0; +var percent = 0; + +var current_text_seq, next_text_seq; +var direction = 0; + +var mobile_view = false; +var network_view = false; +var about_view = false; + +// Get the two button elements +const network_button = document.getElementById('network-button'); +const text_button = document.getElementById('tv-button'); + +var text_view_padding = 100; + + +//let v1 = createVector(drag_x, drag_y); + + +// Load Data & Font +function preload() { + data = loadJSON('static/assets/data/data/sorted_output.json'); + myFont = loadFont('static/assets/data/assets/IBMPlexSans-Regular.ttf') +} + +function setup() { + if(window.innerWidth < 950){ + canvas = createCanvas(window.innerWidth, window.innerHeight); + mobile_view = true; + network_view = false + }else{ + canvas = createCanvas(window.innerWidth/2.2, window.innerHeight); + mobile_view = false; + network_view = true + } + canvas.parent('sketch') + colorMode(HSB); + addPointstoArray(); + loadSentences(); + angleMode(DEGREES); + frameRate(60) + scroll_height = document.getElementById('text-body').scrollHeight; +} + +function draw() { + + background(60, 3.7, 95.3, 1); + wheel_scale = lerp(wheel_scale, init_scale + e, 0.05); + drawPoints(wheel_scale, drag_x, drag_y); + drawText() + checkMouse(); + scroll_top = document.getElementById('text-body').scrollTop; + percent = lerp(percent, map(scroll_top, 0, scroll_height - 1000, 0, 100), 0.1) + changePercent(); + updateCompassAngle(); +} + +function changePercent() { + document.getElementById('percent').innerText= str(round(percent)) + "%"; + document.getElementById('percent-mobile').innerText= str(round(percent)) + "%"; +} + +function checkMouse() { + if(window.innerWidth > 950){ + if (mouseX > (window.innerWidth / 2.2) - text_view_padding) { + check_mouse = false; + } else { + check_mouse = true; + } + }else{ + if ((mouseX > windowWidth) && network_view) { + check_mouse = false; + } else { + check_mouse = true; + } + } + +} + + +function mouseWheel(event) { + if (check_mouse && network_view) { + e += -event.delta * 0.005; + if (e < -0.2) { + e = -0.2 + } + else if(e > 0.5) { + e = 0.5 + } + }else{ + e = 0 + } +} + +function mouseDragged() { + + let m_dragRX = -0.75 + let m_dragRY = -0.5 + if (check_mouse && network_view) { + + mouse_dragged = true; + + + if(mobile_view){ + m_dragRX = -2; + m_dragRY = -2; + } else { + m_dragRX = -0.75; + m_dragRY = -0.5; + } + + drag_x += ((mouseX - pmouseX) * m_dragRX) + if (drag_x > 9000 || drag_x < -9000) { + drag_x = 0; + } + drag_y += ((mouseY - pmouseY) * m_dragRY) + if (drag_y > 5000 || drag_y < -5000) { + drag_y = 0; + } + } + + mouse_dragged = false; + +} + +function mouseClicked(event) { + let x = 0; + let y = 0; + + if (check_mouse && !mouse_dragged) { + // Check for hover + try { + geoArray.forEach(element => { + if (element.over == true) { + + if ((e < 0.5) && !mobile_view) + { + e += 0.25; + } + + x = element.center_w - element.new_x + y = element.center_h - element.new_y + + // Move to that area + + drag_x += (x - element.center_w) + 50 + drag_y += (y - windowHeight / 2) - 100 + smoothScroll(element.sequence); + findNextNodeSeq(element); + // Find next node in sequence + throw new Error("Break the loop.") + } + }); + } catch (error) { + + } + } +} + +function findNextNodeSeq(geo) { + let sequence = geo.sequence; + let next = sequence + 1; + geoArray.forEach(e => { + if(e.sequence == next){ + next_text_seq = e; + } + }) +} + +function updateCompassAngle() { + if(next_text_seq == null) { + + }else{ + let v1 = createVector(drag_x, drag_y); + let v2 = createVector(next_text_seq.new_x, next_text_seq.new_y); + direction = lerp(direction, v1.angleBetween(v2), 0.1); + let doc = document.getElementById('arrow-p'); + doc.style.transform = 'rotate('+ direction + 'deg)'; + doc = document.getElementById('arrow-mobile'); + doc.style.transform = 'rotate('+ direction + 'deg)'; + } +} + +function addPointstoArray() { + for (let i = 0; i < 105; i++) { + tmp = new Geo(data[i]); + geoArray.push(tmp); + } +} + +function loadSentences() { + geoArray.forEach(element => { + element.spawnText(); + }); + } + +function drawPoints(ws, dx, dy) { + + for (let i = 0; i < geoArray.length; i++) { + geoArray[i].update(ws, dx, dy); + + } + + push(); + noFill(); + stroke(255, 0, 0, 0.15); + beginShape(); + for (let i = 0; i < geoArray.length; i++) { + curveVertex(geoArray[i].center_w - geoArray[i].new_x * geoArray[i].ws, geoArray[i].center_h - geoArray[i].new_y * geoArray[i].ws); + } + endShape() + pop(); + + for (let i = 0; i < geoArray.length; i++) { + geoArray[i].update(ws, dx, dy); + geoArray[i].show(ws, dx, dy); + geoArray[i].move() + //geoArray[i].display(); + + } + +} + +function drawText() { + for (let i = 0; i < geoArray.length; i++) { + geoArray[i].display(); + } +} + +// Resize Canvas Function +function windowResized() { + if(window.innerWidth < 950){ + resizeCanvas(windowWidth, windowHeight); + mobile_view = true; + }else{ + resizeCanvas(windowWidth/2.2, windowHeight); + mobile_view = false; + network_view = true + } +} + +function smoothScroll(seq_id) { + let id = '#' + seq_id + document.getElementById(seq_id).scrollIntoView({ + behavior: 'smooth', + inline: 'center', + block: 'center' + }); +} + + + +class Geo { + + constructor(entry) { + this.emb_dict = createStringDict({}); + this.entry = entry; + this.speaker = entry['speaker']; + this.text = entry['text']; + this.sequence = entry['sequence']; + + this.emb_dict.set('Technology', str(this.entry['Technology'])); + this.emb_dict.set('Art', str(this.entry['Art'])); + this.emb_dict.set('Ireland', str(this.entry['Ireland'])); + this.emb_dict.set('Organisation', str(this.entry['Organisation'])); + this.emb_dict.set('Digital', str(this.entry['Digital'])); + this.emb_dict.set('Community', str(this.entry['Community'])); + this.emb_dict.set('Events', str(this.entry['Events'])); + + this.radius = 100; + this.new_radius = this.radius; + + this.over = false; + this.ws = 1 + + this.x = entry['x'] * 400; + this.y = entry['y'] * 400; + + this.new_x = this.x; + this.new_y = this.y; + + this.center_w = windowWidth / 4; + this.center_h = windowHeight / 2; + + this.angle_counter_x = random(0, 100) + this.angle_counter_y = random(0, 100) + this.angle_counter_color = random(0, 100) + this.angle_counter = random(-0.02, 0.02); + this.angle_counter_pos = random(-0.2, 0.2); + this.random_divider_x = random(2, 4); + this.random_divider_y = random(2, 4); + + this.px = 0; + this.py = 0; + + this.ang = 0; + } + + + spawnText() { + var dom_target = document.getElementById('text-body'); + + // Create Div & Set Attributes + var temp_div = document.createElement("div"); + temp_div.setAttribute('class', 'sentence-block'); + temp_div.setAttribute('id', str(this.sequence)); + + // Create P for Speaker, X&Y, and Text + var para_speaker = document.createElement('span'); + var node = document.createTextNode(this.speaker); + para_speaker.setAttribute('class', this.speaker); + para_speaker.appendChild(node); + + var para_x = document.createElement('span'); + node = document.createTextNode(round(this.center_w - this.new_x * this.ws)); + let id_x = str(this.sequence) + 'x'; + para_x.setAttribute('id', id_x); + para_x.setAttribute('class', 'x-coord'); + para_x.appendChild(node); + + var para_y = document.createElement('span'); + node = document.createTextNode(round(this.center_h - this.new_y * this.ws)); + let id_y = str(this.sequence) + 'y'; + para_y.setAttribute('id', id_y); + para_y.setAttribute('class', 'y-coord'); + para_y.appendChild(node); + + var node_link = document.createElement('span'); + node_link = document.createElement('img') + node_link.src = "static/assets/data/assets/arrow-r.svg" + // node = document.createTextNode('🡥') + let node_pos = str(this.sequence) + 'pos'; + node_link.setAttribute('id', node_pos); + node_link.setAttribute('class', 'arrow'); + node_link.appendChild(node); + node_link.addEventListener("click", () => { + let x = 0; + let y = 0; + + + try { + geoArray.forEach(element => { + if (element.sequence == this.sequence) { + + + + x = element.center_w - element.new_x + y = element.center_h - element.new_y + + // Move to that area + + drag_x += (x - element.center_w) + 50; + drag_y += (y - windowHeight / 2) - 100; + + throw new Error("Break the loop.") + } + }); + } catch (error) { + + } + }); + + var para_text = document.createElement('p'); + node = document.createTextNode(this.text); + para_text.appendChild(node); + + temp_div.appendChild(para_speaker); + temp_div.appendChild(para_x); + temp_div.appendChild(para_y); + temp_div.appendChild(node_link); + temp_div.appendChild(para_text); + + dom_target.appendChild(temp_div); + } + + update(ws, dx, dy) { + + if(window.innerWidth > 950){ + this.center_w = windowWidth / 4; + }else{ + this.center_w = windowWidth / 2; + } + this.ws = ws; + this.new_radius = this.radius * this.ws + let rd_x = this.random_divider_x * this.ws + let rd_y = this.random_divider_y * this.ws + + let p = this.new_radius / rd_x * sin(this.angle_counter_x) + let q = this.new_radius / rd_y * cos(this.angle_counter_y) + + // this.center_w = windowWidth / 4; + // this.center_h = windowHeight / 2; + + this.new_x = lerp(this.new_x, this.x + dx + p, 0.1); + this.new_y = lerp(this.new_y, this.y + dy + q, 0.1); + + this.px = lerp(this.x, this.x + p, 0.05); + this.py = lerp(this.y, this.y + q, 0.05); + + this.angle_counter_x += this.angle_counter_pos; + this.angle_counter_y += this.angle_counter_pos; + + // Update Coords in Dom + let id_string_x = str(this.sequence) + 'x'; + let id_string_y = str(this.sequence) + 'y'; + let x_text = str(round(this.px)); + let y_text = str(round(this.py)); + let arrow_text = str(this.sequence) + 'pos'; + document.getElementById(id_string_x).innerText = x_text; + document.getElementById(id_string_y).innerText = y_text; + } + + + show() { + noStroke(); + smooth(); + + let tech_color = map(float(this.emb_dict.get('Technology')), -0.1, 0.1, 0, 255); + let art_color = map(float(this.emb_dict.get('Art')), -0.1, 0.1, 0, 255); + let ireland_color = map(float(this.emb_dict.get('Ireland')), -0.1, 0.1, 0, 255); + + let comm_color = map(float(this.emb_dict.get('Community')), -0.1, 0.1, 0, 255); + let events_color = map(float(this.emb_dict.get('Events')), -0.1, 0.1, 0, 255); + let org_color = map(float(this.emb_dict.get('Organisation')), -0.1, 0.1, 0, 255); + + let conicColors = [ + color(tech_color, art_color, 255, 255), + color(comm_color, events_color, 255, 255), + color(ireland_color, org_color, 255, 255) + ] + + + conicGradient(this.angle_counter_color, this.center_w - this.new_x * this.ws, this.center_h - this.new_y * this.ws, conicColors); + ellipse(this.center_w - this.new_x * this.ws, this.center_h - this.new_y * this.ws, this.new_radius); + + this.angle_counter_color += this.angle_counter; + } + + move() { + if (mouseX > (this.center_w - this.new_x * this.ws) - (this.new_radius/2) && mouseX < (this.center_w - this.new_x * this.ws) + (this.new_radius/2) && mouseY > (windowHeight / 2 - this.new_y * this.ws) - (this.new_radius/2) && mouseY < (windowHeight / 2 - this.new_y * this.ws) + (this.new_radius/2)) { + this.over = true; + }else { + this.over = false; + } + } + + display() { + if (this.over && network_view) { + let s = "" + let t = "" + t = round(this.emb_dict.get('Technology'), 2) + " : " + round(this.emb_dict.get('Art'), 2) + " : " + round(this.emb_dict.get('Community'), 2) + " : " + round(this.emb_dict.get('Events'), 2) + " : " + round(this.emb_dict.get('Ireland'), 2) + " : " + round(this.emb_dict.get('Digital'), 2) + " : " + round(this.emb_dict.get('Organisation'), 2); + //s = round(this.px) + " : " + round(this.py); + t = this.text + s = this.speaker + fill(0); + textFont(myFont) + push(); + fill(100, 0.6); + noStroke(); + + let rectW = this.ws * 600 + let rectH = this.ws * 400 + + + + rect((this.center_w - (this.new_x * this.ws)) - 300 * this.ws, (this.center_h - (this.new_y * this.ws)) - 500 * this.ws, rectW, rectH, 10); + fill(0, 0, 0) + textAlign(CENTER); + textSize(map(this.ws, 0.5, 3, 15, 25 )); + textWrap(WORD); + text(t, (this.center_w - (this.new_x * this.ws)) - 200 * this.ws, (this.center_h - (this.new_y * this.ws)) - 400 * this.ws, 400 * this.ws, 200 * this.ws); + fill(248, 63, 72) + text(s, (this.center_w - (this.new_x * this.ws)) - 200 * this.ws, (this.center_h - (this.new_y * this.ws)) - (400 * this.ws) + 250 * this.ws, 400 * this.ws, 200 * this.ws); + pop(); + } + } + + + + +} + +//Create listeners for both buttons +network_button.addEventListener('click', function handleClick() { + if(mobile_view){ + network_view = true; + + var view_el = document.getElementById('text-view') + view_el.style.opacity = 0 + + view_el = document.getElementById('text-view-button') + view_el.style.display = "inline"; + view_el.style.zIndex = "400" + } +}) + +text_button.addEventListener('click', function handleClick() { + network_view = false; + + var view_el = document.getElementById('text-view') + view_el.style.opacity = 1 + view_el.style.display = "inline"; + + setTimeout(() => { + + view_el = document.getElementById('text-view-button') + view_el.style.zIndex = "0" + view_el.style.display = "inline"; + }, 800) + +// view_el = document.getElementById('text-view-button') +// view_el.style.zIndex = "0" +// view_el.style.display = "inline"; +}) + +document.getElementById('about-interview').addEventListener('click', function handleClick() { + about_view = true + document.getElementById('about-section').style.transform = "translate(-50%, -45%)" +}) + + +function showAboutOnPageLoad(){ + about_view = true + document.getElementById('about-section').style.transform = "translate(-50%, -45%)" +} + +document.getElementById('mobile-btn').addEventListener('click', function handleClick() { + + if (about_view) { + about_view = false + document.getElementById('about-section').style.transform = "translate(-50%, 100%)" + } else { + about_view = true + document.getElementById('about-section').style.transform = "translate(-50%, -45%)" + } +}) + +addEventListener("click", (evt) => { + var my_div = document.getElementById('about-section') + if(evt.target != my_div && evt.target != document.getElementById('about-interview') && evt.target.parentNode != my_div && evt.target != document.getElementById('mobile-about-button') && evt.target != document.getElementById('mobile-btn')){ + + if (about_view) { + about_view = false + document.getElementById('about-section').style.transform = "translate(-50%, 100%)" + } + } +}); diff --git a/templates/data.html b/templates/data.html new file mode 100644 index 0000000..fee072e --- /dev/null +++ b/templates/data.html @@ -0,0 +1,90 @@ + + + + + + + Ø | D.A.T.A Interview + + + + + + + + + + + + +
        +
        +
        +
        + text-view +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        60%
        +
        +
        +
        +

        THE BIG

        +

        D.A.T.A

        +

        INTERVIEW

        +
        +
        +
        +
        💁
        + +
        +
        +
        +
        + +
        + +
        + +
        + text-view +
        +
        + text-view +
        +
        +
        +
        +
        +
        +
        + +
        +
        +
        + About +
        +
        +

        At the start of the summer, we had the pleasure of chatting with Paul, Tom and Aisling who are current facilitators of the Dublin Art & Technology Association. D.A.T.A has created a platform for artists, makers and thinkers to share knowledge about digital cultures and practices in Ireland since its genesis in 2002.

        +

        In our conversation, we had the opportunity to touch on topics such as D.A.T.A's identity, how it has evolved over the years, and a deeper look into their approach behind the process of curating & organising events.

        +

        We hope you enjoy the deeply insightful conversation with D.A.T.A, while having some fun navigating its latent space!

        +

        The website has been designed to visualise the interview in a linear and non-linear format. The interview was processed through a machine/natural language processing algorithm, which ranked each segment of text against various topics that surfaced during the interview.

        +

        As a result, the algorithm created a high-dimensional version of the interview, which is commonly referred to as the latent space. Once created, the machine's multidimensional understanding of the text was flattened using a t-SNE algorithm, producing the 2D mapping of the interview.

        +
        + +
        +
        + + + + + +