Difference between revisions of "Getting Started"

From maker-hub
Jump to navigation Jump to search
 
(276 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[File:Few Word.png|500px|right]]
 
[[File:Few Word.png|500px|right]]
  
Reading is hard... but somehow, we need to put the necessary training information into your brain so that you stay safe and don't break stuff while using equipment in the Maker Hub. I'll try to convey all of this in as few words as possible (humor aside).
+
<strong>Welcome to the Maker Hub Introduction Course!</strong>
  
The Maker Hub is a makerspace open to all George Fox University students for innovating, designing, and creating. It is a 16,000 square foot space located in the [https://www.georgefox.edu/maps_locations/inter_map/campus-facilities/sub.html Klages Center] that comprises several [[Facilities|design areas]] including technical shops, a central tool room, a computer lab, meeting rooms, and general work spaces. The Maker Hub was designed to facilitate learning, encourage entrepreneurship, and add value to the GFU student's educational experience. It's a collaborative environment that is home to senior design and servant engineering teams, guest lectures and community events, design competitions, project exhibitions, and training classes.
+
All Maker Hub users must take this course in order to have access to the Maker Hub. This course should take less than 45 minutes to complete. And we promise, of all the Maker Hub training courses, this one is the longest (except for the soldering irons for some reason). Reading is hard... but somehow, we need to put the necessary training information into your brain so that you can use the Maker Hub's equipment safely and refrain from breaking things. We'll try to convey all of this in as few words as possible (humor aside). For all the "[[TLDR]]" peeps in the house, buckle up...
  
The Maker Hub has a limited number of staff and student employees. It is largely run by student volunteers who help with training and overseeing various technical shops. Our students are encouraged to "own" the space. In any public space, there has to be some set of rules that govern the activity in the space. Ideally, we would just use the clever “Rule 0: Don’t make me make a rule.” But, we felt it was better to come up with some overall guiding principles rather than a list of rules. Clearly, there are some obvious “rules” that get implied from these principles, but, we believe that if you embrace the principles, the rules will take care of themselves. These principles we like to call, the [[3 commandments]]: '''Safety First''', '''Reset the Space''', '''Be Professional'''. Please explore the [[3 commandments]] page for a deeper explanation. Many of these Wiki pages will have their own "3 commandments" section to cover unique details for equipment and tools.  
+
<span style="font-size:x-large;"><span style="color:red">To gain basic card-swipe access to the Maker Hub, read this entire page and pass the Maker Hub Introduction Canvas quiz (with 100%). The link to the Canvas quiz is found toward the bottom of this page [[{{PAGENAME}}#Certification|here]].</span></span>
  
There is a 6,000 square foot central room known simply as "[[The Hub]]" which provides a large work area with benches and tools for general making activities.
+
__TOC__
  
 +
==How We Operate==
  
 +
The Maker Hub is available to all members of the GFU family (i.e. undergrad students, graduate students, ADP students, and employees), and that includes non-engineering students! The Maker Hub was born to advance creativity, innovation, and entrepreneurship within the community of George Fox University. One of the main ways we achieve this goal is by providing a space where people can work on academic and/or personal projects. The Maker Hub operates under the guidance of a few GFU employees, a handful of student staff, and a plethora of student aces and volunteers. The student staff, aces, and volunteers play critical leadership roles in overseeing various technical shops and training others to use the equipment. With a diverse user-base and a diverse set of projects running concurrently, there has to be a standardized training system that keeps everyone on the same page. And... that's why you're here reading this epic wiki page anyways.
  
<span style="font-size:x-large;"><span style="color:red">To successfully complete the Maker Hub Introduction Foxtale quiz, you will need information from this page, [[The Hub]], and [[3 commandments]]. Scroll down to find the link to the quiz under the "Certification" header.</span></span>
+
To enable you to access and maintain this space, you are being asked (OK, required) to take a short training course on the Maker Hub. Through this course, you will become acquainted with the [[Facilities|facilities]] within the Maker Hub, the [[Equipment|equipment]] and [[Tools|tools]] available to you, and the expectations for proper usage of them. The goal of this course is twofold: first, to introduce you to the capabilities available to you in the space, and second, to help you understand the expectations upon you when using the space. Both are crucial if you want to be an active participant in the space.
  
==[[Facilities]]==
+
In any public space, there has to be some set of rules that govern the activity in the space. Ideally, we would just use the clever “Rule 0: Don’t make me make a rule.” But, we felt it was better to come up with some overall guiding principles rather than a list of rules. Clearly, there are some obvious “rules” that get implied from these principles, but, we believe that if you embrace the principles, the rules will take care of themselves. These principles we like to call: <strong>The Three Commandments</strong>.
The Maker Hub is comprised of the following [[Facilities|facilities]]. These links describe each area and the resources within those areas.
 
{{#ask: [[Is facility::True]]
 
|format=ul
 
}}
 
  
==[[Equipment]]==
+
(See what we did there? - Christian school - reference to the commandments? Get it?)
In general, [[Equipment|equipment]] refers to larger machines than those things one might refer to as a "tool." However, in the Maker Hub, [[Equipment|equipment]] is a special category of machines because, by definitions, ''every'' piece of equipment requires certified training before an individual is allowed to use it. Information on how to achieve this training is provided on the Wiki page for each piece of [[Equipment|equipment]].
 
[[Equipment]] is marked in the Maker Hub by the use of special icons that are displayed either on, around, or above the equipment. An example icon is this one used for the [[Horizontal Bandsaw]].
 
  
[[File:horizontal_bandsaw_icon.png|100x100px]]
+
==The Three Commandments==
 +
# Safety First
 +
# Reset the Space
 +
# Be Professional
  
 +
<gallery class="center" widths="200px">
 +
Image:Safety First Red.png
 +
Image:Reset The Space Green.png
 +
Image:Be Professional Blue.png
 +
</gallery>
 +
<br>
 +
===What Do The Three Commandments Mean?===
  
 +
====Safety First====
 +
This should be the most obvious--and critical--of the commandments. A significant portion of the equipment and tools in the Maker Hub can be quite dangerous. It is imperative that in everything you do, you address safety first. This starts with general behavior (don’t run with scissors - in fact, don’t run at all - unless there is a fire - and you can see now why we are going with principles rather than specific rules). But beyond general behavior, various rooms and machines have very specific safety procedures and violations of these procedures will come with penalties.
  
The Maker Hub [[Equipment|equipment]] is located in the various [[Facilities|facilities]] and covers various "domains" of activity, from wood, metal, and plastic to electronics, cloths, and crafts. Use the links below to find [[Equipment|equipment]] for each domain.
+
We use the buddy system. It's always a good idea to have a buddy or someone within eyesight or earshot while working anywhere in the Maker Hub. It is IMPERATIVE to have a buddy or someone else present when working in the machine shop, wood shop, or welding shop. Do not use equipment alone in the machine shop, wood shop, or welding shop; it is a serious safety violation.
  
{{#ask: [[Is domain::True]]
+
Safety first includes not only your safety and the safety of others, but the safety of the equipment and tools as well. It is a huge privilege to have access to this set of equipment and we need to ensure that the equipment is being properly used and maintained. There is no reason in this space to use a screwdriver as a hammer. We have hammers. Use tools for their intended purposes, not just for your safety, but for the safety of the tool.
|format=ul
 
}}
 
  
==Certification==
+
Safety is our number one concern as you use the equipment and tools available in the Maker Hub. In the Maker Hub, there is a very clear distinction between things that are considered [[Equipment|equipment]] and things that are considered [[Tools|tools]]. Equipment is a special category of machines that, by definition, <strong>requires</strong> certified training before an individual is allowed to use it. Tools have no certification process; they can be used by anyone who has completed this Maker Hub Introduction course and passed the quiz. That does not mean that tools are necessarily less dangerous; equipment just requires more training. Do not use any equipment that you have not been certified on. There are several equipment stations in [[The Hub]] such as the [[Sewing Machine|sewing machines]], the [[Electronics Workstation|electronics workstation]], and the [[Heat Press|heat press]] to name a few. All [[Equipment|equipment]] is marked in the Maker Hub with special icons that are displayed either on, around, or above the equipment. Here's an example icon for the [[Sublimation Printer|sublimation printer]].
[https://foxtale.georgefox.edu/moodle/course/view.php?id=26852 Maker Hub Introduction FoxTALE Quiz]
+
[[File:Dye Sublimation Printer.png|150px|none]]
 +
 
 +
Equipment that has an icon posted over it, by definition, requires specialized certification training. Without completing this training, you are not authorized to utilize the equipment! Have we beat this dead horse enough yet? Think of these certifications as a “license to learn.” They allow you to utilize the equipment, but you should still feel free to ask for help, at any point, from a shop mentor or technician.
 +
 
 +
Never forget ... SAFETY FIRST!
 +
 
 +
====Reset the Space====
 +
This commandment is simple enough to understand, but sometimes difficult for ... let’s just say it ... people ... to implement. The idea is very simple. Put things back. Leave the space better than you found it. It's not that hard. There is a place for everything, and everything has a place. There are marks on the floor in the Hub for the tables. These are just there to help remind you. This principle applies to EVERYTHING in the space. If you move a chair, put it back. If you move a table, put it back. If you use a tool, put it back. If you use a rolling computer, put it back. That means you don’t take things from one room and leave them in another. You see, that would not be “putting it back.” You see where I am going with this? If you use a machine in the shop, put the tools away. Use the vacuum to clean up. Make the space look better than you found it. If you want a marker for a whiteboard in the space, go request one from the [[Tool Room]]. They are free for usage in the space. Do not take them from other rooms. Do not take erasers from other rooms. If you use a whiteboard, erase it. I could go on. Sort of want to. But I will contain myself. Ok ... a few more ...
 +
 
 +
We currently allow food and drink in the Maker Hub. Resetting the Space means that you don’t leave food spills, wrappers, or trays, or anything that wasn’t there when you came in.
 +
 
 +
Now, we understand that sometimes you need to leave things out. Maybe you are in the middle of a large test and you need something to run overnight. In cases like this, it is OK, but you NEED to leave a note on your system so that others know the situation. This is just common courtesy.
 +
 
 +
Whatever you do, RESET THE SPACE!
 +
 
 +
====Be Professional====
 +
This commandment has two sides to it. It covers the idea of acting like a professional (which Webster’s defines as “exhibiting a courteous, conscientious, and generally businesslike manner in the workplace”). The term also describes the standards of education and training that prepare members of the profession with the particular knowledge and skills necessary to perform their specific role within that profession. Hopefully, you are learning both of these as part of your education at George Fox University. In the Maker Hub we expect you to develop as a courteous, conscientious, and skilled craftsman, understanding the tools and equipment in the Maker Hub and how to use them effectively.
 +
 
 +
Being a professional has some obvious behavioral ramifications. First, be Christlike. Think of others better than yourselves. Share. If you are using a meeting room to do individual work, and a team needs a meeting room, then you should yield the room. Function is more important than who got there first. This is being a professional.
 +
 
 +
If you are working with a tool or piece of equipment, and you don’t know the proper way to do what you are attempting - ASK SOMEONE! Learn! Become a professional. Learn the craft. This is an educational space. You might think it will be quick and you can just get it done “your” way and not learn how to do it correctly. Be a professional and learn the proper way, and then be available to teach others.
 +
 
 +
One very important, and likely difficult part of being a professional is to correct others when they are not being professional. It is your responsibility to speak up when you see somebody doing something inappropriate. If you see somebody doing something unsafe, not resetting the space, or being unprofessional, the professional thing to do is to remind them of the three commandments and ask them politely to correct their action. This is OUR space, not any individual's. As a group, we expect everyone in the space to keep the space safe, clean, and operable for everyone.
 +
 
 +
Now, it’s time for a brief “family chat” (Nick speaking here). I am primarily addressing our engineering students where I hear of these issues occurring, but this topic certainly applies to all students, all majors, all Maker Hub users, and beyond. I hear reports of sexist comments and crude joking at the expense of one gender or the other occurring in the Maker Hub (albeit far less than reports I hear from other universities). I doubt anyone is surprised to hear me say that this is not professional behavior. Having been college student myself at one point, I am familiar with the type of locker room talk that “gets a laugh out of the boys.” If you actually take a minute to examine the origin/purpose behind such comments, it exposes a significant thread of immaturity. Some who engage in sexism make socially unacceptable statements but cover them by saying “it’s just a joke.” Some are seeking attention or approval from their peers. Some want to be perceived as funny or edgy by others. Some have a very fragile masculinity or femininity and feel better when they put the other gender down. Some genuinely have a perverted ideology concerning men, women, and gender roles and feel a need to stroke their own ego. No matter the intent, sexist conduct displays a lack of maturity.
 +
 
 +
There is a time and place for appropriate humor concerning the whimsical rivalries between various engineering disciplines or even differing majors. Still, such humor should never include elements that would dishonor one gender or the other. And yes, let me be clear: the standard goes both directions. I am well aware that men are the more common offenders, but that does not give women any license or justification to return fire with disparaging remarks. We reject the “eye-for-an-eye” mentality. I speak on behalf of the College of Engineering (and the university as a whole) when I say that one of our main goals is to guide you toward greater levels of maturity and let the transforming love of Christ be the primary thing that informs your thoughts, speech, attitudes, and actions. Insomuch as your interaction with the Maker Hub could contribute toward this goal, the Maker Hub will continue to uphold a professional culture and expect our users to meet the standard.
 +
 
 +
Much more can be said about this topic, but for the sake of space, I will pause here. Please reach out to nsullivan@georgefox.edu to report violations or engage in further dialogue about this topic.
 +
 
 +
BE PROFESSIONAL!
 +
 
 +
===How We Handle Violations===
 +
 
 +
These are The Three Commandments, and they form the rule and order for the Maker Hub. There are similarities to the rule and order in Christianity. As G.K. Chesterton said in his classic book “Orthodoxy,”
 +
 
 +
"The more I considered Christianity, the more I found that while it had established a rule and order, the chief aim of that order was to give room for good things to run wild."
 +
 
 +
It is our hope and expectation that you and other students will be able to run wild and create many wonderful things in this space. These “commandments” are intended to provide that space - and the expectation is that everyone will abide by them. But, as we know, not everyone chooses to do so (1 Tim 1:9-10). We have seen various ways that different schools address these violations, and most use expulsion from the space as the primary penalty. Our penalty system is purposely vague to allow us to handle violations on a case-by-case basis. Some violations (not putting a chair back after moving it) might be comparatively minor, while others are extremely severe. An example of an extremely severe violation would be unauthorized usage of equipment in the machine shop or wood shop, or even authorized usage of a machine shop/wood shop machine without anyone else present. These violations would most likely result in immediate suspension from accessing the Maker Hub. Let's just not go there, please.
 +
 
 +
Ok, moving onward. You might have noticed that the Maker Hub itself and many of the facility doors around the Maker hub are access-controlled. The main doors should not be propped open except for Maker Hub events. Unless a [[Facilities|facility]] is being monitored by the Maker Hub staff, a Maker Hub work study student, or a volunteer/ace, the facility doors should not be propped open. Please leave these doors closed under normal circumstances. Obvious exceptions are the [[Meeting Rooms|meeting rooms]] and [[Computer Lab|computer lab]] (we don't care if you use them with the doors open or closed). Other exceptions are the [[Wood Shop|wood shop]] and [[Welding Shop|welding shop]]; while users are working in these two spaces, the doors must remain propped open for safety reasons. You might be surprised how something so simple as "proper door usage" factors into the SAFETY FIRST and BE PROFESSIONAL commandments. It is a serious liability concern for the Maker Hub and the university if people are using the space without undergoing the proper safety training. If you're unsure if the people walking behind you have access to a certain facility, ask... don't be afraid to introduce yourself and make new friends. Everyone in the space should understand the three commandments and will be expected to adhere to these principles.
 +
 
 +
Finally, as a friendly reminder, we have security cameras posted throughout the Maker Hub, so do be on your best behavior. The cameras exist to help protect the space and enforce violations. All public areas are under constant surveillance, and everything is being recorded. This means that, if necessary, the video can be reviewed to help identify nefarious behavior or the cause of an accident. If an accident happens in the Maker Hub, first decide if you need to call an ambulance. Second, notify the Lead Technician and/or Maker Hub Manager. Even if no one got hurt... if you broke something... if something dangerous happened... if a significant malfunction occurred, but then it magically fixed itself later... please notify the Maker Hub employees. It's always better to take initiative in owning your mistakes than for the Maker Hub staff to find out what happened by reviewing the camera footage.
 +
 
 +
Let's switch gears to a happier topic.
 +
 
 +
==Things You Need To Know About The Hub==
 +
[[File:Hub MAP Text 2.png|500px|thumb|right|Map of the Maker Hub]]
 +
The [[Maker_Hub#Facilities|Facilities section on the Main Page]] shows a gallery of the different spaces that comprise the whole Maker Hub. See the map to the right for the layout of the Maker Hub. With the exception of the doors and the Senior Design Space, there are 11 labelled facilities on the map.
 +
 
 +
For students, your standard entry and exit point for the Maker Hub will be the main doors. Please do not use the senior design doors, the loading dock doors, or any of the emergency exit doors (unless, for example, there is an emergency or you are receiving a large shipment on the loading dock). This is intentional to funnel our user base through the turnstiles. As of the beginning of the spring semester 2023, the turnstiles next to the front desk are now live. This means that users will now use their GFU ID card at the turnstiles to swipe in on entry '''''and''''' swipe out when exiting the Maker Hub. Anyone who walks through without swiping will set off the alarm, and that would be '''sooo''' embarrassing.
 +
 
 +
A brief explanation of '''why'''... The turnstiles are part of the Maker Hub's data collection initiative. These data will show the collective usage of the Maker Hub and provide quantitative leverage for acquiring funding for new equipment and other developments in the space. We will also be able to analyze usage trends to better serve our current user base and inform our marketing efforts. Your compliance with this new policy benefits the Maker Hub and  creates more opportunities for us to develop the space. Just in case it needs to be stated explicitly: Proper turnstile usage will be expected of all Maker Hub users. Violators should expect consequences... but, we know none of you would be so flagrant. ;)
 +
 
 +
If you are giving a tour, you can ask someone working at the front desk to temporarily disable the turnstiles so that all of your tour guests won't set off the alarm. The front desk has a regular rotation of work study students that work during the afternoons and early evenings on weekdays. Feel free to ask them for assistance (or Katherine or Jennifer if they are working at the Maker Hub front desk).
 +
 
 +
===The Hub===
 +
The space we call "The Hub" refers to the large central room, which includes the lobby and hallways (the blue area on the map where the Maker Hub logo is). The Hub is a 24/7 general-use area that is meant for designing and making. It has approximately 8 rolling workbenches, some blue rolling carts, 8 computers on wheels, tool racks on the wall, and some semi-permanent stations.
 +
 
 +
First, there are approximately 8 open workbenches surrounded by tall drafting chairs that are open for general use. Each of these has a permanent home that is marked on the floor. Each workbench has power outlets on each leg, which can be powered by plugging the workbench's power plug into the yellow power outlets that come down from the ceiling. The yellow power outlets have been positioned so that that they hang down directly next to the workbench. These workbenches have locking casters and can be moved. However, when you have finished with the workbench, please reset the space. Ensure that the workbench is placed back inside of the special marks on the floor, and place the drafting chairs (usually 4 of them) around the workbench. When you RESET THE SPACE, it makes it nice for those following behind you. And we want to be nice ... don’t we? Yes is the answer to that question. If you need to leave your project out on a workbench for an extended period, you must mark it as "in use" with a note including your name, date, contact info, and when the project will be moved/cleaned up. There should be a good reason for this because we don't want to lock down a workbench for days. If there are special circumstances, please speak with your project advisor and/or a Maker Hub employee.
 +
 
 +
Project storage is at a premium in the Maker Hub. Visit our [[Project Storage]] page to see what storage spaces are available. We do not have a lot of space to store projects. The blue rolling carts that live in the hub are designed for project transportation, not permanent project storage. When you are finished using these carts, please clear them off and return them where you found them. If, for some special reason, you need to use the cart continuously for a short time, mark the cart as "in use" with a note per the description above. This is useful if you want to run overnight tests or you are in the middle of an assembly. However, this is for short term use. Remember, BE PROFESSIONAL. Release the materials for others to use. There are project storage racks in the senior design hallway. If you want to store your project there, label your shelf/materials with your name, the date, and contact info. Do not swipe other people's labeled materials for your own project. Keep in mind that these storage racks are periodically cleaned out each summer, so please take your projects with you at the end of the spring semester or notify a Maker Hub employee if you want your project to stay over the summer.
 +
 
 +
There are 8 computers on wheels that live up against the wall facing the quad or between the meeting rooms on the south side of the hub. They are all the same as the Computer Lab machines with the exception of number 8. Computer 8 has the Adobe Creative Suite in addition to all the rest of the software. Side note: the other computer in the Maker Hub with the Adobe Creative Suite is the computer connected to the vinyl cutters and the sublimation printer. All of the computers on wheels have a UPS (uninterruptible power supply) that allows you to unplug the machine and move it around the Maker Hub without powering it down. You allegedly have about 15 minutes of power available from the UPS (if anyone actually times it, let us know). Feel free to roll these computers to wherever you want to use them; however, when you are finished, RESET THE SPACE! The computers, when not in use, should always be sitting at their permanent locations plugged into a wall outlet.
 +
 
 +
On the wall, there are a couple tool racks. These are available for use within the Maker Hub. As should be obvious by now, when you are done using the tools, return them - RESET THE SPACE. Do not take these tools out of the Maker Hub. That's what the [[Tool Room]] is for. A tool is to the Tool Room as a book is to the library. Check out tools for an extended period of time and simply return them by the due date. The Tool Room hours are posted on the front desk.
 +
 
 +
There is A/V equipment in the corner of the hub. Best to just leave it alone.
 +
 
 +
The [[Supplies|Low-Fidelity Prototyping Station]] is provided so that students can make quick project mock-ups. Please BE PROFESSIONAL when using this station. While it might be tempting to make pipe-cleaner men as you did in elementary school, these supplies are provided for free to be utilized for projects, not entertainment. We will simply not be able to provide these supplies if they are continually wasted. This station is notorious for being left a mess, so please RESET THE SPACE and clean up when you are finished. Also, there is a small laminating machine located at the low-fidelity prototyping station. The low-fidelity prototyping station and the laminating machine are not considered "equipment," which means that there is no certification process necessary to use these items. See [[The Hub]] wiki page to see what equipment is located in the hub.
 +
 
 +
===Meeting Rooms===
 +
[[File:Meeting Room.jpg|500px|thumb|right|A neat and orderly Meeting Room :)]]
 +
There are 8 meeting rooms in the Maker Hub (the dark blue areas on the map). The intended function of these rooms is to house meetings (i.e. these are not study rooms, but meeting rooms). Which means, priority will be given to weekly meetings with senior design teams, servant engineering teams, and other teams meeting for classes or projects. When not requested for a team meeting, these rooms can be used by individuals for studying, or by groups for hanging out. If you are acting like a professional, then you will yield the room to others who have a legitimate project-related need for the meeting room. This happens frequently, so do not be surprised or upset if you are displaced by a project team. The meeting rooms fill up fast (because they're awesome), but everyone needs to remember that the meeting rooms serve the primary purpose of housing project-related meetings. If you are studying in a meeting room, consider it a very professional act to offer "your" meeting room to a team that needs to meet and then study elsewhere. Likewise, if a team would like to use a room at an unscheduled time, it would be professional for the team to first look for an empty room, and second, look for a room that has the least effect on others who might be using the room for group study or other activities.
 +
 
 +
Each of these rooms is equipped with a wall-mounted flat-screen TV and HDMI connector. There is a whiteboard in each room as well. As with other whiteboards, please do not take the erasers or markers, and always erase the board when you leave the meeting room. If there are no markers or erasers, please obtain them from the Tool Room. When you leave the meeting room, turn off the TV and leave the HDMI cable accessible (not tossed underneath the table). Also, there should be 1 table (haven’t seen anyone take those yet), and 7 short chairs without armrests (these chairs are different from the taller drafting chairs in The Hub), and a clean whiteboard with an eraser and markers. No extra items should be left behind (e.g. computer on wheels). Just like the picture to the right, remember that you should always RESET THE SPACE.
 +
 
 +
There are coat hangers on the wall behind the door. These are only for coats, they will not be strong enough to hold backpacks.
 +
 
 +
Enjoy the meeting rooms - just remember The Three Commandments.
 +
 
 +
===Computer Lab===
 +
The computer lab is open to all Maker Hub users (the yellow area on the map). The computer lab has 29 computer stations (28 for students and 1 for the instructor). Each of these stations consists of a computer, a keyboard, a mouse, and a chair with armrests. These items form a unit. Which should make it clear that you should never take a keyboard, a mouse, or a chair from this space. There are no chairs with armrests in The Hub or meeting rooms. So, leave the armrest-chairs in the computer lab. The keyboards and mouses are intended for these computers. If a keyboard or mouse is broken, inform the Tool Room. If there is a dire situation where you need to borrow one of these items, as always, RESET THE SPACE. Several classes are held in the computer lab, and we don't want them to waste class-time looking for missing keyboards, mouses, or chairs.
 +
 
 +
The large whiteboards in the computer lab follow the same principles as the whiteboards in the meeting rooms. Don't remove markers or erasers from the computer lab. If the markers are missing or not functional, go to the Tool Room and get new ones. Erase the board when you are finished. If you want to save your whiteboard writing, take a picture. Writing “Do Not Erase” is not an acceptable action for a whiteboard. You can save it yourself and reproduce it quickly later. Again, BE PROFESSIONAL.
 +
 
 +
Clean up after yourself; consider this good practice for marriage if indeed you would like to get married one day. This means you need to be sure to clean up any papers, food, and drink. If you have a class in the computer lab and receive a handout, it is your job to study it like your wonderful professor intended. But if you are not going to do that, it is your responsibility to recycle it. Leave the space better than you found it.
 +
 
 +
There is a set of 72 small storage lockers in this room. Their main function is to hold Maker-Hub-related materials for classes/labs or Maker-Hub-related personal projects. They are not to be used as personal lockers for non-Maker-Hub-related items. Now clearly, if you are already using a locker for Maker Hub reasons, then it is certainly fine to additionally place a textbook or engagement ring in there (preferably in the spring). But don’t secure a locker if you are not actively working on a project or participating in a class/lab. You will need to provide your own lock. At the end of each semester, the lockers should be cleared out and the locks removed. If there are still locks on them, this will give us a chance to use our bolt cutters and sell the locker's contents on the web. That is always a good time. If you need to maintain a locker over the break, you will need to coordinate with the Maker Hub employees. Please do not set things on top of the lockers. These items will be routinely disposed of without warning. Clearly, setting something on top would not be resetting the space, and hopefully you are discovering that this is an important commandment.
 +
 
 +
==Material Policy==
 +
 
 +
The Maker Hub gladly provides a limited assortment of low-cost materials and consumable items to its users—free of charge. This is true for both academic and personal projects. We want to remove as many monetary barriers as possible as users work on projects. There are two noteworthy areas where the Maker Hub expects that the user cover material costs.
 +
 
 +
The first scenario is for projects that require a large quantity of materials. A “large quantity” is an intentionally subjective term that will be decided by the Maker Hub staff on a case-by-case basis. The term "large quantity" also applies to expensive materials such as a full sheet of plywood, which can cost well over $100 depending on the quality. Sure, some projects legitimately need a large quantity of materials. Just ask the Maker Hub staff about it first. Maybe we'll give you the green light; maybe we'll ask you to cover the cost. We monitor our inventory carefully and want there to be enough materials available for everyone to enjoy, so please don't abuse this privilege.
 +
 
 +
The second scenario is for specialized materials that the Maker Hub does not keep in stock. In this case, we can direct the user to a [[Places to Buy Materials|list of local businesses and online stores]] to purchase materials. If you are unfamiliar with the materials you to plan to use for your project or what materials you "should" use, talk with the Maker Hub staff before purchasing. We might be able to save you a big headache.
 +
 
 +
==Production Runs==
 +
 
 +
Production runs are not allowed in the Maker Hub. Let's define what this means from the Maker Hub's perspective...
 +
 
 +
The primary factor that qualifies a project as a production run is attempting to produce a large quantity of items, but this factor is also weighed in conjunction with the time, effort, and cost needed to complete the project. Again, we are using a “large quantity of items” as an intentionally subjective term. If you ask yourself questions like... ''how many things am I trying to make? how much time will it take? what amount of effort is involved? how much will it cost?'' and the answer to all of them is <strong>a LOT</strong>, then you are definitely attempting a production run. The Maker Hub staff reserves the right to determine whether a project qualifies as a production run on a case-by-case basis.
 +
 
 +
Why does the Maker Hub care about production runs? The Maker Hub is primarily an educational space; it is not a mass-production facility. Educating, training, and equipping will always be among our top priorities. Production runs tend to lock down a particular space, tool, or piece of equipment for an extended period of time as the user conducts repetitive tasks to produce his or her items. Whether it’s a production run or not, locking down the Maker Hub’s resources for an extended period of time without express permission from the Maker Hub staff comes in conflict with the third commandment: Be Professional! With education as a top priority, high production volumes can begin to compete with that priority by tying up Maker Hub resources for long periods of time. Secondly, the Maker Hub is not the place to fire up your business's assembly line and start cranking out hundreds of widgets for profit. If indeed you have the skills to make something in the Maker Hub that someone else would actually buy with real money, do it! Make something amazing and sell it. However, the Maker Hub will not support any form of "profit making" that includes assembly line production or qualifies as a production run.
 +
 
 +
==How The Training System Works==
 +
 
 +
Anyone need a snack break? to stand up and stretch? a brief intermission? Almost there!
  
==Training==
+
A few category definitions for you...<br>
How does our training system work?
+
*[[Facilities]] are the various spaces in the Maker Hub. They usually require wiki reading and a passed Canvas quiz.
 +
*[[Equipment]] is machinery where authorized usage requires wiki reading, a passed Canvas quiz, certification training, and a demonstration.
 +
*[[Tools]] are items that range from hand tools to benchtop instruments. Some have informative wiki pages, but they do not require a Canvas quiz, certification training, or a demonstration in order to use them.
  
 +
Right now, you are in the middle of the Maker Hub Introduction training course. Successful completion of this course grants you 24/7 access to The Hub. There are many other training courses available. Most [[Facilities|facilities]] in the Maker Hub have a top-level Canvas quiz (e.g. the [[Prototype Lab]]). Successful completion of the Prototype Lab's top-level Canvas quiz grants you access to the Prototype Lab. Each piece of [[Equipment|equipment]] in the Maker Hub has an associated Canvas quiz (e.g. the [[Prusa 3D Printer]]). Successful completion of the Prusa 3D Printer's Canvas quiz <strong>plus training and a demonstration from a staff member</strong> authorizes you to use the Prusa 3D Printer. Canvas quizzes must be taken sequentially depending on where the equipment is located; you won't be able to take the Prusa 3D Printer quiz until you have passed the Prototype Lab's top-level quiz. For all you visual learners out there, take a look at the fancy graph below. Each node represents a Canvas quiz (unless the node is labelled with "No Quiz"). The graph follows a sequential process of completing quizzes from left to right. Take a minute to bask in its glory, then continue reading below.
  
 
<graph>
 
<graph>
 
 
{
 
{
 
   "version": 2,
 
   "version": 2,
   "width": 800,
+
   "width": 400,
   "height": 600,
+
   "height": 500,
 
   "data": [
 
   "data": [
 
     {
 
     {
Line 54: Line 170:
 
           "type": "hierarchy",  
 
           "type": "hierarchy",  
 
           "field": "size",  
 
           "field": "size",  
           "size": [1600, 1400]  
+
           "nodesize": [13, 300]  
 
         }
 
         }
 
       ],
 
       ],
 
       "values":
 
       "values":
         { "name": "Maker Hub Introduction FoxTALE Quiz",
+
         { "name": "Maker Hub Introduction Canvas Quiz",
 
         "children": [
 
         "children": [
           { "name": "Computer Lab" },
+
           { "name": "Computer Lab (No Quiz)" },
 
           { "name": "Finishing Room" },
 
           { "name": "Finishing Room" },
 
           { "name": "Machine Shop" ,
 
           { "name": "Machine Shop" ,
Line 66: Line 182:
 
               { "name": "Bead Roller" },
 
               { "name": "Bead Roller" },
 
               { "name": "Bending Brake" },
 
               { "name": "Bending Brake" },
               { "name": "Buffers" },
+
               { "name": "CNC Press Brake" },
 +
              { "name": "CNC Mill" },
 
               { "name": "Drill Press" },
 
               { "name": "Drill Press" },
 
               { "name": "Hand Bender" },
 
               { "name": "Hand Bender" },
Line 82: Line 199:
 
             ]
 
             ]
 
           },
 
           },
           { "name": "Meeting Rooms" },
+
           { "name": "Meeting Rooms (No Quiz)" },
 
           { "name": "PCB Lab" ,
 
           { "name": "PCB Lab" ,
 
             "children": [
 
             "children": [
Line 103: Line 220:
 
             ]
 
             ]
 
           },
 
           },
           { "name": "The Hub" ,
+
           { "name": "The Hub (No Quiz)" ,
 
             "children": [
 
             "children": [
 +
              { "name": "Electronics Workstation" },
 
               { "name": "Foam Cutter" },
 
               { "name": "Foam Cutter" },
 
               { "name": "Heat Press" },
 
               { "name": "Heat Press" },
Line 111: Line 229:
 
               { "name": "Serger" },
 
               { "name": "Serger" },
 
               { "name": "Sewing Machine" },
 
               { "name": "Sewing Machine" },
 +
              { "name": "Soldering Irons" },
 
               { "name": "Sublimation Printer" },
 
               { "name": "Sublimation Printer" },
 
               { "name": "Vinyl Cutter" },
 
               { "name": "Vinyl Cutter" },
 
               { "name": "Vinyl Printer+Cutter" },
 
               { "name": "Vinyl Printer+Cutter" },
              { "name": "Electronics Workstation" },
 
 
             ]
 
             ]
 
           },
 
           },
Line 120: Line 238:
 
             "children": [
 
             "children": [
 
               { "name": "3D Scanners" },
 
               { "name": "3D Scanners" },
              { "name": "Gary's Favorite Robot Arm" },
 
 
               { "name": "High Speed Camera" },
 
               { "name": "High Speed Camera" },
 
               { "name": "Injection Molding Machine" },
 
               { "name": "Injection Molding Machine" },
 
               { "name": "Jewelry Station" },
 
               { "name": "Jewelry Station" },
 +
              { "name": "Leatherworking Station" },
 
               { "name": "Photo Table" },
 
               { "name": "Photo Table" },
 
               { "name": "Vacuum Former" },
 
               { "name": "Vacuum Former" },
Line 129: Line 247:
 
             ]
 
             ]
 
           },
 
           },
           { "name": "Tool Room" },
+
           { "name": "Tool Room (No Quiz)" },
 
           { "name": "Welding Shop" ,
 
           { "name": "Welding Shop" ,
 
             "children": [
 
             "children": [
 
               { "name": "Blast Cabinet" },
 
               { "name": "Blast Cabinet" },
 +
              { "name": "Buffers" },
 
               { "name": "MIG Welder" },
 
               { "name": "MIG Welder" },
 
               { "name": "Pedestal Grinder" },
 
               { "name": "Pedestal Grinder" },
Line 146: Line 265:
 
               { "name": "CNC Router" },
 
               { "name": "CNC Router" },
 
               { "name": "Compound Miter Saw" },
 
               { "name": "Compound Miter Saw" },
              { "name": "Dust Collector" },
 
 
               { "name": "Hand Router" },
 
               { "name": "Hand Router" },
 
               { "name": "Handheld CNC Router" },
 
               { "name": "Handheld CNC Router" },
Line 195: Line 313:
 
       "properties": {
 
       "properties": {
 
         "enter": {
 
         "enter": {
           "x": {"field": "layout_y", "offset": 0},
+
           "x": {"field": "layout_y", "offset": -20},
 
           "y": {"field": "layout_x"},
 
           "y": {"field": "layout_x"},
 
           "font": {"value": "Helvetica Neue"},
 
           "font": {"value": "Helvetica Neue"},
           "fontSize": {"value": 16},
+
           "fontSize": {"value": 14},
 
           "align": {"value": "left"},
 
           "align": {"value": "left"},
 
           "baseline": {"value": "middle"},
 
           "baseline": {"value": "middle"},
Line 211: Line 329:
 
</graph>
 
</graph>
  
 +
Notice that the middle column contains all of the facilities within the Maker Hub, and the right column contains each piece of equipment within the Maker Hub.
  
{{#ask:
+
===The Training Process===
[[Is facility::True]]
+
Training follows a specific progression as shown in the image to the right...[[File:Training Progression2.png|800px|thumb|right|The Training Progression in the Maker Hub]]
[[Has certification::+]]
 
|?Has certification=FoxTALE Link
 
|format=broadtable
 
}}
 
  
{{#ask:
+
The first place to start is by reading the wiki page on whatever facility or piece of equipment you would like to use. Watch the videos, open up the user manuals, etc. After you finish, you can find the link to the Canvas quiz under the Certification header. Theoretically, all the information you need to pass the Canvas quiz can be found somewhere on its respective wiki page. The link will take you to the main page of the Canvas course. You will need to self-enroll in the Canvas course by clicking the "Join This Course" button in the right column. If the quiz is locked, it means that either you haven't self-enrolled or you haven't yet taken the facility's top-level quiz for that piece of equipment. Pass the quiz with 100%. If you took a quiz for a facility, you're done. Facilities do not require you to schedule training or demonstrations; only equipement does. But it seems kind of pointless to have access to a facility but not be able to use anything in it... so let's continue the process for a piece of equipment. You've read the wiki page; you've passed the Canvas quiz with 100%. What's next? The next step is to scroll back to the top of the wiki page and find the student ace listed for that piece of equipment. A student ace is simply a student who knows a piece of equipment well and is willing to train other students on the proper usage of that equipment. Student aces often receive extra privileges such as extended hours in their particular facility. Once you've found the student ace's email address, send them and email and CC <span style="color:blue">makerhub@georgefox.edu</span>. Your email is simply a request to schedule training and a demonstration for the equipment.
[[Is equipment::True]]
 
[[Has certification::+]]
 
|?Has certification=FoxTALE Link
 
|format=broadtable
 
|limit=250
 
}}
 
  
===TVs (Training Ventures)===
+
What if there is no student ace listed? Try going to the facility page of where the equipment is located to see if there is an ace or a shop supervisor listed. What if there still is no student ace or shop supervisor listed there? Well, today might be your lucky day to offer to be a student ace for that particular equipment. No one in the Maker Hub is required to be an ace for anything, but the "ace" system is critically important to the operation of the Maker Hub and the culture we continue to develop. We focus our efforts into developing a culture in the Maker Hub that is collaborative, where people are eager to be helpful and share best practices. Our culture empowers students to take ownership of the Maker Hub through various roles and responsibilities. We are very grateful for anyone willing to be a student ace and assist others.
{{#ask:
 
[[Is tv::True]]
 
}}
 
  
==Staff==
+
If there are no student aces available, just send your email to <span style="color:blue">makerhub@georgefox.edu</span> and someone will schedule a training and demonstration with you. The demonstration is usually a set task where the trainee will create a specific object or complete several functions to demonstrate basic proficiency on the equipment. Each piece of equipment has a unique demonstration, and the instructions are listed on the equipment's wiki page. Once the training and demonstration are complete, you are certified on the equipment. This means that you are free to use the equipment (adhering to the buddy system as applicable) whenever the facility is open. Each facility has posted hours on its respective wiki page and/or on the door of the facility. What does certification NOT mean? Certification does not mean that you know everything about the machine - neither does it mean that you're on your own to figure out how to use the machine if you forgot something from the training. Again, consider certifications as a "license to learn" more about the equipment. Ask questions and seek help from the Maker Hub staff and your peers.
Curious to know who is in charge of what machine? Check out the list of [[Aces]].
 
  
==[[Tools]]==
+
Having just described the training process in excruciating detail, I promise it's a lot easier than it sounds. And it becomes much faster and more familiar once you've gone through it a few times.
[[Tools]] (both hand tools and power tools) are stored at various locations in the Maker Hub. Tools do not require certified training before use, but users are expected to familiarize themselves with tool operation by viewing the appropriate Wiki page. Furthermore, as part of the '''Safety First'' commandment, users are encouraged to seek help and instruction for any tool that they feel uncomfortable using. Volunteers will be available to serve these needs.  
 
  
==[[Supplies]]==
+
===Quiz Resets===
[[Supplies]] include everything from special tooling to parts and materials. Most [[Supplies|supplies]] are kept either in the [[Tool Room]], or generally co-located with the equipment that they service. However, they can also be found at various locations throughout the Maker Hub.
 
  
==[[Software]]==
+
All Canvas quizzes are reset at the beginning of the summer, so you will need to retake all of your quizzes in the fall in order to maintain certification on those pieces of equipment. This is intentional to refresh your knowledge of how to operate the machines you've trained on once a year. However, all of your demonstrations carry over from year to year, so you don't have to go through the process of scheduling a training and demonstration with a student ace again. By all means, ask for refresher training if you need it. But, there is no requirement to redo certification training/demonstrations for any piece of equipment that you have already been certified on at some point.
A variety of engineering software is available. The use of some software may require the FortiClient VPN when not on George Fox wifi.  
 
  
==[[Maker Hub Wiki]]==
+
==The Maker Hub Waiver==
Go to the [[Maker Hub Wiki]] page for information on the structure of this Wiki and how to appropriately edit this Wiki. Also, try out the [[Sandbox]] for editing practice. There is also a [https://drive.google.com/drive/folders/0ADy2qTefCbcqUk9PVA special google drive] for Maker Hub Crew.
 
  
 +
For legal and liability reasons, the Maker Hub has a waiver that all users must sign prior to any equipment or tool usage. See our [[User Policies]] page for more details on different Maker Hub users with respect to the waiver.
  
<!--
+
The Maker Hub waiver is part of the Maker Hub Introduction Canvas Course and should be completed by users there. It is simply listed here for reference: [[Media:MAKER HUB WAIVER V2.docx|Maker Hub Waiver V2]]
  
            "children": [
+
==Certification==
              { "name": "Bead Roller" },
+
Now that you've probably experienced information overload, go knock out this Maker Hub Introduction Canvas quiz (link below). If you miss a question, take the quiz again. 100% is the only passing grade for Maker Hub quizzes. Training in the Maker Hub can be tedious, but it's not meant to be frustrating. If you are confused or something is not working correctly for you, please contact the Maker Hub staff for assistance at <span style="color:blue">makerhub@georgefox.edu</span>.
              { "name": "Bending Brake" },
 
              { "name": "Buffers" },
 
              { "name": "Drill Press" },
 
              { "name": "Hand Bender" },
 
              { "name": "Horizontal Bandsaw" },
 
              { "name": "Hydraulic Press" },
 
              { "name": "Lathe" },
 
              { "name": "Metal Laser Cutter" },
 
              { "name": "Milling Machine" },
 
              { "name": "Ring Roller" },
 
              { "name": "Rotary Punch" },
 
              { "name": "Sheet Metal Shear" },
 
              { "name": "Slip Roller" },
 
              { "name": "Vertical Bandsaw" },
 
              { "name": "Waterjet Cutter" }
 
            ]
 
  
<graph>
+
[https://georgefox.instructure.com/enroll/GH36RT Maker Hub Canvas Course]
{
 
  "version": 2,
 
  "width": 550,
 
  "height": 400,
 
  "data": [
 
    {
 
      "name": "tree",
 
      "url": "wikiraw:///Extension:Graph/data/flare-json",
 
      "format": {"type": "treejson"},
 
      "transform": [
 
        {"type": "hierarchy", "field": "size", "size": [400, 500]}
 
      ]
 
    }
 
  ],
 
  "marks": [
 
    {
 
      "type": "path",
 
      "from": {
 
        "data": "tree",
 
        "transform": [
 
          {
 
            "type": "filter", "test": "datum.parent"
 
          },
 
          {
 
            "type": "linkpath",
 
            "sourceX": "parent.layout_y",
 
            "sourceY": "parent.layout_x",
 
            "targetX": "layout_y",
 
            "targetY": "layout_x",
 
            "shape": "diagonalX"
 
          }
 
        ]
 
      },
 
      "properties": {
 
        "enter": {
 
          "path": {"field": "layout_path"},
 
          "stroke": {"value": "#ddd"}
 
        }
 
      }
 
    },
 
    {
 
      "type": "text",
 
      "from": {"data": "tree"},
 
      "properties": {
 
        "enter": {
 
          "x": {"field": "layout_y", "offset": -10},
 
          "y": {"field": "layout_x"},
 
          "font": {"value": "Helvetica Neue"},
 
          "fontSize": {"value": 10},
 
          "align": {"value": "left"},
 
          "baseline": {"value": "middle"},
 
          "fill": {"value": "#000"},
 
          "text": {"field": "name"}
 
        }
 
      }
 
    }
 
  ]
 
}
 
<graph>
 
{
 
"name": "flare",
 
"children": [
 
{
 
  "name": "noop"
 
},
 
{
 
  "name": "analytics",
 
  "children": [
 
  {
 
    "name": "cluster",
 
    "children": [
 
    {"name": "AgglomerativeCluster", "size": 3938},
 
    {"name": "CommunityStructure", "size": 3812},
 
    {"name": "HierarchicalCluster", "size": 6714},
 
    {"name": "MergeEdge", "size": 743}
 
    ]
 
  },
 
  {
 
    "name": "graph",
 
    "children": [
 
    {"name": "BetweennessCentrality", "size": 3534},
 
    {"name": "LinkDistance", "size": 5731},
 
    {"name": "MaxFlowMinCut", "size": 7840},
 
    {"name": "ShortestPaths", "size": 5914},
 
    {"name": "SpanningTree", "size": 3416}
 
    ]
 
  },
 
  {
 
    "name": "optimization",
 
    "children": [
 
    {"name": "AspectRatioBanker", "size": 7074}
 
    ]
 
  }
 
  ]
 
},
 
{
 
  "name": "animate",
 
  "children": [
 
  {"name": "Easing", "size": 17010},
 
  {"name": "FunctionSequence", "size": 5842},
 
  {
 
    "name": "interpolate",
 
    "children": [
 
    {"name": "ArrayInterpolator", "size": 1983},
 
    {"name": "ColorInterpolator", "size": 2047},
 
    {"name": "DateInterpolator", "size": 1375},
 
    {"name": "Interpolator", "size": 8746},
 
    {"name": "MatrixInterpolator", "size": 2202},
 
    {"name": "NumberInterpolator", "size": 1382},
 
    {"name": "ObjectInterpolator", "size": 1629},
 
    {"name": "PointInterpolator", "size": 1675},
 
    {"name": "RectangleInterpolator", "size": 2042}
 
    ]
 
  },
 
  {"name": "ISchedulable", "size": 1041},
 
  {"name": "Parallel", "size": 5176},
 
  {"name": "Pause", "size": 449},
 
  {"name": "Scheduler", "size": 5593},
 
  {"name": "Sequence", "size": 5534},
 
  {"name": "Transition", "size": 9201},
 
  {"name": "Transitioner", "size": 19975},
 
  {"name": "TransitionEvent", "size": 1116},
 
  {"name": "Tween", "size": 6006}
 
  ]
 
},
 
{
 
  "name": "data",
 
  "children": [
 
  {
 
    "name": "converters",
 
    "children": [
 
    {"name": "Converters", "size": 721},
 
    {"name": "DelimitedTextConverter", "size": 4294},
 
    {"name": "GraphMLConverter", "size": 9800},
 
    {"name": "IDataConverter", "size": 1314},
 
    {"name": "JSONConverter", "size": 2220}
 
    ]
 
  },
 
  {"name": "DataField", "size": 1759},
 
  {"name": "DataSchema", "size": 2165},
 
  {"name": "DataSet", "size": 586},
 
  {"name": "DataSource", "size": 3331},
 
  {"name": "DataTable", "size": 772},
 
  {"name": "DataUtil", "size": 3322}
 
  ]
 
}
 
]
 
}
 
{
 
  "$schema": "https://vega.github.io/schema/vega/v5.json",
 
  "description": "An example of Cartesian layouts for a node-link diagram of hierarchical data.",
 
  "width": 600,
 
  "height": 1600,
 
  "padding": 5,
 
  
  "signals": [
+
==What's Next?==
    {
+
After you have passed the Maker Hub Introduction quiz on Canvas with 100%, you should receive card-swipe access to the main doors of the Maker Hub on the following day (because the card reader system updates at midnight).
      "name": "labels", "value": true,
 
      "bind": {"input": "checkbox"}
 
    },
 
    {
 
      "name": "layout", "value": "tidy",
 
      "bind": {"input": "radio", "options": ["tidy", "cluster"]}
 
    },
 
    {
 
      "name": "links", "value": "diagonal",
 
      "bind": {
 
        "input": "select",
 
        "options": ["line", "curve", "diagonal", "orthogonal"]
 
      }
 
    },
 
    {
 
      "name": "separation", "value": false,
 
      "bind": {"input": "checkbox"}
 
    }
 
  ],
 
 
 
  "data": [
 
    {
 
      "name": "tree",
 
      "url": "data/flare.json",
 
      "transform": [
 
        {
 
          "type": "stratify",
 
          "key": "id",
 
          "parentKey": "parent"
 
        },
 
        {
 
          "type": "tree",
 
          "method": {"signal": "layout"},
 
          "size": [{"signal": "height"}, {"signal": "width - 100"}],
 
          "separation": {"signal": "separation"},
 
          "as": ["y", "x", "depth", "children"]
 
        }
 
      ]
 
    },
 
    {
 
      "name": "links",
 
      "source": "tree",
 
      "transform": [
 
        { "type": "treelinks" },
 
        {
 
          "type": "linkpath",
 
          "orient": "horizontal",
 
          "shape": {"signal": "links"}
 
        }
 
      ]
 
    }
 
  ],
 
 
 
  "scales": [
 
    {
 
      "name": "color",
 
      "type": "linear",
 
      "range": {"scheme": "magma"},
 
      "domain": {"data": "tree", "field": "depth"},
 
      "zero": true
 
    }
 
  ],
 
 
 
  "marks": [
 
    {
 
      "type": "path",
 
      "from": {"data": "links"},
 
      "encode": {
 
        "update": {
 
          "path": {"field": "path"},
 
          "stroke": {"value": "#ccc"}
 
        }
 
      }
 
    },
 
    {
 
      "type": "symbol",
 
      "from": {"data": "tree"},
 
      "encode": {
 
        "enter": {
 
          "size": {"value": 100},
 
          "stroke": {"value": "#fff"}
 
        },
 
        "update": {
 
          "x": {"field": "x"},
 
          "y": {"field": "y"},
 
          "fill": {"scale": "color", "field": "depth"}
 
        }
 
      }
 
    },
 
    {
 
      "type": "text",
 
      "from": {"data": "tree"},
 
      "encode": {
 
        "enter": {
 
          "text": {"field": "name"},
 
          "fontSize": {"value": 9},
 
          "baseline": {"value": "middle"}
 
        },
 
        "update": {
 
          "x": {"field": "x"},
 
          "y": {"field": "y"},
 
          "dx": {"signal": "datum.children ? -7 : 7"},
 
          "align": {"signal": "datum.children ? 'right' : 'left'"},
 
          "opacity": {"signal": "labels ? 1 : 0"}
 
        }
 
      }
 
    }
 
  ]
 
}
 
{
 
  "$schema": "http://json-schema.org/draft-06/schema#",
 
  "title": "Vega Visualization Specification Language",
 
  "defs": {
 
    "autosize": {
 
      "oneOf": [
 
        {
 
          "enum": [
 
            "pad",
 
            "fit",
 
            "fit-x",
 
            "fit-y",
 
            "none"
 
          ],
 
          "default": "pad"
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "pad",
 
                "fit",
 
                "fit-x",
 
                "fit-y",
 
                "none"
 
              ],
 
              "default": "pad"
 
            },
 
            "resize": {
 
              "type": "boolean"
 
            },
 
            "contains": {
 
              "enum": [
 
                "content",
 
                "padding"
 
              ]
 
            }
 
          },
 
          "required": [
 
            "type"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "axis": {
 
      "type": "object",
 
      "properties": {
 
        "orient": {
 
          "oneOf": [
 
            {
 
              "enum": [
 
                "top",
 
                "bottom",
 
                "left",
 
                "right"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "scale": {
 
          "type": "string"
 
        },
 
        "format": {
 
          "oneOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "type": "object",
 
              "properties": {
 
                "year": {
 
                  "type": "string"
 
                },
 
                "quarter": {
 
                  "type": "string"
 
                },
 
                "month": {
 
                  "type": "string"
 
                },
 
                "date": {
 
                  "type": "string"
 
                },
 
                "week": {
 
                  "type": "string"
 
                },
 
                "day": {
 
                  "type": "string"
 
                },
 
                "hours": {
 
                  "type": "string"
 
                },
 
                "minutes": {
 
                  "type": "string"
 
                },
 
                "seconds": {
 
                  "type": "string"
 
                },
 
                "milliseconds": {
 
                  "type": "string"
 
                }
 
              },
 
              "additionalProperties": false
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "formatType": {
 
          "oneOf": [
 
            {
 
              "enum": [
 
                "number",
 
                "time",
 
                "utc"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "minExtent": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "maxExtent": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "offset": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "position": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "bandPosition": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "translate": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "values": {
 
          "$ref": "#/refs/arrayOrSignal"
 
        },
 
        "zindex": {
 
          "type": "number"
 
        },
 
        "aria": {
 
          "type": "boolean"
 
        },
 
        "description": {
 
          "type": "string"
 
        },
 
        "title": {
 
          "$ref": "#/refs/textOrSignal"
 
        },
 
        "titlePadding": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "titleAlign": {
 
          "oneOf": [
 
            {
 
              "enum": [
 
                "left",
 
                "right",
 
                "center"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/alignValue"
 
            }
 
          ]
 
        },
 
        "titleAnchor": {
 
          "oneOf": [
 
            {
 
              "enum": [
 
                null,
 
                "start",
 
                "middle",
 
                "end"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/anchorValue"
 
            }
 
          ]
 
        },
 
        "titleAngle": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "titleX": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "titleY": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "titleBaseline": {
 
          "oneOf": [
 
            {
 
              "enum": [
 
                "top",
 
                "middle",
 
                "bottom",
 
                "alphabetic",
 
                "line-top",
 
                "line-bottom"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/baselineValue"
 
            }
 
          ]
 
        },
 
        "titleColor": {
 
          "oneOf": [
 
            {
 
              "type": "null"
 
            },
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/colorValue"
 
            }
 
          ]
 
        },
 
        "titleFont": {
 
          "oneOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/stringValue"
 
            }
 
          ]
 
        },
 
        "titleFontSize": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "titleFontStyle": {
 
          "oneOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/stringValue"
 
            }
 
          ]
 
        },
 
        "titleFontWeight": {
 
          "oneOf": [
 
            {
 
              "enum": [
 
                null,
 
                "normal",
 
                "bold",
 
                "lighter",
 
                "bolder",
 
                "100",
 
                "200",
 
                "300",
 
                "400",
 
                "500",
 
                "600",
 
                "700",
 
                "800",
 
                "900",
 
                100,
 
                200,
 
                300,
 
                400,
 
                500,
 
                600,
 
                700,
 
                800,
 
                900
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/fontWeightValue"
 
            }
 
          ]
 
        },
 
        "titleLimit": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "titleLineHeight": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "titleOpacity": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "domain": {
 
          "type": "boolean"
 
        },
 
        "domainCap": {
 
          "oneOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/stringValue"
 
            }
 
          ]
 
        },
 
        "domainColor": {
 
          "oneOf": [
 
            {
 
              "type": "null"
 
            },
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/colorValue"
 
            }
 
          ]
 
        },
 
        "domainDash": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "type": "number"
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/arrayValue"
 
            }
 
          ]
 
        },
 
        "domainDashOffset": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "domainOpacity": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "domainWidth": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "ticks": {
 
          "type": "boolean"
 
        },
 
        "tickBand": {
 
          "$ref": "#/refs/tickBand"
 
        },
 
        "tickCap": {
 
          "oneOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/stringValue"
 
            }
 
          ]
 
        },
 
        "tickColor": {
 
          "oneOf": [
 
            {
 
              "type": "null"
 
            },
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/colorValue"
 
            }
 
          ]
 
        },
 
        "tickDash": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "type": "number"
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/arrayValue"
 
            }
 
          ]
 
        },
 
        "tickDashOffset": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "tickOffset": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "tickOpacity": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "tickRound": {
 
          "oneOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/booleanValue"
 
            }
 
          ]
 
        },
 
        "tickSize": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "tickWidth": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "tickCount": {
 
          "$ref": "#/refs/tickCount"
 
        },
 
        "tickExtra": {
 
          "$ref": "#/refs/booleanOrSignal"
 
        },
 
        "tickMinStep": {
 
          "$ref": "#/refs/numberOrSignal"
 
        },
 
        "grid": {
 
          "type": "boolean"
 
        },
 
        "gridScale": {
 
          "type": "string"
 
        },
 
        "gridCap": {
 
          "oneOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/stringValue"
 
            }
 
          ]
 
        },
 
        "gridColor": {
 
          "oneOf": [
 
            {
 
              "type": "null"
 
            },
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/colorValue"
 
            }
 
          ]
 
        },
 
        "gridDash": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "type": "number"
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/arrayValue"
 
            }
 
          ]
 
        },
 
        "gridDashOffset": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "gridOpacity": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "gridWidth": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "labels": {
 
          "type": "boolean"
 
        },
 
        "labelAlign": {
 
          "oneOf": [
 
            {
 
              "enum": [
 
                "left",
 
                "right",
 
                "center"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/alignValue"
 
            }
 
          ]
 
        },
 
        "labelBaseline": {
 
          "oneOf": [
 
            {
 
              "enum": [
 
                "top",
 
                "middle",
 
                "bottom",
 
                "alphabetic",
 
                "line-top",
 
                "line-bottom"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/baselineValue"
 
            }
 
          ]
 
        },
 
        "labelBound": {
 
          "oneOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "labelFlush": {
 
          "oneOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "labelFlushOffset": {
 
          "$ref": "#/refs/numberOrSignal"
 
        },
 
        "labelOverlap": {
 
          "$ref": "#/refs/labelOverlap"
 
        },
 
        "labelAngle": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "labelColor": {
 
          "oneOf": [
 
            {
 
              "type": "null"
 
            },
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/colorValue"
 
            }
 
          ]
 
        },
 
        "labelFont": {
 
          "oneOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/stringValue"
 
            }
 
          ]
 
        },
 
        "labelFontSize": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "labelFontWeight": {
 
          "oneOf": [
 
            {
 
              "enum": [
 
                null,
 
                "normal",
 
                "bold",
 
                "lighter",
 
                "bolder",
 
                "100",
 
                "200",
 
                "300",
 
                "400",
 
                "500",
 
                "600",
 
                "700",
 
                "800",
 
                "900",
 
                100,
 
                200,
 
                300,
 
                400,
 
                500,
 
                600,
 
                700,
 
                800,
 
                900
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/fontWeightValue"
 
            }
 
          ]
 
        },
 
        "labelFontStyle": {
 
          "oneOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/stringValue"
 
            }
 
          ]
 
        },
 
        "labelLimit": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "labelLineHeight": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "labelOpacity": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "labelOffset": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "labelPadding": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "labelSeparation": {
 
          "$ref": "#/refs/numberOrSignal"
 
        },
 
        "encode": {
 
          "type": "object",
 
          "properties": {
 
            "axis": {
 
              "$ref": "#/defs/guideEncode"
 
            },
 
            "ticks": {
 
              "$ref": "#/defs/guideEncode"
 
            },
 
            "labels": {
 
              "$ref": "#/defs/guideEncode"
 
            },
 
            "title": {
 
              "$ref": "#/defs/guideEncode"
 
            },
 
            "grid": {
 
              "$ref": "#/defs/guideEncode"
 
            },
 
            "domain": {
 
              "$ref": "#/defs/guideEncode"
 
            }
 
          },
 
          "additionalProperties": false
 
        }
 
      },
 
      "required": [
 
        "orient",
 
        "scale"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "background": {
 
      "$ref": "#/refs/stringOrSignal"
 
    },
 
    "bind": {
 
      "oneOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "input": {
 
              "enum": [
 
                "checkbox"
 
              ]
 
            },
 
            "element": {
 
              "$ref": "#/refs/element"
 
            },
 
            "debounce": {
 
              "type": "number"
 
            },
 
            "name": {
 
              "type": "string"
 
            }
 
          },
 
          "required": [
 
            "input"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "input": {
 
              "enum": [
 
                "radio",
 
                "select"
 
              ]
 
            },
 
            "element": {
 
              "$ref": "#/refs/element"
 
            },
 
            "options": {
 
              "type": "array"
 
            },
 
            "labels": {
 
              "type": "array",
 
              "items": {
 
                "type": "string"
 
              }
 
            },
 
            "debounce": {
 
              "type": "number"
 
            },
 
            "name": {
 
              "type": "string"
 
            }
 
          },
 
          "required": [
 
            "input",
 
            "options"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "input": {
 
              "enum": [
 
                "range"
 
              ]
 
            },
 
            "element": {
 
              "$ref": "#/refs/element"
 
            },
 
            "min": {
 
              "type": "number"
 
            },
 
            "max": {
 
              "type": "number"
 
            },
 
            "step": {
 
              "type": "number"
 
            },
 
            "debounce": {
 
              "type": "number"
 
            },
 
            "name": {
 
              "type": "string"
 
            }
 
          },
 
          "required": [
 
            "input"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "input": {
 
              "not": {
 
                "enum": [
 
                  "checkbox",
 
                  "radio",
 
                  "range",
 
                  "select"
 
                ]
 
              }
 
            },
 
            "element": {
 
              "$ref": "#/refs/element"
 
            },
 
            "debounce": {
 
              "type": "number"
 
            },
 
            "name": {
 
              "type": "string"
 
            }
 
          },
 
          "required": [
 
            "input"
 
          ],
 
          "additionalProperties": true
 
        }
 
      ]
 
    },
 
    "data": {
 
      "oneOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "name": {
 
              "type": "string"
 
            },
 
            "transform": {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/defs/transform"
 
              }
 
            },
 
            "on": {
 
              "$ref": "#/defs/onTrigger"
 
            }
 
          },
 
          "required": [
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "source": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "type": "string"
 
                  },
 
                  "minItems": 1
 
                }
 
              ]
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "transform": {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/defs/transform"
 
              }
 
            },
 
            "on": {
 
              "$ref": "#/defs/onTrigger"
 
            }
 
          },
 
          "required": [
 
            "source",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "url": {
 
              "$ref": "#/refs/stringOrSignal"
 
            },
 
            "format": {
 
              "oneOf": [
 
                {
 
                  "anyOf": [
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "type": {
 
                          "$ref": "#/refs/stringOrSignal"
 
                        },
 
                        "parse": {
 
                          "oneOf": [
 
                            {
 
                              "enum": [
 
                                "auto"
 
                              ]
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {},
 
                              "additionalProperties": {
 
                                "oneOf": [
 
                                  {
 
                                    "enum": [
 
                                      "boolean",
 
                                      "number",
 
                                      "date",
 
                                      "string"
 
                                    ]
 
                                  },
 
                                  {
 
                                    "type": "string",
 
                                    "pattern": "^(date|utc):.*$"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            {
 
                              "$ref": "#/refs/signal"
 
                            }
 
                          ]
 
                        }
 
                      }
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "type": {
 
                          "enum": [
 
                            "json"
 
                          ]
 
                        },
 
                        "parse": {
 
                          "oneOf": [
 
                            {
 
                              "enum": [
 
                                "auto"
 
                              ]
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {},
 
                              "additionalProperties": {
 
                                "oneOf": [
 
                                  {
 
                                    "enum": [
 
                                      "boolean",
 
                                      "number",
 
                                      "date",
 
                                      "string"
 
                                    ]
 
                                  },
 
                                  {
 
                                    "type": "string",
 
                                    "pattern": "^(date|utc):.*$"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            {
 
                              "$ref": "#/refs/signal"
 
                            }
 
                          ]
 
                        },
 
                        "property": {
 
                          "$ref": "#/refs/stringOrSignal"
 
                        },
 
                        "copy": {
 
                          "$ref": "#/refs/booleanOrSignal"
 
                        }
 
                      },
 
                      "additionalProperties": false
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "type": {
 
                          "enum": [
 
                            "csv",
 
                            "tsv"
 
                          ]
 
                        },
 
                        "header": {
 
                          "type": "array",
 
                          "items": {
 
                            "type": "string"
 
                          }
 
                        },
 
                        "parse": {
 
                          "oneOf": [
 
                            {
 
                              "enum": [
 
                                "auto"
 
                              ]
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {},
 
                              "additionalProperties": {
 
                                "oneOf": [
 
                                  {
 
                                    "enum": [
 
                                      "boolean",
 
                                      "number",
 
                                      "date",
 
                                      "string"
 
                                    ]
 
                                  },
 
                                  {
 
                                    "type": "string",
 
                                    "pattern": "^(date|utc):.*$"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            {
 
                              "$ref": "#/refs/signal"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "type"
 
                      ],
 
                      "additionalProperties": false
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "type": {
 
                          "enum": [
 
                            "dsv"
 
                          ]
 
                        },
 
                        "delimiter": {
 
                          "type": "string"
 
                        },
 
                        "header": {
 
                          "type": "array",
 
                          "items": {
 
                            "type": "string"
 
                          }
 
                        },
 
                        "parse": {
 
                          "oneOf": [
 
                            {
 
                              "enum": [
 
                                "auto"
 
                              ]
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {},
 
                              "additionalProperties": {
 
                                "oneOf": [
 
                                  {
 
                                    "enum": [
 
                                      "boolean",
 
                                      "number",
 
                                      "date",
 
                                      "string"
 
                                    ]
 
                                  },
 
                                  {
 
                                    "type": "string",
 
                                    "pattern": "^(date|utc):.*$"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            {
 
                              "$ref": "#/refs/signal"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "type",
 
                        "delimiter"
 
                      ],
 
                      "additionalProperties": false
 
                    },
 
                    {
 
                      "oneOf": [
 
                        {
 
                          "type": "object",
 
                          "properties": {
 
                            "type": {
 
                              "enum": [
 
                                "topojson"
 
                              ]
 
                            },
 
                            "feature": {
 
                              "$ref": "#/refs/stringOrSignal"
 
                            },
 
                            "property": {
 
                              "$ref": "#/refs/stringOrSignal"
 
                            }
 
                          },
 
                          "required": [
 
                            "type",
 
                            "feature"
 
                          ],
 
                          "additionalProperties": false
 
                        },
 
                        {
 
                          "type": "object",
 
                          "properties": {
 
                            "type": {
 
                              "enum": [
 
                                "topojson"
 
                              ]
 
                            },
 
                            "mesh": {
 
                              "$ref": "#/refs/stringOrSignal"
 
                            },
 
                            "property": {
 
                              "$ref": "#/refs/stringOrSignal"
 
                            },
 
                            "filter": {
 
                              "enum": [
 
                                "interior",
 
                                "exterior",
 
                                null
 
                              ]
 
                            }
 
                          },
 
                          "required": [
 
                            "type",
 
                            "mesh"
 
                          ],
 
                          "additionalProperties": false
 
                        }
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "async": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "transform": {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/defs/transform"
 
              }
 
            },
 
            "on": {
 
              "$ref": "#/defs/onTrigger"
 
            }
 
          },
 
          "required": [
 
            "url",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "values": {
 
              "oneOf": [
 
                {},
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "format": {
 
              "oneOf": [
 
                {
 
                  "anyOf": [
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "type": {
 
                          "$ref": "#/refs/stringOrSignal"
 
                        },
 
                        "parse": {
 
                          "oneOf": [
 
                            {
 
                              "enum": [
 
                                "auto"
 
                              ]
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {},
 
                              "additionalProperties": {
 
                                "oneOf": [
 
                                  {
 
                                    "enum": [
 
                                      "boolean",
 
                                      "number",
 
                                      "date",
 
                                      "string"
 
                                    ]
 
                                  },
 
                                  {
 
                                    "type": "string",
 
                                    "pattern": "^(date|utc):.*$"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            {
 
                              "$ref": "#/refs/signal"
 
                            }
 
                          ]
 
                        }
 
                      }
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "type": {
 
                          "enum": [
 
                            "json"
 
                          ]
 
                        },
 
                        "parse": {
 
                          "oneOf": [
 
                            {
 
                              "enum": [
 
                                "auto"
 
                              ]
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {},
 
                              "additionalProperties": {
 
                                "oneOf": [
 
                                  {
 
                                    "enum": [
 
                                      "boolean",
 
                                      "number",
 
                                      "date",
 
                                      "string"
 
                                    ]
 
                                  },
 
                                  {
 
                                    "type": "string",
 
                                    "pattern": "^(date|utc):.*$"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            {
 
                              "$ref": "#/refs/signal"
 
                            }
 
                          ]
 
                        },
 
                        "property": {
 
                          "$ref": "#/refs/stringOrSignal"
 
                        },
 
                        "copy": {
 
                          "$ref": "#/refs/booleanOrSignal"
 
                        }
 
                      },
 
                      "additionalProperties": false
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "type": {
 
                          "enum": [
 
                            "csv",
 
                            "tsv"
 
                          ]
 
                        },
 
                        "header": {
 
                          "type": "array",
 
                          "items": {
 
                            "type": "string"
 
                          }
 
                        },
 
                        "parse": {
 
                          "oneOf": [
 
                            {
 
                              "enum": [
 
                                "auto"
 
                              ]
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {},
 
                              "additionalProperties": {
 
                                "oneOf": [
 
                                  {
 
                                    "enum": [
 
                                      "boolean",
 
                                      "number",
 
                                      "date",
 
                                      "string"
 
                                    ]
 
                                  },
 
                                  {
 
                                    "type": "string",
 
                                    "pattern": "^(date|utc):.*$"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            {
 
                              "$ref": "#/refs/signal"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "type"
 
                      ],
 
                      "additionalProperties": false
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "type": {
 
                          "enum": [
 
                            "dsv"
 
                          ]
 
                        },
 
                        "delimiter": {
 
                          "type": "string"
 
                        },
 
                        "header": {
 
                          "type": "array",
 
                          "items": {
 
                            "type": "string"
 
                          }
 
                        },
 
                        "parse": {
 
                          "oneOf": [
 
                            {
 
                              "enum": [
 
                                "auto"
 
                              ]
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {},
 
                              "additionalProperties": {
 
                                "oneOf": [
 
                                  {
 
                                    "enum": [
 
                                      "boolean",
 
                                      "number",
 
                                      "date",
 
                                      "string"
 
                                    ]
 
                                  },
 
                                  {
 
                                    "type": "string",
 
                                    "pattern": "^(date|utc):.*$"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            {
 
                              "$ref": "#/refs/signal"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "type",
 
                        "delimiter"
 
                      ],
 
                      "additionalProperties": false
 
                    },
 
                    {
 
                      "oneOf": [
 
                        {
 
                          "type": "object",
 
                          "properties": {
 
                            "type": {
 
                              "enum": [
 
                                "topojson"
 
                              ]
 
                            },
 
                            "feature": {
 
                              "$ref": "#/refs/stringOrSignal"
 
                            },
 
                            "property": {
 
                              "$ref": "#/refs/stringOrSignal"
 
                            }
 
                          },
 
                          "required": [
 
                            "type",
 
                            "feature"
 
                          ],
 
                          "additionalProperties": false
 
                        },
 
                        {
 
                          "type": "object",
 
                          "properties": {
 
                            "type": {
 
                              "enum": [
 
                                "topojson"
 
                              ]
 
                            },
 
                            "mesh": {
 
                              "$ref": "#/refs/stringOrSignal"
 
                            },
 
                            "property": {
 
                              "$ref": "#/refs/stringOrSignal"
 
                            },
 
                            "filter": {
 
                              "enum": [
 
                                "interior",
 
                                "exterior",
 
                                null
 
                              ]
 
                            }
 
                          },
 
                          "required": [
 
                            "type",
 
                            "mesh"
 
                          ],
 
                          "additionalProperties": false
 
                        }
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "async": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "transform": {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/defs/transform"
 
              }
 
            },
 
            "on": {
 
              "$ref": "#/defs/onTrigger"
 
            }
 
          },
 
          "required": [
 
            "values",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "rule": {
 
      "type": "object",
 
      "properties": {
 
        "test": {
 
          "type": "string"
 
        }
 
      }
 
    },
 
    "encodeEntry": {
 
      "type": "object",
 
      "properties": {
 
        "x": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "x2": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "xc": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "width": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "y": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "y2": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "yc": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "height": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "opacity": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "fill": {
 
          "$ref": "#/refs/colorValue"
 
        },
 
        "fillOpacity": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "stroke": {
 
          "$ref": "#/refs/colorValue"
 
        },
 
        "strokeOpacity": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "strokeWidth": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "strokeCap": {
 
          "$ref": "#/refs/strokeCapValue"
 
        },
 
        "strokeDash": {
 
          "$ref": "#/refs/arrayValue"
 
        },
 
        "strokeDashOffset": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "strokeJoin": {
 
          "$ref": "#/refs/strokeJoinValue"
 
        },
 
        "strokeMiterLimit": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "blend": {
 
          "$ref": "#/refs/blendValue"
 
        },
 
        "cursor": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "tooltip": {
 
          "$ref": "#/refs/anyValue"
 
        },
 
        "zindex": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "description": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "aria": {
 
          "$ref": "#/refs/booleanValue"
 
        },
 
        "ariaRole": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "ariaRoleDescription": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "clip": {
 
          "$ref": "#/refs/booleanValue"
 
        },
 
        "strokeForeground": {
 
          "$ref": "#/refs/booleanValue"
 
        },
 
        "strokeOffset": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "cornerRadius": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "cornerRadiusTopLeft": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "cornerRadiusTopRight": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "cornerRadiusBottomRight": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "cornerRadiusBottomLeft": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "angle": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "size": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "shape": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "path": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "scaleX": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "scaleY": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "innerRadius": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "outerRadius": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "startAngle": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "endAngle": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "padAngle": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "interpolate": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "tension": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "orient": {
 
          "$ref": "#/refs/directionValue"
 
        },
 
        "defined": {
 
          "$ref": "#/refs/booleanValue"
 
        },
 
        "url": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "align": {
 
          "$ref": "#/refs/alignValue"
 
        },
 
        "baseline": {
 
          "$ref": "#/refs/baselineValue"
 
        },
 
        "aspect": {
 
          "$ref": "#/refs/booleanValue"
 
        },
 
        "smooth": {
 
          "$ref": "#/refs/booleanValue"
 
        },
 
        "text": {
 
          "$ref": "#/refs/textValue"
 
        },
 
        "dir": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "ellipsis": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "limit": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "lineBreak": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "lineHeight": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "dx": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "dy": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "radius": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "theta": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "font": {
 
          "$ref": "#/refs/stringValue"
 
        },
 
        "fontSize": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "fontWeight": {
 
          "$ref": "#/refs/fontWeightValue"
 
        },
 
        "fontStyle": {
 
          "$ref": "#/refs/stringValue"
 
        }
 
      },
 
      "additionalProperties": true
 
    },
 
    "encode": {
 
      "type": "object",
 
      "additionalProperties": false,
 
      "patternProperties": {
 
        "^.+$": {
 
          "$ref": "#/defs/encodeEntry"
 
        }
 
      }
 
    },
 
    "layout": {
 
      "oneOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "align": {
 
              "oneOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "enum": [
 
                        "all",
 
                        "each",
 
                        "none"
 
                      ]
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "row": {
 
                      "oneOf": [
 
                        {
 
                          "enum": [
 
                            "all",
 
                            "each",
 
                            "none"
 
                          ]
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "column": {
 
                      "oneOf": [
 
                        {
 
                          "enum": [
 
                            "all",
 
                            "each",
 
                            "none"
 
                          ]
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            },
 
            "bounds": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "full",
 
                    "flush"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "center": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "row": {
 
                      "$ref": "#/refs/booleanOrSignal"
 
                    },
 
                    "column": {
 
                      "$ref": "#/refs/booleanOrSignal"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            },
 
            "columns": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "padding": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "row": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "column": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            },
 
            "offset": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "rowHeader": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "rowFooter": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "rowTitle": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "columnHeader": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "columnFooter": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "columnTitle": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            },
 
            "headerBand": {
 
              "oneOf": [
 
                {
 
                  "$ref": "#/refs/numberOrSignal"
 
                },
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "row": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "column": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            },
 
            "footerBand": {
 
              "oneOf": [
 
                {
 
                  "$ref": "#/refs/numberOrSignal"
 
                },
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "row": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "column": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            },
 
            "titleBand": {
 
              "oneOf": [
 
                {
 
                  "$ref": "#/refs/numberOrSignal"
 
                },
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "row": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "column": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            },
 
            "titleAnchor": {
 
              "oneOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "enum": [
 
                        "start",
 
                        "end"
 
                      ]
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "row": {
 
                      "oneOf": [
 
                        {
 
                          "enum": [
 
                            "start",
 
                            "end"
 
                          ]
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "column": {
 
                      "oneOf": [
 
                        {
 
                          "enum": [
 
                            "start",
 
                            "end"
 
                          ]
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            }
 
          },
 
          "additionalProperties": false
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "guideEncode": {
 
      "type": "object",
 
      "properties": {
 
        "name": {
 
          "type": "string"
 
        },
 
        "interactive": {
 
          "type": "boolean",
 
          "default": false
 
        },
 
        "style": {
 
          "$ref": "#/refs/style"
 
        }
 
      },
 
      "additionalProperties": false,
 
      "patternProperties": {
 
        "^(?!interactive|name|style).+$": {
 
          "$ref": "#/defs/encodeEntry"
 
        }
 
      }
 
    },
 
    "legend": {
 
      "allOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "size": {
 
              "type": "string"
 
            },
 
            "shape": {
 
              "type": "string"
 
            },
 
            "fill": {
 
              "type": "string"
 
            },
 
            "stroke": {
 
              "type": "string"
 
            },
 
            "opacity": {
 
              "type": "string"
 
            },
 
            "strokeDash": {
 
              "type": "string"
 
            },
 
            "strokeWidth": {
 
              "type": "string"
 
            },
 
            "type": {
 
              "enum": [
 
                "gradient",
 
                "symbol"
 
              ]
 
            },
 
            "direction": {
 
              "enum": [
 
                "vertical",
 
                "horizontal"
 
              ]
 
            },
 
            "orient": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "none",
 
                    "left",
 
                    "right",
 
                    "top",
 
                    "bottom",
 
                    "top-left",
 
                    "top-right",
 
                    "bottom-left",
 
                    "bottom-right"
 
                  ],
 
                  "default": "right"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "tickCount": {
 
              "$ref": "#/refs/tickCount"
 
            },
 
            "tickMinStep": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "symbolLimit": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "values": {
 
              "$ref": "#/refs/arrayOrSignal"
 
            },
 
            "zindex": {
 
              "type": "number"
 
            },
 
            "aria": {
 
              "type": "boolean"
 
            },
 
            "description": {
 
              "type": "string"
 
            },
 
            "cornerRadius": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "fillColor": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/colorValue"
 
                }
 
              ]
 
            },
 
            "offset": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "padding": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "strokeColor": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/colorValue"
 
                }
 
              ]
 
            },
 
            "legendX": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "legendY": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "title": {
 
              "$ref": "#/refs/textOrSignal"
 
            },
 
            "titleAlign": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "left",
 
                    "right",
 
                    "center"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/alignValue"
 
                }
 
              ]
 
            },
 
            "titleAnchor": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    null,
 
                    "start",
 
                    "middle",
 
                    "end"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/anchorValue"
 
                }
 
              ]
 
            },
 
            "titleBaseline": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "top",
 
                    "middle",
 
                    "bottom",
 
                    "alphabetic",
 
                    "line-top",
 
                    "line-bottom"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/baselineValue"
 
                }
 
              ]
 
            },
 
            "titleColor": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/colorValue"
 
                }
 
              ]
 
            },
 
            "titleFont": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "titleFontSize": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "titleFontStyle": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "titleFontWeight": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    null,
 
                    "normal",
 
                    "bold",
 
                    "lighter",
 
                    "bolder",
 
                    "100",
 
                    "200",
 
                    "300",
 
                    "400",
 
                    "500",
 
                    "600",
 
                    "700",
 
                    "800",
 
                    "900",
 
                    100,
 
                    200,
 
                    300,
 
                    400,
 
                    500,
 
                    600,
 
                    700,
 
                    800,
 
                    900
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/fontWeightValue"
 
                }
 
              ]
 
            },
 
            "titleLimit": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "titleLineHeight": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "titleOpacity": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "titleOrient": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "left",
 
                    "right",
 
                    "top",
 
                    "bottom"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/orientValue"
 
                }
 
              ]
 
            },
 
            "titlePadding": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "gradientLength": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "gradientOpacity": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "gradientStrokeColor": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/colorValue"
 
                }
 
              ]
 
            },
 
            "gradientStrokeWidth": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "gradientThickness": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "clipHeight": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "columns": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "columnPadding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "rowPadding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "gridAlign": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "all",
 
                    "each",
 
                    "none"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "symbolDash": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "type": "number"
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/arrayValue"
 
                }
 
              ]
 
            },
 
            "symbolDashOffset": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "symbolFillColor": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/colorValue"
 
                }
 
              ]
 
            },
 
            "symbolOffset": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "symbolOpacity": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "symbolSize": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "symbolStrokeColor": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/colorValue"
 
                }
 
              ]
 
            },
 
            "symbolStrokeWidth": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "symbolType": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "format": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "year": {
 
                      "type": "string"
 
                    },
 
                    "quarter": {
 
                      "type": "string"
 
                    },
 
                    "month": {
 
                      "type": "string"
 
                    },
 
                    "date": {
 
                      "type": "string"
 
                    },
 
                    "week": {
 
                      "type": "string"
 
                    },
 
                    "day": {
 
                      "type": "string"
 
                    },
 
                    "hours": {
 
                      "type": "string"
 
                    },
 
                    "minutes": {
 
                      "type": "string"
 
                    },
 
                    "seconds": {
 
                      "type": "string"
 
                    },
 
                    "milliseconds": {
 
                      "type": "string"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "formatType": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "number",
 
                    "time",
 
                    "utc"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "labelAlign": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "left",
 
                    "right",
 
                    "center"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/alignValue"
 
                }
 
              ]
 
            },
 
            "labelBaseline": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "top",
 
                    "middle",
 
                    "bottom",
 
                    "alphabetic",
 
                    "line-top",
 
                    "line-bottom"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/baselineValue"
 
                }
 
              ]
 
            },
 
            "labelColor": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/colorValue"
 
                }
 
              ]
 
            },
 
            "labelFont": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "labelFontSize": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "labelFontStyle": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "labelFontWeight": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    null,
 
                    "normal",
 
                    "bold",
 
                    "lighter",
 
                    "bolder",
 
                    "100",
 
                    "200",
 
                    "300",
 
                    "400",
 
                    "500",
 
                    "600",
 
                    "700",
 
                    "800",
 
                    "900",
 
                    100,
 
                    200,
 
                    300,
 
                    400,
 
                    500,
 
                    600,
 
                    700,
 
                    800,
 
                    900
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/fontWeightValue"
 
                }
 
              ]
 
            },
 
            "labelLimit": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "labelOffset": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "labelOpacity": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "labelOverlap": {
 
              "$ref": "#/refs/labelOverlap"
 
            },
 
            "labelSeparation": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "encode": {
 
              "type": "object",
 
              "properties": {
 
                "title": {
 
                  "$ref": "#/defs/guideEncode"
 
                },
 
                "labels": {
 
                  "$ref": "#/defs/guideEncode"
 
                },
 
                "legend": {
 
                  "$ref": "#/defs/guideEncode"
 
                },
 
                "entries": {
 
                  "$ref": "#/defs/guideEncode"
 
                },
 
                "symbols": {
 
                  "$ref": "#/defs/guideEncode"
 
                },
 
                "gradient": {
 
                  "$ref": "#/defs/guideEncode"
 
                }
 
              },
 
              "additionalProperties": false
 
            }
 
          },
 
          "additionalProperties": false
 
        },
 
        {
 
          "anyOf": [
 
            {
 
              "type": "object",
 
              "required": [
 
                "size"
 
              ]
 
            },
 
            {
 
              "type": "object",
 
              "required": [
 
                "shape"
 
              ]
 
            },
 
            {
 
              "type": "object",
 
              "required": [
 
                "fill"
 
              ]
 
            },
 
            {
 
              "type": "object",
 
              "required": [
 
                "stroke"
 
              ]
 
            },
 
            {
 
              "type": "object",
 
              "required": [
 
                "opacity"
 
              ]
 
            },
 
            {
 
              "type": "object",
 
              "required": [
 
                "strokeDash"
 
              ]
 
            },
 
            {
 
              "type": "object",
 
              "required": [
 
                "strokeWidth"
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "mark": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "$ref": "#/refs/marktype"
 
        },
 
        "role": {
 
          "type": "string"
 
        },
 
        "name": {
 
          "type": "string"
 
        },
 
        "description": {
 
          "type": "string"
 
        },
 
        "aria": {
 
          "type": "boolean"
 
        },
 
        "style": {
 
          "$ref": "#/refs/style"
 
        },
 
        "key": {
 
          "type": "string"
 
        },
 
        "clip": {
 
          "$ref": "#/refs/markclip"
 
        },
 
        "sort": {
 
          "$ref": "#/refs/compare"
 
        },
 
        "interactive": {
 
          "$ref": "#/refs/booleanOrSignal"
 
        },
 
        "encode": {
 
          "$ref": "#/defs/encode"
 
        },
 
        "transform": {
 
          "type": "array",
 
          "items": {
 
            "$ref": "#/defs/transformMark"
 
          }
 
        },
 
        "on": {
 
          "$ref": "#/defs/onMarkTrigger"
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ]
 
    },
 
    "markGroup": {
 
      "allOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "group"
 
              ]
 
            },
 
            "from": {
 
              "oneOf": [
 
                {
 
                  "$ref": "#/refs/from"
 
                },
 
                {
 
                  "$ref": "#/refs/facet"
 
                }
 
              ]
 
            }
 
          },
 
          "required": [
 
            "type"
 
          ]
 
        },
 
        {
 
          "$ref": "#/defs/mark"
 
        },
 
        {
 
          "$ref": "#/defs/scope"
 
        }
 
      ]
 
    },
 
    "markVisual": {
 
      "allOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "not": {
 
                "enum": [
 
                  "group"
 
                ]
 
              }
 
            },
 
            "from": {
 
              "$ref": "#/refs/from"
 
            }
 
          }
 
        },
 
        {
 
          "$ref": "#/defs/mark"
 
        }
 
      ]
 
    },
 
    "listener": {
 
      "oneOf": [
 
        {
 
          "$ref": "#/refs/signal"
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "scale": {
 
              "type": "string"
 
            }
 
          },
 
          "required": [
 
            "scale"
 
          ]
 
        },
 
        {
 
          "$ref": "#/defs/stream"
 
        }
 
      ]
 
    },
 
    "onEvents": {
 
      "type": "array",
 
      "items": {
 
        "allOf": [
 
          {
 
            "type": "object",
 
            "properties": {
 
              "events": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/selector"
 
                  },
 
                  {
 
                    "$ref": "#/defs/listener"
 
                  },
 
                  {
 
                    "type": "array",
 
                    "items": {
 
                      "$ref": "#/defs/listener"
 
                    },
 
                    "minItems": 1
 
                  }
 
                ]
 
              },
 
              "force": {
 
                "type": "boolean"
 
              }
 
            },
 
            "required": [
 
              "events"
 
            ]
 
          },
 
          {
 
            "oneOf": [
 
              {
 
                "type": "object",
 
                "properties": {
 
                  "encode": {
 
                    "type": "string"
 
                  }
 
                },
 
                "required": [
 
                  "encode"
 
                ]
 
              },
 
              {
 
                "type": "object",
 
                "properties": {
 
                  "update": {
 
                    "oneOf": [
 
                      {
 
                        "$ref": "#/refs/exprString"
 
                      },
 
                      {
 
                        "$ref": "#/refs/expr"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "object",
 
                        "properties": {
 
                          "value": {}
 
                        },
 
                        "required": [
 
                          "value"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                },
 
                "required": [
 
                  "update"
 
                ]
 
              }
 
            ]
 
          }
 
        ]
 
      }
 
    },
 
    "onTrigger": {
 
      "type": "array",
 
      "items": {
 
        "type": "object",
 
        "properties": {
 
          "trigger": {
 
            "$ref": "#/refs/exprString"
 
          },
 
          "insert": {
 
            "$ref": "#/refs/exprString"
 
          },
 
          "remove": {
 
            "oneOf": [
 
              {
 
                "type": "boolean"
 
              },
 
              {
 
                "$ref": "#/refs/exprString"
 
              }
 
            ]
 
          },
 
          "toggle": {
 
            "$ref": "#/refs/exprString"
 
          },
 
          "modify": {
 
            "$ref": "#/refs/exprString"
 
          },
 
          "values": {
 
            "$ref": "#/refs/exprString"
 
          }
 
        },
 
        "required": [
 
          "trigger"
 
        ],
 
        "additionalProperties": false
 
      }
 
    },
 
    "onMarkTrigger": {
 
      "type": "array",
 
      "items": {
 
        "type": "object",
 
        "properties": {
 
          "trigger": {
 
            "$ref": "#/refs/exprString"
 
          },
 
          "modify": {
 
            "$ref": "#/refs/exprString"
 
          },
 
          "values": {
 
            "$ref": "#/refs/exprString"
 
          }
 
        },
 
        "required": [
 
          "trigger"
 
        ],
 
        "additionalProperties": false
 
      }
 
    },
 
    "padding": {
 
      "oneOf": [
 
        {
 
          "type": "number"
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "top": {
 
              "type": "number"
 
            },
 
            "bottom": {
 
              "type": "number"
 
            },
 
            "left": {
 
              "type": "number"
 
            },
 
            "right": {
 
              "type": "number"
 
            }
 
          },
 
          "additionalProperties": false
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "projection": {
 
      "type": "object",
 
      "properties": {
 
        "name": {
 
          "type": "string"
 
        },
 
        "type": {
 
          "$ref": "#/refs/stringOrSignal"
 
        },
 
        "clipAngle": {
 
          "$ref": "#/refs/numberOrSignal"
 
        },
 
        "clipExtent": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "type": "array",
 
                    "items": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "minItems": 2,
 
                    "maxItems": 2
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              },
 
              "minItems": 2,
 
              "maxItems": 2
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "scale": {
 
          "$ref": "#/refs/numberOrSignal"
 
        },
 
        "translate": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/refs/numberOrSignal"
 
              },
 
              "minItems": 2,
 
              "maxItems": 2
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "center": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/refs/numberOrSignal"
 
              },
 
              "minItems": 2,
 
              "maxItems": 2
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "rotate": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/refs/numberOrSignal"
 
              },
 
              "minItems": 2,
 
              "maxItems": 3
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "parallels": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/refs/numberOrSignal"
 
              },
 
              "minItems": 2,
 
              "maxItems": 2
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "precision": {
 
          "$ref": "#/refs/numberOrSignal"
 
        },
 
        "pointRadius": {
 
          "$ref": "#/refs/numberOrSignal"
 
        },
 
        "fit": {
 
          "oneOf": [
 
            {
 
              "type": "object"
 
            },
 
            {
 
              "type": "array"
 
            }
 
          ]
 
        },
 
        "extent": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "type": "array",
 
                    "items": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "minItems": 2,
 
                    "maxItems": 2
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              },
 
              "minItems": 2,
 
              "maxItems": 2
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/refs/numberOrSignal"
 
              },
 
              "minItems": 2,
 
              "maxItems": 2
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "name"
 
      ],
 
      "additionalProperties": true
 
    },
 
    "scale": {
 
      "oneOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "identity"
 
              ]
 
            },
 
            "nice": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "ordinal"
 
              ]
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "scheme": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "string"
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          }
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "count": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "extent": {
 
                      "oneOf": [
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/numberOrSignal"
 
                          },
 
                          "numItems": 2
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "required": [
 
                    "scheme"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "oneOf": [
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "data": {
 
                          "type": "string"
 
                        },
 
                        "field": {
 
                          "$ref": "#/refs/stringOrSignal"
 
                        },
 
                        "sort": {
 
                          "oneOf": [
 
                            {
 
                              "type": "boolean"
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {
 
                                "field": {
 
                                  "$ref": "#/refs/stringOrSignal"
 
                                },
 
                                "op": {
 
                                  "$ref": "#/refs/stringOrSignal"
 
                                },
 
                                "order": {
 
                                  "$ref": "#/refs/sortOrder"
 
                                }
 
                              },
 
                              "additionalProperties": false
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "data",
 
                        "field"
 
                      ],
 
                      "additionalProperties": false
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "data": {
 
                          "type": "string"
 
                        },
 
                        "fields": {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/stringOrSignal"
 
                          },
 
                          "minItems": 1
 
                        },
 
                        "sort": {
 
                          "oneOf": [
 
                            {
 
                              "type": "boolean"
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {
 
                                "op": {
 
                                  "enum": [
 
                                    "count"
 
                                  ]
 
                                },
 
                                "order": {
 
                                  "$ref": "#/refs/sortOrder"
 
                                }
 
                              },
 
                              "additionalProperties": false
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {
 
                                "field": {
 
                                  "$ref": "#/refs/stringOrSignal"
 
                                },
 
                                "op": {
 
                                  "enum": [
 
                                    "count",
 
                                    "min",
 
                                    "max"
 
                                  ]
 
                                },
 
                                "order": {
 
                                  "$ref": "#/refs/sortOrder"
 
                                }
 
                              },
 
                              "required": [
 
                                "field",
 
                                "op"
 
                              ],
 
                              "additionalProperties": false
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "data",
 
                        "fields"
 
                      ],
 
                      "additionalProperties": false
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "fields": {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "object",
 
                                "properties": {
 
                                  "data": {
 
                                    "type": "string"
 
                                  },
 
                                  "field": {
 
                                    "$ref": "#/refs/stringOrSignal"
 
                                  }
 
                                },
 
                                "required": [
 
                                  "data",
 
                                  "field"
 
                                ],
 
                                "additionalProperties": false
 
                              },
 
                              {
 
                                "type": "array",
 
                                "items": {
 
                                  "oneOf": [
 
                                    {
 
                                      "type": "string"
 
                                    },
 
                                    {
 
                                      "type": "number"
 
                                    },
 
                                    {
 
                                      "type": "boolean"
 
                                    }
 
                                  ]
 
                                }
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          },
 
                          "minItems": 1
 
                        },
 
                        "sort": {
 
                          "oneOf": [
 
                            {
 
                              "type": "boolean"
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {
 
                                "op": {
 
                                  "enum": [
 
                                    "count"
 
                                  ]
 
                                },
 
                                "order": {
 
                                  "$ref": "#/refs/sortOrder"
 
                                }
 
                              },
 
                              "additionalProperties": false
 
                            },
 
                            {
 
                              "type": "object",
 
                              "properties": {
 
                                "field": {
 
                                  "$ref": "#/refs/stringOrSignal"
 
                                },
 
                                "op": {
 
                                  "enum": [
 
                                    "count",
 
                                    "min",
 
                                    "max"
 
                                  ]
 
                                },
 
                                "order": {
 
                                  "$ref": "#/refs/sortOrder"
 
                                }
 
                              },
 
                              "required": [
 
                                "field",
 
                                "op"
 
                              ],
 
                              "additionalProperties": false
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "fields"
 
                      ],
 
                      "additionalProperties": false
 
                    }
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "interpolate": {
 
              "$ref": "#/refs/scaleInterpolate"
 
            },
 
            "domainImplicit": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "band"
 
              ]
 
            },
 
            "paddingInner": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "step": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    }
 
                  },
 
                  "required": [
 
                    "step"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "padding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "paddingOuter": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "align": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "point"
 
              ]
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "step": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    }
 
                  },
 
                  "required": [
 
                    "step"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "padding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "paddingOuter": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "align": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "quantize",
 
                "threshold"
 
              ]
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "scheme": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "string"
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          }
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "count": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "extent": {
 
                      "oneOf": [
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/numberOrSignal"
 
                          },
 
                          "numItems": 2
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "required": [
 
                    "scheme"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "interpolate": {
 
              "$ref": "#/refs/scaleInterpolate"
 
            },
 
            "nice": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "zero": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "quantile"
 
              ]
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "scheme": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "string"
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          }
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "count": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "extent": {
 
                      "oneOf": [
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/numberOrSignal"
 
                          },
 
                          "numItems": 2
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "required": [
 
                    "scheme"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "interpolate": {
 
              "$ref": "#/refs/scaleInterpolate"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "bin-ordinal"
 
              ]
 
            },
 
            "bins": {
 
              "$ref": "#/refs/scaleBins"
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "scheme": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "string"
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          }
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "count": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "extent": {
 
                      "oneOf": [
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/numberOrSignal"
 
                          },
 
                          "numItems": 2
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "required": [
 
                    "scheme"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "interpolate": {
 
              "$ref": "#/refs/scaleInterpolate"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "time",
 
                "utc"
 
              ]
 
            },
 
            "nice": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "enum": [
 
                    "millisecond",
 
                    "second",
 
                    "minute",
 
                    "hour",
 
                    "day",
 
                    "week",
 
                    "month",
 
                    "year"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "interval": {
 
                      "oneOf": [
 
                        {
 
                          "enum": [
 
                            "millisecond",
 
                            "second",
 
                            "minute",
 
                            "hour",
 
                            "day",
 
                            "week",
 
                            "month",
 
                            "year"
 
                          ]
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "step": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    }
 
                  },
 
                  "required": [
 
                    "interval"
 
                  ],
 
                  "additionalProperties": false
 
                }
 
              ]
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "scheme": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "string"
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          }
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "count": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "extent": {
 
                      "oneOf": [
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/numberOrSignal"
 
                          },
 
                          "numItems": 2
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "required": [
 
                    "scheme"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "bins": {
 
              "$ref": "#/refs/scaleBins"
 
            },
 
            "interpolate": {
 
              "$ref": "#/refs/scaleInterpolate"
 
            },
 
            "clamp": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "padding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "linear",
 
                "sqrt",
 
                "sequential"
 
              ]
 
            },
 
            "nice": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "zero": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "scheme": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "string"
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          }
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "count": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "extent": {
 
                      "oneOf": [
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/numberOrSignal"
 
                          },
 
                          "numItems": 2
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "required": [
 
                    "scheme"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "bins": {
 
              "$ref": "#/refs/scaleBins"
 
            },
 
            "interpolate": {
 
              "$ref": "#/refs/scaleInterpolate"
 
            },
 
            "clamp": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "padding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "log"
 
              ]
 
            },
 
            "base": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "nice": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "zero": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "scheme": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "string"
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          }
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "count": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "extent": {
 
                      "oneOf": [
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/numberOrSignal"
 
                          },
 
                          "numItems": 2
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "required": [
 
                    "scheme"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "bins": {
 
              "$ref": "#/refs/scaleBins"
 
            },
 
            "interpolate": {
 
              "$ref": "#/refs/scaleInterpolate"
 
            },
 
            "clamp": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "padding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "pow"
 
              ]
 
            },
 
            "exponent": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "nice": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "zero": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "scheme": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "string"
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          }
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "count": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "extent": {
 
                      "oneOf": [
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/numberOrSignal"
 
                          },
 
                          "numItems": 2
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "required": [
 
                    "scheme"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "bins": {
 
              "$ref": "#/refs/scaleBins"
 
            },
 
            "interpolate": {
 
              "$ref": "#/refs/scaleInterpolate"
 
            },
 
            "clamp": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "padding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "enum": [
 
                "symlog"
 
              ]
 
            },
 
            "constant": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "nice": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "zero": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "range": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "width",
 
                    "height",
 
                    "symbol",
 
                    "category",
 
                    "ordinal",
 
                    "ramp",
 
                    "diverging",
 
                    "heatmap"
 
                  ]
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "scheme": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "oneOf": [
 
                              {
 
                                "type": "string"
 
                              },
 
                              {
 
                                "$ref": "#/refs/signal"
 
                              }
 
                            ]
 
                          }
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    },
 
                    "count": {
 
                      "$ref": "#/refs/numberOrSignal"
 
                    },
 
                    "extent": {
 
                      "oneOf": [
 
                        {
 
                          "type": "array",
 
                          "items": {
 
                            "$ref": "#/refs/numberOrSignal"
 
                          },
 
                          "numItems": 2
 
                        },
 
                        {
 
                          "$ref": "#/refs/signal"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  "required": [
 
                    "scheme"
 
                  ],
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "bins": {
 
              "$ref": "#/refs/scaleBins"
 
            },
 
            "interpolate": {
 
              "$ref": "#/refs/scaleInterpolate"
 
            },
 
            "clamp": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "padding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "domain": {
 
              "oneOf": [
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "oneOf": [
 
                      {
 
                        "type": "null"
 
                      },
 
                      {
 
                        "type": "boolean"
 
                      },
 
                      {
 
                        "type": "string"
 
                      },
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "type": "array",
 
                        "items": {
 
                          "$ref": "#/refs/numberOrSignal"
 
                        }
 
                      }
 
                    ]
 
                  }
 
                },
 
                {
 
                  "$ref": "#/refs/scaleData"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "domainMin": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMax": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainMid": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "domainRaw": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "array"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "reverse": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            },
 
            "round": {
 
              "$ref": "#/refs/booleanOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type",
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "scope": {
 
      "type": "object",
 
      "properties": {
 
        "encode": {
 
          "$ref": "#/defs/encode"
 
        },
 
        "layout": {
 
          "$ref": "#/defs/layout"
 
        },
 
        "signals": {
 
          "type": "array",
 
          "items": {
 
            "$ref": "#/defs/signal"
 
          }
 
        },
 
        "data": {
 
          "type": "array",
 
          "items": {
 
            "$ref": "#/defs/data"
 
          }
 
        },
 
        "scales": {
 
          "type": "array",
 
          "items": {
 
            "$ref": "#/defs/scale"
 
          }
 
        },
 
        "projections": {
 
          "type": "array",
 
          "items": {
 
            "$ref": "#/defs/projection"
 
          }
 
        },
 
        "axes": {
 
          "type": "array",
 
          "items": {
 
            "$ref": "#/defs/axis"
 
          }
 
        },
 
        "legends": {
 
          "type": "array",
 
          "items": {
 
            "$ref": "#/defs/legend"
 
          }
 
        },
 
        "title": {
 
          "$ref": "#/defs/title"
 
        },
 
        "marks": {
 
          "type": "array",
 
          "items": {
 
            "oneOf": [
 
              {
 
                "$ref": "#/defs/markGroup"
 
              },
 
              {
 
                "$ref": "#/defs/markVisual"
 
              }
 
            ]
 
          }
 
        },
 
        "usermeta": {
 
          "type": "object"
 
        }
 
      }
 
    },
 
    "signalName": {
 
      "type": "string",
 
      "not": {
 
        "enum": [
 
          "parent",
 
          "datum",
 
          "event",
 
          "item"
 
        ]
 
      }
 
    },
 
    "signal": {
 
      "oneOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "name": {
 
              "$ref": "#/defs/signalName"
 
            },
 
            "description": {
 
              "type": "string"
 
            },
 
            "push": {
 
              "enum": [
 
                "outer"
 
              ]
 
            },
 
            "on": {
 
              "$ref": "#/defs/onEvents"
 
            }
 
          },
 
          "required": [
 
            "name",
 
            "push"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "name": {
 
              "$ref": "#/defs/signalName"
 
            },
 
            "description": {
 
              "type": "string"
 
            },
 
            "value": {},
 
            "react": {
 
              "type": "boolean",
 
              "default": true
 
            },
 
            "update": {
 
              "$ref": "#/refs/exprString"
 
            },
 
            "on": {
 
              "$ref": "#/defs/onEvents"
 
            },
 
            "bind": {
 
              "$ref": "#/defs/bind"
 
            }
 
          },
 
          "required": [
 
            "name"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "name": {
 
              "$ref": "#/defs/signalName"
 
            },
 
            "description": {
 
              "type": "string"
 
            },
 
            "value": {},
 
            "init": {
 
              "$ref": "#/refs/exprString"
 
            },
 
            "on": {
 
              "$ref": "#/defs/onEvents"
 
            },
 
            "bind": {
 
              "$ref": "#/defs/bind"
 
            }
 
          },
 
          "required": [
 
            "name",
 
            "init"
 
          ],
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "stream": {
 
      "allOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "between": {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/defs/stream"
 
              },
 
              "minItems": 2,
 
              "maxItems": 2
 
            },
 
            "marktype": {
 
              "type": "string"
 
            },
 
            "markname": {
 
              "type": "string"
 
            },
 
            "filter": {
 
              "oneOf": [
 
                {
 
                  "$ref": "#/refs/exprString"
 
                },
 
                {
 
                  "type": "array",
 
                  "items": {
 
                    "$ref": "#/refs/exprString"
 
                  },
 
                  "minItems": 1
 
                }
 
              ]
 
            },
 
            "throttle": {
 
              "type": "number"
 
            },
 
            "debounce": {
 
              "type": "number"
 
            },
 
            "consume": {
 
              "type": "boolean"
 
            }
 
          }
 
        },
 
        {
 
          "oneOf": [
 
            {
 
              "type": "object",
 
              "properties": {
 
                "type": {
 
                  "type": "string"
 
                },
 
                "source": {
 
                  "type": "string"
 
                }
 
              },
 
              "required": [
 
                "type"
 
              ]
 
            },
 
            {
 
              "type": "object",
 
              "properties": {
 
                "stream": {
 
                  "$ref": "#/defs/stream"
 
                }
 
              },
 
              "required": [
 
                "stream"
 
              ]
 
            },
 
            {
 
              "type": "object",
 
              "properties": {
 
                "merge": {
 
                  "type": "array",
 
                  "items": {
 
                    "$ref": "#/defs/stream"
 
                  },
 
                  "minItems": 1
 
                }
 
              },
 
              "required": [
 
                "merge"
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "title": {
 
      "oneOf": [
 
        {
 
          "type": "string"
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "orient": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "none",
 
                    "left",
 
                    "right",
 
                    "top",
 
                    "bottom"
 
                  ],
 
                  "default": "top"
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "anchor": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    null,
 
                    "start",
 
                    "middle",
 
                    "end"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/anchorValue"
 
                }
 
              ]
 
            },
 
            "frame": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "group",
 
                    "bounds"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "offset": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "aria": {
 
              "type": "boolean"
 
            },
 
            "limit": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "zindex": {
 
              "type": "number"
 
            },
 
            "align": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "left",
 
                    "right",
 
                    "center"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/alignValue"
 
                }
 
              ]
 
            },
 
            "angle": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "baseline": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "top",
 
                    "middle",
 
                    "bottom",
 
                    "alphabetic",
 
                    "line-top",
 
                    "line-bottom"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/baselineValue"
 
                }
 
              ]
 
            },
 
            "dx": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "dy": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "text": {
 
              "$ref": "#/refs/textOrSignal"
 
            },
 
            "color": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/colorValue"
 
                }
 
              ]
 
            },
 
            "font": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "fontSize": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "fontStyle": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "fontWeight": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    null,
 
                    "normal",
 
                    "bold",
 
                    "lighter",
 
                    "bolder",
 
                    "100",
 
                    "200",
 
                    "300",
 
                    "400",
 
                    "500",
 
                    "600",
 
                    "700",
 
                    "800",
 
                    "900",
 
                    100,
 
                    200,
 
                    300,
 
                    400,
 
                    500,
 
                    600,
 
                    700,
 
                    800,
 
                    900
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/fontWeightValue"
 
                }
 
              ]
 
            },
 
            "lineHeight": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "subtitle": {
 
              "$ref": "#/refs/textOrSignal"
 
            },
 
            "subtitleColor": {
 
              "oneOf": [
 
                {
 
                  "type": "null"
 
                },
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/colorValue"
 
                }
 
              ]
 
            },
 
            "subtitleFont": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "subtitleFontSize": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "subtitleFontStyle": {
 
              "oneOf": [
 
                {
 
                  "type": "string"
 
                },
 
                {
 
                  "$ref": "#/refs/stringValue"
 
                }
 
              ]
 
            },
 
            "subtitleFontWeight": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    null,
 
                    "normal",
 
                    "bold",
 
                    "lighter",
 
                    "bolder",
 
                    "100",
 
                    "200",
 
                    "300",
 
                    "400",
 
                    "500",
 
                    "600",
 
                    "700",
 
                    "800",
 
                    "900",
 
                    100,
 
                    200,
 
                    300,
 
                    400,
 
                    500,
 
                    600,
 
                    700,
 
                    800,
 
                    900
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/fontWeightValue"
 
                }
 
              ]
 
            },
 
            "subtitleLineHeight": {
 
              "oneOf": [
 
                {
 
                  "type": "number"
 
                },
 
                {
 
                  "$ref": "#/refs/numberValue"
 
                }
 
              ]
 
            },
 
            "subtitlePadding": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "encode": {
 
              "anyOf": [
 
                {
 
                  "type": "object",
 
                  "additionalProperties": false,
 
                  "patternProperties": {
 
                    "^(?!interactive|name|style).+$": {
 
                      "$ref": "#/defs/encodeEntry"
 
                    }
 
                  }
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "group": {
 
                      "$ref": "#/defs/guideEncode"
 
                    },
 
                    "title": {
 
                      "$ref": "#/defs/guideEncode"
 
                    },
 
                    "subtitle": {
 
                      "$ref": "#/defs/guideEncode"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            },
 
            "name": {
 
              "type": "string"
 
            },
 
            "interactive": {
 
              "type": "boolean"
 
            },
 
            "style": {
 
              "$ref": "#/refs/style"
 
            }
 
          },
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "transform": {
 
      "oneOf": [
 
        {
 
          "$ref": "#/defs/crossfilterTransform"
 
        },
 
        {
 
          "$ref": "#/defs/resolvefilterTransform"
 
        },
 
        {
 
          "$ref": "#/defs/linkpathTransform"
 
        },
 
        {
 
          "$ref": "#/defs/pieTransform"
 
        },
 
        {
 
          "$ref": "#/defs/stackTransform"
 
        },
 
        {
 
          "$ref": "#/defs/forceTransform"
 
        },
 
        {
 
          "$ref": "#/defs/contourTransform"
 
        },
 
        {
 
          "$ref": "#/defs/geojsonTransform"
 
        },
 
        {
 
          "$ref": "#/defs/geopathTransform"
 
        },
 
        {
 
          "$ref": "#/defs/geopointTransform"
 
        },
 
        {
 
          "$ref": "#/defs/geoshapeTransform"
 
        },
 
        {
 
          "$ref": "#/defs/graticuleTransform"
 
        },
 
        {
 
          "$ref": "#/defs/heatmapTransform"
 
        },
 
        {
 
          "$ref": "#/defs/isocontourTransform"
 
        },
 
        {
 
          "$ref": "#/defs/kde2dTransform"
 
        },
 
        {
 
          "$ref": "#/defs/nestTransform"
 
        },
 
        {
 
          "$ref": "#/defs/packTransform"
 
        },
 
        {
 
          "$ref": "#/defs/partitionTransform"
 
        },
 
        {
 
          "$ref": "#/defs/stratifyTransform"
 
        },
 
        {
 
          "$ref": "#/defs/treeTransform"
 
        },
 
        {
 
          "$ref": "#/defs/treelinksTransform"
 
        },
 
        {
 
          "$ref": "#/defs/treemapTransform"
 
        },
 
        {
 
          "$ref": "#/defs/labelTransform"
 
        },
 
        {
 
          "$ref": "#/defs/loessTransform"
 
        },
 
        {
 
          "$ref": "#/defs/regressionTransform"
 
        },
 
        {
 
          "$ref": "#/defs/aggregateTransform"
 
        },
 
        {
 
          "$ref": "#/defs/binTransform"
 
        },
 
        {
 
          "$ref": "#/defs/collectTransform"
 
        },
 
        {
 
          "$ref": "#/defs/countpatternTransform"
 
        },
 
        {
 
          "$ref": "#/defs/crossTransform"
 
        },
 
        {
 
          "$ref": "#/defs/densityTransform"
 
        },
 
        {
 
          "$ref": "#/defs/dotbinTransform"
 
        },
 
        {
 
          "$ref": "#/defs/extentTransform"
 
        },
 
        {
 
          "$ref": "#/defs/filterTransform"
 
        },
 
        {
 
          "$ref": "#/defs/flattenTransform"
 
        },
 
        {
 
          "$ref": "#/defs/foldTransform"
 
        },
 
        {
 
          "$ref": "#/defs/formulaTransform"
 
        },
 
        {
 
          "$ref": "#/defs/imputeTransform"
 
        },
 
        {
 
          "$ref": "#/defs/joinaggregateTransform"
 
        },
 
        {
 
          "$ref": "#/defs/kdeTransform"
 
        },
 
        {
 
          "$ref": "#/defs/lookupTransform"
 
        },
 
        {
 
          "$ref": "#/defs/pivotTransform"
 
        },
 
        {
 
          "$ref": "#/defs/projectTransform"
 
        },
 
        {
 
          "$ref": "#/defs/quantileTransform"
 
        },
 
        {
 
          "$ref": "#/defs/sampleTransform"
 
        },
 
        {
 
          "$ref": "#/defs/sequenceTransform"
 
        },
 
        {
 
          "$ref": "#/defs/timeunitTransform"
 
        },
 
        {
 
          "$ref": "#/defs/windowTransform"
 
        },
 
        {
 
          "$ref": "#/defs/identifierTransform"
 
        },
 
        {
 
          "$ref": "#/defs/voronoiTransform"
 
        },
 
        {
 
          "$ref": "#/defs/wordcloudTransform"
 
        }
 
      ]
 
    },
 
    "transformMark": {
 
      "oneOf": [
 
        {
 
          "$ref": "#/defs/crossfilterTransform"
 
        },
 
        {
 
          "$ref": "#/defs/resolvefilterTransform"
 
        },
 
        {
 
          "$ref": "#/defs/linkpathTransform"
 
        },
 
        {
 
          "$ref": "#/defs/pieTransform"
 
        },
 
        {
 
          "$ref": "#/defs/stackTransform"
 
        },
 
        {
 
          "$ref": "#/defs/forceTransform"
 
        },
 
        {
 
          "$ref": "#/defs/geojsonTransform"
 
        },
 
        {
 
          "$ref": "#/defs/geopathTransform"
 
        },
 
        {
 
          "$ref": "#/defs/geopointTransform"
 
        },
 
        {
 
          "$ref": "#/defs/geoshapeTransform"
 
        },
 
        {
 
          "$ref": "#/defs/heatmapTransform"
 
        },
 
        {
 
          "$ref": "#/defs/packTransform"
 
        },
 
        {
 
          "$ref": "#/defs/partitionTransform"
 
        },
 
        {
 
          "$ref": "#/defs/stratifyTransform"
 
        },
 
        {
 
          "$ref": "#/defs/treeTransform"
 
        },
 
        {
 
          "$ref": "#/defs/treemapTransform"
 
        },
 
        {
 
          "$ref": "#/defs/labelTransform"
 
        },
 
        {
 
          "$ref": "#/defs/binTransform"
 
        },
 
        {
 
          "$ref": "#/defs/collectTransform"
 
        },
 
        {
 
          "$ref": "#/defs/dotbinTransform"
 
        },
 
        {
 
          "$ref": "#/defs/extentTransform"
 
        },
 
        {
 
          "$ref": "#/defs/formulaTransform"
 
        },
 
        {
 
          "$ref": "#/defs/joinaggregateTransform"
 
        },
 
        {
 
          "$ref": "#/defs/lookupTransform"
 
        },
 
        {
 
          "$ref": "#/defs/sampleTransform"
 
        },
 
        {
 
          "$ref": "#/defs/timeunitTransform"
 
        },
 
        {
 
          "$ref": "#/defs/windowTransform"
 
        },
 
        {
 
          "$ref": "#/defs/identifierTransform"
 
        },
 
        {
 
          "$ref": "#/defs/voronoiTransform"
 
        },
 
        {
 
          "$ref": "#/defs/wordcloudTransform"
 
        }
 
      ]
 
    },
 
    "crossfilterTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "crossfilter"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "query": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {}
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "fields",
 
        "query"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "resolvefilterTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "resolvefilter"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "ignore": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "filter": {}
 
      },
 
      "required": [
 
        "type",
 
        "ignore",
 
        "filter"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "linkpathTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "linkpath"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "sourceX": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ],
 
          "default": "source.x"
 
        },
 
        "sourceY": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ],
 
          "default": "source.y"
 
        },
 
        "targetX": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ],
 
          "default": "target.x"
 
        },
 
        "targetY": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ],
 
          "default": "target.y"
 
        },
 
        "orient": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "horizontal",
 
                "vertical",
 
                "radial"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "vertical"
 
        },
 
        "shape": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "line",
 
                "arc",
 
                "curve",
 
                "diagonal",
 
                "orthogonal"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "line"
 
        },
 
        "require": {
 
          "$ref": "#/refs/signal"
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "path"
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "pieTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "pie"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "startAngle": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "endAngle": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 6.283185307179586
 
        },
 
        "sort": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            "startAngle",
 
            "endAngle"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "stackTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "stack"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "sort": {
 
          "$ref": "#/refs/compare"
 
        },
 
        "offset": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "zero",
 
                "center",
 
                "normalize"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "zero"
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            "y0",
 
            "y1"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "forceTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "force"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "static": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "restart": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "iterations": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 300
 
        },
 
        "alpha": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 1
 
        },
 
        "alphaMin": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 0.001
 
        },
 
        "alphaTarget": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "velocityDecay": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 0.4
 
        },
 
        "forces": {
 
          "type": "array",
 
          "items": {
 
            "oneOf": [
 
              {
 
                "type": "object",
 
                "properties": {
 
                  "force": {
 
                    "enum": [
 
                      "center"
 
                    ]
 
                  },
 
                  "x": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ]
 
                  },
 
                  "y": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ]
 
                  }
 
                },
 
                "required": [
 
                  "force"
 
                ],
 
                "additionalProperties": false
 
              },
 
              {
 
                "type": "object",
 
                "properties": {
 
                  "force": {
 
                    "enum": [
 
                      "collide"
 
                    ]
 
                  },
 
                  "radius": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "$ref": "#/refs/expr"
 
                      },
 
                      {
 
                        "$ref": "#/refs/paramField"
 
                      }
 
                    ]
 
                  },
 
                  "strength": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ],
 
                    "default": 0.7
 
                  },
 
                  "iterations": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ],
 
                    "default": 1
 
                  }
 
                },
 
                "required": [
 
                  "force"
 
                ],
 
                "additionalProperties": false
 
              },
 
              {
 
                "type": "object",
 
                "properties": {
 
                  "force": {
 
                    "enum": [
 
                      "nbody"
 
                    ]
 
                  },
 
                  "strength": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ],
 
                    "default": -30
 
                  },
 
                  "theta": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ],
 
                    "default": 0.9
 
                  },
 
                  "distanceMin": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ],
 
                    "default": 1
 
                  },
 
                  "distanceMax": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ]
 
                  }
 
                },
 
                "required": [
 
                  "force"
 
                ],
 
                "additionalProperties": false
 
              },
 
              {
 
                "type": "object",
 
                "properties": {
 
                  "force": {
 
                    "enum": [
 
                      "link"
 
                    ]
 
                  },
 
                  "links": {
 
                    "type": "string"
 
                  },
 
                  "id": {
 
                    "oneOf": [
 
                      {
 
                        "$ref": "#/refs/scaleField"
 
                      },
 
                      {
 
                        "$ref": "#/refs/paramField"
 
                      },
 
                      {
 
                        "$ref": "#/refs/expr"
 
                      }
 
                    ]
 
                  },
 
                  "distance": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "$ref": "#/refs/expr"
 
                      },
 
                      {
 
                        "$ref": "#/refs/paramField"
 
                      }
 
                    ],
 
                    "default": 30
 
                  },
 
                  "strength": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      },
 
                      {
 
                        "$ref": "#/refs/expr"
 
                      },
 
                      {
 
                        "$ref": "#/refs/paramField"
 
                      }
 
                    ]
 
                  },
 
                  "iterations": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ],
 
                    "default": 1
 
                  }
 
                },
 
                "required": [
 
                  "force"
 
                ],
 
                "additionalProperties": false
 
              },
 
              {
 
                "type": "object",
 
                "properties": {
 
                  "force": {
 
                    "enum": [
 
                      "x"
 
                    ]
 
                  },
 
                  "strength": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ],
 
                    "default": 0.1
 
                  },
 
                  "x": {
 
                    "oneOf": [
 
                      {
 
                        "$ref": "#/refs/scaleField"
 
                      },
 
                      {
 
                        "$ref": "#/refs/paramField"
 
                      },
 
                      {
 
                        "$ref": "#/refs/expr"
 
                      }
 
                    ]
 
                  }
 
                },
 
                "required": [
 
                  "force"
 
                ],
 
                "additionalProperties": false
 
              },
 
              {
 
                "type": "object",
 
                "properties": {
 
                  "force": {
 
                    "enum": [
 
                      "y"
 
                    ]
 
                  },
 
                  "strength": {
 
                    "anyOf": [
 
                      {
 
                        "type": "number"
 
                      },
 
                      {
 
                        "$ref": "#/refs/signal"
 
                      }
 
                    ],
 
                    "default": 0.1
 
                  },
 
                  "y": {
 
                    "oneOf": [
 
                      {
 
                        "$ref": "#/refs/scaleField"
 
                      },
 
                      {
 
                        "$ref": "#/refs/paramField"
 
                      },
 
                      {
 
                        "$ref": "#/refs/expr"
 
                      }
 
                    ]
 
                  }
 
                },
 
                "required": [
 
                  "force"
 
                ],
 
                "additionalProperties": false
 
              }
 
            ]
 
          }
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": [
 
            "x",
 
            "y",
 
            "vx",
 
            "vy"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "contourTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "contour"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "values": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "x": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "y": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "weight": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "cellSize": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "bandwidth": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "count": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "nice": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "thresholds": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "smooth": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": true
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "size"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "geojsonTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "geojson"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "geojson": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "geopathTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "geopath"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "projection": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "pointRadius": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "path"
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "geopointTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "geopoint"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "projection": {
 
          "type": "string"
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            "x",
 
            "y"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "projection",
 
        "fields"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "geoshapeTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "geoshape"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "projection": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ],
 
          "default": "datum"
 
        },
 
        "pointRadius": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "shape"
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "graticuleTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "graticule"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "extent": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {}
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "extentMajor": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {}
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "extentMinor": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {}
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "step": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "stepMajor": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            90,
 
            360
 
          ]
 
        },
 
        "stepMinor": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            10,
 
            10
 
          ]
 
        },
 
        "precision": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 2.5
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "heatmapTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "heatmap"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "color": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ]
 
        },
 
        "opacity": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ]
 
        },
 
        "resolve": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "shared",
 
                "independent"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "independent"
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "image"
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "isocontourTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "isocontour"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "thresholds": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "levels": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "nice": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "resolve": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "shared",
 
                "independent"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "independent"
 
        },
 
        "zero": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": true
 
        },
 
        "smooth": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": true
 
        },
 
        "scale": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ]
 
        },
 
        "translate": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "type": "null"
 
            }
 
          ],
 
          "default": "contour"
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "kde2dTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "kde2d"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "x": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "y": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "weight": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "cellSize": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "bandwidth": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "counts": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "grid"
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "size",
 
        "x",
 
        "y"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "nestTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "nest"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "keys": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "generate": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "packTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "pack"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "sort": {
 
          "$ref": "#/refs/compare"
 
        },
 
        "padding": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "radius": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 5,
 
          "minItems": 5,
 
          "default": [
 
            "x",
 
            "y",
 
            "r",
 
            "depth",
 
            "children"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "partitionTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "partition"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "sort": {
 
          "$ref": "#/refs/compare"
 
        },
 
        "padding": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "round": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 6,
 
          "minItems": 6,
 
          "default": [
 
            "x0",
 
            "y0",
 
            "x1",
 
            "y1",
 
            "depth",
 
            "children"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "stratifyTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "stratify"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "key": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "parentKey": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "key",
 
        "parentKey"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "treeTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "tree"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "sort": {
 
          "$ref": "#/refs/compare"
 
        },
 
        "method": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "tidy",
 
                "cluster"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "tidy"
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "nodeSize": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "separation": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": true
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 4,
 
          "minItems": 4,
 
          "default": [
 
            "x",
 
            "y",
 
            "depth",
 
            "children"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "treelinksTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "treelinks"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "treemapTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "treemap"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "sort": {
 
          "$ref": "#/refs/compare"
 
        },
 
        "method": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "squarify",
 
                "resquarify",
 
                "binary",
 
                "dice",
 
                "slice",
 
                "slicedice"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "squarify"
 
        },
 
        "padding": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "paddingInner": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "paddingOuter": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "paddingTop": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "paddingRight": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "paddingBottom": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "paddingLeft": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "ratio": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 1.618033988749895
 
        },
 
        "round": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 6,
 
          "minItems": 6,
 
          "default": [
 
            "x0",
 
            "y0",
 
            "x1",
 
            "y1",
 
            "depth",
 
            "children"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "labelTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "label"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "sort": {
 
          "$ref": "#/refs/compare"
 
        },
 
        "anchor": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": [
 
            "top-left",
 
            "left",
 
            "bottom-left",
 
            "top",
 
            "bottom",
 
            "top-right",
 
            "right",
 
            "bottom-right"
 
          ]
 
        },
 
        "offset": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": [
 
            1
 
          ]
 
        },
 
        "padding": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "lineAnchor": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "end"
 
        },
 
        "markIndex": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "avoidBaseMark": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": true
 
        },
 
        "avoidMarks": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "type": "string"
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "method": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "naive"
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 5,
 
          "minItems": 5,
 
          "default": [
 
            "x",
 
            "y",
 
            "opacity",
 
            "align",
 
            "baseline"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "size"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "loessTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "loess"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "x": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "y": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "bandwidth": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 0.3
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "x",
 
        "y"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "regressionTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "regression"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "x": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "y": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "method": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "linear"
 
        },
 
        "order": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 3
 
        },
 
        "extent": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "params": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "x",
 
        "y"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "aggregateTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "aggregate"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "ops": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "enum": [
 
                      "values",
 
                      "count",
 
                      "__count__",
 
                      "missing",
 
                      "valid",
 
                      "sum",
 
                      "product",
 
                      "mean",
 
                      "average",
 
                      "variance",
 
                      "variancep",
 
                      "stdev",
 
                      "stdevp",
 
                      "stderr",
 
                      "distinct",
 
                      "ci0",
 
                      "ci1",
 
                      "median",
 
                      "q1",
 
                      "q3",
 
                      "min",
 
                      "max",
 
                      "argmin",
 
                      "argmax"
 
                    ]
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  },
 
                  {
 
                    "type": "null"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  },
 
                  {
 
                    "type": "null"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "drop": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": true
 
        },
 
        "cross": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "key": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "binTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "bin"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "interval": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": true
 
        },
 
        "anchor": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "maxbins": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 20
 
        },
 
        "base": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 10
 
        },
 
        "divide": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": [
 
            5,
 
            2
 
          ]
 
        },
 
        "extent": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "span": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "step": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "steps": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "minstep": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "nice": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": true
 
        },
 
        "name": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            "bin0",
 
            "bin1"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "field",
 
        "extent"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "collectTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "collect"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "sort": {
 
          "$ref": "#/refs/compare"
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "countpatternTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "countpattern"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "case": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "upper",
 
                "lower",
 
                "mixed"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "mixed"
 
        },
 
        "pattern": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "[\\w\"]+"
 
        },
 
        "stopwords": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            "text",
 
            "count"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "field"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "crossTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "cross"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "filter": {
 
          "$ref": "#/refs/exprString"
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            "a",
 
            "b"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "densityTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "density"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "extent": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "steps": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "minsteps": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 25
 
        },
 
        "maxsteps": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 200
 
        },
 
        "method": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "pdf"
 
        },
 
        "distribution": {
 
          "oneOf": [
 
            {
 
              "type": "object",
 
              "properties": {
 
                "function": {
 
                  "enum": [
 
                    "normal"
 
                  ]
 
                },
 
                "mean": {
 
                  "anyOf": [
 
                    {
 
                      "type": "number"
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ]
 
                },
 
                "stdev": {
 
                  "anyOf": [
 
                    {
 
                      "type": "number"
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ],
 
                  "default": 1
 
                }
 
              },
 
              "required": [
 
                "function"
 
              ],
 
              "additionalProperties": false
 
            },
 
            {
 
              "type": "object",
 
              "properties": {
 
                "function": {
 
                  "enum": [
 
                    "lognormal"
 
                  ]
 
                },
 
                "mean": {
 
                  "anyOf": [
 
                    {
 
                      "type": "number"
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ]
 
                },
 
                "stdev": {
 
                  "anyOf": [
 
                    {
 
                      "type": "number"
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ],
 
                  "default": 1
 
                }
 
              },
 
              "required": [
 
                "function"
 
              ],
 
              "additionalProperties": false
 
            },
 
            {
 
              "type": "object",
 
              "properties": {
 
                "function": {
 
                  "enum": [
 
                    "uniform"
 
                  ]
 
                },
 
                "min": {
 
                  "anyOf": [
 
                    {
 
                      "type": "number"
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ]
 
                },
 
                "max": {
 
                  "anyOf": [
 
                    {
 
                      "type": "number"
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ],
 
                  "default": 1
 
                }
 
              },
 
              "required": [
 
                "function"
 
              ],
 
              "additionalProperties": false
 
            },
 
            {
 
              "type": "object",
 
              "properties": {
 
                "function": {
 
                  "enum": [
 
                    "kde"
 
                  ]
 
                },
 
                "field": {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/scaleField"
 
                    },
 
                    {
 
                      "$ref": "#/refs/paramField"
 
                    },
 
                    {
 
                      "$ref": "#/refs/expr"
 
                    }
 
                  ]
 
                },
 
                "from": {
 
                  "type": "string"
 
                },
 
                "bandwidth": {
 
                  "anyOf": [
 
                    {
 
                      "type": "number"
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ]
 
                }
 
              },
 
              "required": [
 
                "function",
 
                "field"
 
              ],
 
              "additionalProperties": false
 
            },
 
            {
 
              "type": "object",
 
              "properties": {
 
                "function": {
 
                  "enum": [
 
                    "mixture"
 
                  ]
 
                },
 
                "distributions": {
 
                  "oneOf": [
 
                    {
 
                      "type": "array",
 
                      "items": {}
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ]
 
                },
 
                "weights": {
 
                  "oneOf": [
 
                    {
 
                      "type": "array",
 
                      "items": {
 
                        "anyOf": [
 
                          {
 
                            "type": "number"
 
                          },
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          }
 
                        ]
 
                      }
 
                    },
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    }
 
                  ]
 
                }
 
              },
 
              "required": [
 
                "function"
 
              ],
 
              "additionalProperties": false
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": [
 
            "value",
 
            "density"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "dotbinTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "dotbin"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "step": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "smooth": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "bin"
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "field"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "extentTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "extent"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "field"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "filterTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "filter"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "expr": {
 
          "$ref": "#/refs/exprString"
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "expr"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "flattenTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "flatten"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "index": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "fields"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "foldTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "fold"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            "key",
 
            "value"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "fields"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "formulaTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "formula"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "expr": {
 
          "$ref": "#/refs/exprString"
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "initonly": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "expr",
 
        "as"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "imputeTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "impute"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "key": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "keyvals": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {}
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "method": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "value",
 
                "mean",
 
                "median",
 
                "max",
 
                "min"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "value"
 
        },
 
        "value": {}
 
      },
 
      "required": [
 
        "type",
 
        "field",
 
        "key"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "joinaggregateTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "joinaggregate"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  },
 
                  {
 
                    "type": "null"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "ops": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "enum": [
 
                      "values",
 
                      "count",
 
                      "__count__",
 
                      "missing",
 
                      "valid",
 
                      "sum",
 
                      "product",
 
                      "mean",
 
                      "average",
 
                      "variance",
 
                      "variancep",
 
                      "stdev",
 
                      "stdevp",
 
                      "stderr",
 
                      "distinct",
 
                      "ci0",
 
                      "ci1",
 
                      "median",
 
                      "q1",
 
                      "q3",
 
                      "min",
 
                      "max",
 
                      "argmin",
 
                      "argmax"
 
                    ]
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  },
 
                  {
 
                    "type": "null"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "key": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "kdeTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "kde"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "cumulative": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "counts": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "bandwidth": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "extent": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "resolve": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "shared",
 
                "independent"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "independent"
 
        },
 
        "steps": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "minsteps": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 25
 
        },
 
        "maxsteps": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 200
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": [
 
            "value",
 
            "density"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "field"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "lookupTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "lookup"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "from": {
 
          "type": "string"
 
        },
 
        "key": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "values": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "default": {}
 
      },
 
      "required": [
 
        "type",
 
        "from",
 
        "key",
 
        "fields"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "pivotTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "pivot"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "value": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "op": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "values",
 
                "count",
 
                "__count__",
 
                "missing",
 
                "valid",
 
                "sum",
 
                "product",
 
                "mean",
 
                "average",
 
                "variance",
 
                "variancep",
 
                "stdev",
 
                "stdevp",
 
                "stderr",
 
                "distinct",
 
                "ci0",
 
                "ci1",
 
                "median",
 
                "q1",
 
                "q3",
 
                "min",
 
                "max",
 
                "argmin",
 
                "argmax"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "sum"
 
        },
 
        "limit": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "key": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "field",
 
        "value"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "projectTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "project"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  },
 
                  {
 
                    "type": "null"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "quantileTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "quantile"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "probs": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "step": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 0.01
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": [
 
            "prob",
 
            "value"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "field"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "sampleTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "sample"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "size": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 1000
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "sequenceTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "sequence"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "start": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "stop": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "step": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 1
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "data"
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "start",
 
        "stop"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "timeunitTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "timeunit"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "field": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "interval": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": true
 
        },
 
        "units": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "enum": [
 
                      "year",
 
                      "quarter",
 
                      "month",
 
                      "week",
 
                      "date",
 
                      "day",
 
                      "dayofyear",
 
                      "hours",
 
                      "minutes",
 
                      "seconds",
 
                      "milliseconds"
 
                    ]
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "step": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 1
 
        },
 
        "maxbins": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": 40
 
        },
 
        "extent": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "timezone": {
 
          "anyOf": [
 
            {
 
              "enum": [
 
                "local",
 
                "utc"
 
              ]
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "local"
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            "unit0",
 
            "unit1"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "field"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "windowTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "window"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "sort": {
 
          "$ref": "#/refs/compare"
 
        },
 
        "groupby": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "ops": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "enum": [
 
                      "row_number",
 
                      "rank",
 
                      "dense_rank",
 
                      "percent_rank",
 
                      "cume_dist",
 
                      "ntile",
 
                      "lag",
 
                      "lead",
 
                      "first_value",
 
                      "last_value",
 
                      "nth_value",
 
                      "prev_value",
 
                      "next_value",
 
                      "values",
 
                      "count",
 
                      "__count__",
 
                      "missing",
 
                      "valid",
 
                      "sum",
 
                      "product",
 
                      "mean",
 
                      "average",
 
                      "variance",
 
                      "variancep",
 
                      "stdev",
 
                      "stdevp",
 
                      "stderr",
 
                      "distinct",
 
                      "ci0",
 
                      "ci1",
 
                      "median",
 
                      "q1",
 
                      "q3",
 
                      "min",
 
                      "max",
 
                      "argmin",
 
                      "argmax"
 
                    ]
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "params": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  },
 
                  {
 
                    "type": "null"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "fields": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/paramField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  },
 
                  {
 
                    "type": "null"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  },
 
                  {
 
                    "type": "null"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "frame": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  },
 
                  {
 
                    "type": "null"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            null,
 
            0
 
          ]
 
        },
 
        "ignorePeers": {
 
          "anyOf": [
 
            {
 
              "type": "boolean"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "identifierTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "identifier"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "as"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "voronoiTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "voronoi"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "x": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "y": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "extent": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {}
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2,
 
          "default": [
 
            [
 
              -100000,
 
              -100000
 
            ],
 
            [
 
              100000,
 
              100000
 
            ]
 
          ]
 
        },
 
        "as": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "default": "path"
 
        }
 
      },
 
      "required": [
 
        "type",
 
        "x",
 
        "y"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "wordcloudTransform": {
 
      "type": "object",
 
      "properties": {
 
        "type": {
 
          "enum": [
 
            "wordcloud"
 
          ]
 
        },
 
        "signal": {
 
          "type": "string"
 
        },
 
        "size": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 2,
 
          "minItems": 2
 
        },
 
        "font": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ],
 
          "default": "sans-serif"
 
        },
 
        "fontStyle": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ],
 
          "default": "normal"
 
        },
 
        "fontWeight": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ],
 
          "default": "normal"
 
        },
 
        "fontSize": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ],
 
          "default": 14
 
        },
 
        "fontSizeRange": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "number"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "type": "null"
 
            }
 
          ],
 
          "default": [
 
            10,
 
            50
 
          ]
 
        },
 
        "rotate": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ]
 
        },
 
        "text": {
 
          "oneOf": [
 
            {
 
              "$ref": "#/refs/scaleField"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            }
 
          ]
 
        },
 
        "spiral": {
 
          "anyOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ]
 
        },
 
        "padding": {
 
          "anyOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            },
 
            {
 
              "$ref": "#/refs/expr"
 
            },
 
            {
 
              "$ref": "#/refs/paramField"
 
            }
 
          ]
 
        },
 
        "as": {
 
          "oneOf": [
 
            {
 
              "type": "array",
 
              "items": {
 
                "anyOf": [
 
                  {
 
                    "type": "string"
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              }
 
            },
 
            {
 
              "$ref": "#/refs/signal"
 
            }
 
          ],
 
          "maxItems": 7,
 
          "minItems": 7,
 
          "default": [
 
            "x",
 
            "y",
 
            "font",
 
            "fontSize",
 
            "fontStyle",
 
            "fontWeight",
 
            "angle"
 
          ]
 
        }
 
      },
 
      "required": [
 
        "type"
 
      ],
 
      "additionalProperties": false
 
    }
 
  },
 
  "refs": {
 
    "labelOverlap": {
 
      "oneOf": [
 
        {
 
          "type": "boolean"
 
        },
 
        {
 
          "enum": [
 
            "parity",
 
            "greedy"
 
          ]
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "tickBand": {
 
      "oneOf": [
 
        {
 
          "enum": [
 
            "center",
 
            "extent"
 
          ]
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "tickCount": {
 
      "oneOf": [
 
        {
 
          "type": "number"
 
        },
 
        {
 
          "enum": [
 
            "millisecond",
 
            "second",
 
            "minute",
 
            "hour",
 
            "day",
 
            "week",
 
            "month",
 
            "year"
 
          ]
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "interval": {
 
              "oneOf": [
 
                {
 
                  "enum": [
 
                    "millisecond",
 
                    "second",
 
                    "minute",
 
                    "hour",
 
                    "day",
 
                    "week",
 
                    "month",
 
                    "year"
 
                  ]
 
                },
 
                {
 
                  "$ref": "#/refs/signal"
 
                }
 
              ]
 
            },
 
            "step": {
 
              "$ref": "#/refs/numberOrSignal"
 
            }
 
          },
 
          "required": [
 
            "interval"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "element": {
 
      "type": "string"
 
    },
 
    "paramField": {
 
      "type": "object",
 
      "properties": {
 
        "field": {
 
          "type": "string"
 
        },
 
        "as": {
 
          "type": "string"
 
        }
 
      },
 
      "required": [
 
        "field"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "field": {
 
      "oneOf": [
 
        {
 
          "type": "string"
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "datum": {
 
              "$ref": "#/refs/field"
 
            }
 
          },
 
          "required": [
 
            "datum"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "group": {
 
              "$ref": "#/refs/field"
 
            },
 
            "level": {
 
              "type": "number"
 
            }
 
          },
 
          "required": [
 
            "group"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "parent": {
 
              "$ref": "#/refs/field"
 
            },
 
            "level": {
 
              "type": "number"
 
            }
 
          },
 
          "required": [
 
            "parent"
 
          ],
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "scale": {
 
      "$ref": "#/refs/field"
 
    },
 
    "stringModifiers": {
 
      "type": "object",
 
      "properties": {
 
        "scale": {
 
          "$ref": "#/refs/scale"
 
        }
 
      }
 
    },
 
    "numberModifiers": {
 
      "type": "object",
 
      "properties": {
 
        "exponent": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "mult": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "offset": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "$ref": "#/refs/numberValue"
 
            }
 
          ]
 
        },
 
        "round": {
 
          "type": "boolean",
 
          "default": false
 
        },
 
        "scale": {
 
          "$ref": "#/refs/scale"
 
        },
 
        "band": {
 
          "oneOf": [
 
            {
 
              "type": "number"
 
            },
 
            {
 
              "type": "boolean"
 
            }
 
          ]
 
        },
 
        "extra": {
 
          "type": "boolean"
 
        }
 
      }
 
    },
 
    "anyValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {}
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {}
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "blendValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "enum": [
 
                                  null,
 
                                  "multiply",
 
                                  "screen",
 
                                  "overlay",
 
                                  "darken",
 
                                  "lighten",
 
                                  "color-dodge",
 
                                  "color-burn",
 
                                  "hard-light",
 
                                  "soft-light",
 
                                  "difference",
 
                                  "exclusion",
 
                                  "hue",
 
                                  "saturation",
 
                                  "color",
 
                                  "luminosity"
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "enum": [
 
                            null,
 
                            "multiply",
 
                            "screen",
 
                            "overlay",
 
                            "darken",
 
                            "lighten",
 
                            "color-dodge",
 
                            "color-burn",
 
                            "hard-light",
 
                            "soft-light",
 
                            "difference",
 
                            "exclusion",
 
                            "hue",
 
                            "saturation",
 
                            "color",
 
                            "luminosity"
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "numberValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/numberModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "type": "number"
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/numberModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "type": "number"
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "stringValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "type": "string"
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "type": "string"
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "textValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "string"
 
                                  },
 
                                  {
 
                                    "type": "array",
 
                                    "items": {
 
                                      "type": "string"
 
                                    }
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "oneOf": [
 
                            {
 
                              "type": "string"
 
                            },
 
                            {
 
                              "type": "array",
 
                              "items": {
 
                                "type": "string"
 
                              }
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "booleanValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "type": "boolean"
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "type": "boolean"
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "arrayValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "type": "array"
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "type": "array"
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "fontWeightValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "enum": [
 
                                  null,
 
                                  "normal",
 
                                  "bold",
 
                                  "lighter",
 
                                  "bolder",
 
                                  "100",
 
                                  "200",
 
                                  "300",
 
                                  "400",
 
                                  "500",
 
                                  "600",
 
                                  "700",
 
                                  "800",
 
                                  "900",
 
                                  100,
 
                                  200,
 
                                  300,
 
                                  400,
 
                                  500,
 
                                  600,
 
                                  700,
 
                                  800,
 
                                  900
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "enum": [
 
                            null,
 
                            "normal",
 
                            "bold",
 
                            "lighter",
 
                            "bolder",
 
                            "100",
 
                            "200",
 
                            "300",
 
                            "400",
 
                            "500",
 
                            "600",
 
                            "700",
 
                            "800",
 
                            "900",
 
                            100,
 
                            200,
 
                            300,
 
                            400,
 
                            500,
 
                            600,
 
                            700,
 
                            800,
 
                            900
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "anchorValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "enum": [
 
                                  "start",
 
                                  "middle",
 
                                  "end"
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "enum": [
 
                            "start",
 
                            "middle",
 
                            "end"
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "alignValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "enum": [
 
                                  "left",
 
                                  "right",
 
                                  "center"
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "enum": [
 
                            "left",
 
                            "right",
 
                            "center"
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "baselineValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "enum": [
 
                                  "top",
 
                                  "middle",
 
                                  "bottom",
 
                                  "alphabetic"
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "enum": [
 
                            "top",
 
                            "middle",
 
                            "bottom",
 
                            "alphabetic"
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "directionValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "enum": [
 
                                  "horizontal",
 
                                  "vertical"
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "enum": [
 
                            "horizontal",
 
                            "vertical"
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "orientValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "enum": [
 
                                  "left",
 
                                  "right",
 
                                  "top",
 
                                  "bottom"
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "enum": [
 
                            "left",
 
                            "right",
 
                            "top",
 
                            "bottom"
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "strokeCapValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "enum": [
 
                                  "butt",
 
                                  "round",
 
                                  "square"
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "enum": [
 
                            "butt",
 
                            "round",
 
                            "square"
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "strokeJoinValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "allOf": [
 
                  {
 
                    "$ref": "#/refs/stringModifiers"
 
                  },
 
                  {
 
                    "anyOf": [
 
                      {
 
                        "oneOf": [
 
                          {
 
                            "$ref": "#/refs/signal"
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "value": {
 
                                "enum": [
 
                                  "miter",
 
                                  "round",
 
                                  "bevel"
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "value"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "field": {
 
                                "$ref": "#/refs/field"
 
                              }
 
                            },
 
                            "required": [
 
                              "field"
 
                            ]
 
                          },
 
                          {
 
                            "type": "object",
 
                            "properties": {
 
                              "range": {
 
                                "oneOf": [
 
                                  {
 
                                    "type": "number"
 
                                  },
 
                                  {
 
                                    "type": "boolean"
 
                                  }
 
                                ]
 
                              }
 
                            },
 
                            "required": [
 
                              "range"
 
                            ]
 
                          }
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "value"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "scale",
 
                          "band"
 
                        ]
 
                      },
 
                      {
 
                        "type": "object",
 
                        "required": [
 
                          "offset"
 
                        ]
 
                      }
 
                    ]
 
                  }
 
                ]
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "enum": [
 
                            "miter",
 
                            "round",
 
                            "bevel"
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        }
 
      ]
 
    },
 
    "baseColorValue": {
 
      "oneOf": [
 
        {
 
          "allOf": [
 
            {
 
              "$ref": "#/refs/stringModifiers"
 
            },
 
            {
 
              "anyOf": [
 
                {
 
                  "oneOf": [
 
                    {
 
                      "$ref": "#/refs/signal"
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "value": {
 
                          "oneOf": [
 
                            {
 
                              "type": "string"
 
                            },
 
                            {
 
                              "type": "null"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "value"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "field": {
 
                          "$ref": "#/refs/field"
 
                        }
 
                      },
 
                      "required": [
 
                        "field"
 
                      ]
 
                    },
 
                    {
 
                      "type": "object",
 
                      "properties": {
 
                        "range": {
 
                          "oneOf": [
 
                            {
 
                              "type": "number"
 
                            },
 
                            {
 
                              "type": "boolean"
 
                            }
 
                          ]
 
                        }
 
                      },
 
                      "required": [
 
                        "range"
 
                      ]
 
                    }
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "value"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "scale",
 
                    "band"
 
                  ]
 
                },
 
                {
 
                  "type": "object",
 
                  "required": [
 
                    "offset"
 
                  ]
 
                }
 
              ]
 
            }
 
          ]
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "value": {
 
              "$ref": "#/refs/linearGradient"
 
            }
 
          },
 
          "required": [
 
            "value"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "value": {
 
              "$ref": "#/refs/radialGradient"
 
            }
 
          },
 
          "required": [
 
            "value"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "gradient": {
 
              "$ref": "#/refs/scale"
 
            },
 
            "start": {
 
              "type": "array",
 
              "items": {
 
                "type": "number"
 
              },
 
              "minItems": 2,
 
              "maxItems": 2
 
            },
 
            "stop": {
 
              "type": "array",
 
              "items": {
 
                "type": "number"
 
              },
 
              "minItems": 2,
 
              "maxItems": 2
 
            },
 
            "count": {
 
              "type": "number"
 
            }
 
          },
 
          "required": [
 
            "gradient"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "color": {
 
              "oneOf": [
 
                {
 
                  "$ref": "#/refs/colorRGB"
 
                },
 
                {
 
                  "$ref": "#/refs/colorHSL"
 
                },
 
                {
 
                  "$ref": "#/refs/colorLAB"
 
                },
 
                {
 
                  "$ref": "#/refs/colorHCL"
 
                }
 
              ]
 
            }
 
          },
 
          "required": [
 
            "color"
 
          ],
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "colorRGB": {
 
      "type": "object",
 
      "properties": {
 
        "r": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "g": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "b": {
 
          "$ref": "#/refs/numberValue"
 
        }
 
      },
 
      "required": [
 
        "r",
 
        "g",
 
        "b"
 
      ]
 
    },
 
    "colorHSL": {
 
      "type": "object",
 
      "properties": {
 
        "h": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "s": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "l": {
 
          "$ref": "#/refs/numberValue"
 
        }
 
      },
 
      "required": [
 
        "h",
 
        "s",
 
        "l"
 
      ]
 
    },
 
    "colorLAB": {
 
      "type": "object",
 
      "properties": {
 
        "l": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "a": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "b": {
 
          "$ref": "#/refs/numberValue"
 
        }
 
      },
 
      "required": [
 
        "l",
 
        "a",
 
        "b"
 
      ]
 
    },
 
    "colorHCL": {
 
      "type": "object",
 
      "properties": {
 
        "h": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "c": {
 
          "$ref": "#/refs/numberValue"
 
        },
 
        "l": {
 
          "$ref": "#/refs/numberValue"
 
        }
 
      },
 
      "required": [
 
        "h",
 
        "c",
 
        "l"
 
      ]
 
    },
 
    "colorValue": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "allOf": [
 
              {
 
                "$ref": "#/defs/rule"
 
              },
 
              {
 
                "$ref": "#/refs/baseColorValue"
 
              }
 
            ]
 
          }
 
        },
 
        {
 
          "$ref": "#/refs/baseColorValue"
 
        }
 
      ]
 
    },
 
    "gradientStops": {
 
      "type": "array",
 
      "items": {
 
        "type": "object",
 
        "properties": {
 
          "offset": {
 
            "type": "number"
 
          },
 
          "color": {
 
            "type": "string"
 
          }
 
        },
 
        "required": [
 
          "offset",
 
          "color"
 
        ],
 
        "additionalProperties": false
 
      }
 
    },
 
    "linearGradient": {
 
      "type": "object",
 
      "properties": {
 
        "gradient": {
 
          "enum": [
 
            "linear"
 
          ]
 
        },
 
        "id": {
 
          "type": "string"
 
        },
 
        "x1": {
 
          "type": "number"
 
        },
 
        "y1": {
 
          "type": "number"
 
        },
 
        "x2": {
 
          "type": "number"
 
        },
 
        "y2": {
 
          "type": "number"
 
        },
 
        "stops": {
 
          "$ref": "#/refs/gradientStops"
 
        }
 
      },
 
      "required": [
 
        "gradient",
 
        "stops"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "radialGradient": {
 
      "type": "object",
 
      "properties": {
 
        "gradient": {
 
          "enum": [
 
            "radial"
 
          ]
 
        },
 
        "id": {
 
          "type": "string"
 
        },
 
        "x1": {
 
          "type": "number"
 
        },
 
        "y1": {
 
          "type": "number"
 
        },
 
        "r1": {
 
          "type": "number"
 
        },
 
        "x2": {
 
          "type": "number"
 
        },
 
        "y2": {
 
          "type": "number"
 
        },
 
        "r2": {
 
          "type": "number"
 
        },
 
        "stops": {
 
          "$ref": "#/refs/gradientStops"
 
        }
 
      },
 
      "required": [
 
        "gradient",
 
        "stops"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "expr": {
 
      "type": "object",
 
      "properties": {
 
        "expr": {
 
          "type": "string"
 
        },
 
        "as": {
 
          "type": "string"
 
        }
 
      },
 
      "required": [
 
        "expr"
 
      ]
 
    },
 
    "exprString": {
 
      "type": "string"
 
    },
 
    "compare": {
 
      "oneOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "field": {
 
              "oneOf": [
 
                {
 
                  "$ref": "#/refs/scaleField"
 
                },
 
                {
 
                  "$ref": "#/refs/expr"
 
                }
 
              ]
 
            },
 
            "order": {
 
              "$ref": "#/refs/sortOrder"
 
            }
 
          },
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "field": {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "$ref": "#/refs/scaleField"
 
                  },
 
                  {
 
                    "$ref": "#/refs/expr"
 
                  }
 
                ]
 
              }
 
            },
 
            "order": {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/refs/sortOrder"
 
              }
 
            }
 
          },
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "from": {
 
      "type": "object",
 
      "properties": {
 
        "data": {
 
          "type": "string"
 
        }
 
      },
 
      "additionalProperties": false
 
    },
 
    "facet": {
 
      "type": "object",
 
      "properties": {
 
        "data": {
 
          "type": "string"
 
        },
 
        "facet": {
 
          "oneOf": [
 
            {
 
              "type": "object",
 
              "properties": {
 
                "name": {
 
                  "type": "string"
 
                },
 
                "data": {
 
                  "type": "string"
 
                },
 
                "field": {
 
                  "type": "string"
 
                }
 
              },
 
              "required": [
 
                "name",
 
                "data",
 
                "field"
 
              ],
 
              "additionalProperties": false
 
            },
 
            {
 
              "type": "object",
 
              "properties": {
 
                "name": {
 
                  "type": "string"
 
                },
 
                "data": {
 
                  "type": "string"
 
                },
 
                "groupby": {
 
                  "oneOf": [
 
                    {
 
                      "type": "string"
 
                    },
 
                    {
 
                      "type": "array",
 
                      "items": {
 
                        "type": "string"
 
                      }
 
                    }
 
                  ]
 
                },
 
                "aggregate": {
 
                  "type": "object",
 
                  "properties": {
 
                    "cross": {
 
                      "type": "boolean"
 
                    },
 
                    "fields": {
 
                      "type": "array",
 
                      "items": {
 
                        "type": "string"
 
                      }
 
                    },
 
                    "ops": {
 
                      "type": "array",
 
                      "items": {
 
                        "type": "string"
 
                      }
 
                    },
 
                    "as": {
 
                      "type": "array",
 
                      "items": {
 
                        "type": "string"
 
                      }
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              },
 
              "required": [
 
                "name",
 
                "data",
 
                "groupby"
 
              ],
 
              "additionalProperties": false
 
            }
 
          ]
 
        }
 
      },
 
      "required": [
 
        "facet"
 
      ],
 
      "additionalProperties": false
 
    },
 
    "markclip": {
 
      "oneOf": [
 
        {
 
          "$ref": "#/refs/booleanOrSignal"
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "path": {
 
              "$ref": "#/refs/stringOrSignal"
 
            }
 
          },
 
          "required": [
 
            "path"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "sphere": {
 
              "$ref": "#/refs/stringOrSignal"
 
            }
 
          },
 
          "required": [
 
            "sphere"
 
          ],
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "style": {
 
      "oneOf": [
 
        {
 
          "type": "string"
 
        },
 
        {
 
          "type": "array",
 
          "items": {
 
            "type": "string"
 
          }
 
        }
 
      ]
 
    },
 
    "marktype": {
 
      "type": "string"
 
    },
 
    "scaleField": {
 
      "$ref": "#/refs/stringOrSignal"
 
    },
 
    "sortOrder": {
 
      "oneOf": [
 
        {
 
          "enum": [
 
            "ascending",
 
            "descending"
 
          ]
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "scaleBins": {
 
      "oneOf": [
 
        {
 
          "type": "array",
 
          "items": {
 
            "$ref": "#/refs/numberOrSignal"
 
          }
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "step": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "start": {
 
              "$ref": "#/refs/numberOrSignal"
 
            },
 
            "stop": {
 
              "$ref": "#/refs/numberOrSignal"
 
            }
 
          },
 
          "required": [
 
            "step"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "scaleInterpolate": {
 
      "oneOf": [
 
        {
 
          "type": "string"
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "type": {
 
              "$ref": "#/refs/stringOrSignal"
 
            },
 
            "gamma": {
 
              "$ref": "#/refs/numberOrSignal"
 
            }
 
          },
 
          "required": [
 
            "type"
 
          ],
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "scaleData": {
 
      "oneOf": [
 
        {
 
          "type": "object",
 
          "properties": {
 
            "data": {
 
              "type": "string"
 
            },
 
            "field": {
 
              "$ref": "#/refs/stringOrSignal"
 
            },
 
            "sort": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "field": {
 
                      "$ref": "#/refs/stringOrSignal"
 
                    },
 
                    "op": {
 
                      "$ref": "#/refs/stringOrSignal"
 
                    },
 
                    "order": {
 
                      "$ref": "#/refs/sortOrder"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                }
 
              ]
 
            }
 
          },
 
          "required": [
 
            "data",
 
            "field"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "data": {
 
              "type": "string"
 
            },
 
            "fields": {
 
              "type": "array",
 
              "items": {
 
                "$ref": "#/refs/stringOrSignal"
 
              },
 
              "minItems": 1
 
            },
 
            "sort": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "op": {
 
                      "enum": [
 
                        "count"
 
                      ]
 
                    },
 
                    "order": {
 
                      "$ref": "#/refs/sortOrder"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "field": {
 
                      "$ref": "#/refs/stringOrSignal"
 
                    },
 
                    "op": {
 
                      "enum": [
 
                        "count",
 
                        "min",
 
                        "max"
 
                      ]
 
                    },
 
                    "order": {
 
                      "$ref": "#/refs/sortOrder"
 
                    }
 
                  },
 
                  "required": [
 
                    "field",
 
                    "op"
 
                  ],
 
                  "additionalProperties": false
 
                }
 
              ]
 
            }
 
          },
 
          "required": [
 
            "data",
 
            "fields"
 
          ],
 
          "additionalProperties": false
 
        },
 
        {
 
          "type": "object",
 
          "properties": {
 
            "fields": {
 
              "type": "array",
 
              "items": {
 
                "oneOf": [
 
                  {
 
                    "type": "object",
 
                    "properties": {
 
                      "data": {
 
                        "type": "string"
 
                      },
 
                      "field": {
 
                        "$ref": "#/refs/stringOrSignal"
 
                      }
 
                    },
 
                    "required": [
 
                      "data",
 
                      "field"
 
                    ],
 
                    "additionalProperties": false
 
                  },
 
                  {
 
                    "type": "array",
 
                    "items": {
 
                      "oneOf": [
 
                        {
 
                          "type": "string"
 
                        },
 
                        {
 
                          "type": "number"
 
                        },
 
                        {
 
                          "type": "boolean"
 
                        }
 
                      ]
 
                    }
 
                  },
 
                  {
 
                    "$ref": "#/refs/signal"
 
                  }
 
                ]
 
              },
 
              "minItems": 1
 
            },
 
            "sort": {
 
              "oneOf": [
 
                {
 
                  "type": "boolean"
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "op": {
 
                      "enum": [
 
                        "count"
 
                      ]
 
                    },
 
                    "order": {
 
                      "$ref": "#/refs/sortOrder"
 
                    }
 
                  },
 
                  "additionalProperties": false
 
                },
 
                {
 
                  "type": "object",
 
                  "properties": {
 
                    "field": {
 
                      "$ref": "#/refs/stringOrSignal"
 
                    },
 
                    "op": {
 
                      "enum": [
 
                        "count",
 
                        "min",
 
                        "max"
 
                      ]
 
                    },
 
                    "order": {
 
                      "$ref": "#/refs/sortOrder"
 
                    }
 
                  },
 
                  "required": [
 
                    "field",
 
                    "op"
 
                  ],
 
                  "additionalProperties": false
 
                }
 
              ]
 
            }
 
          },
 
          "required": [
 
            "fields"
 
          ],
 
          "additionalProperties": false
 
        }
 
      ]
 
    },
 
    "selector": {
 
      "type": "string"
 
    },
 
    "signal": {
 
      "type": "object",
 
      "properties": {
 
        "signal": {
 
          "type": "string"
 
        }
 
      },
 
      "required": [
 
        "signal"
 
      ]
 
    },
 
    "arrayOrSignal": {
 
      "oneOf": [
 
        {
 
          "type": "array"
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "booleanOrSignal": {
 
      "oneOf": [
 
        {
 
          "type": "boolean"
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "numberOrSignal": {
 
      "oneOf": [
 
        {
 
          "type": "number"
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "stringOrSignal": {
 
      "oneOf": [
 
        {
 
          "type": "string"
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    },
 
    "textOrSignal": {
 
      "oneOf": [
 
        {
 
          "oneOf": [
 
            {
 
              "type": "string"
 
            },
 
            {
 
              "type": "array",
 
              "items": {
 
                "type": "string"
 
              }
 
            }
 
          ]
 
        },
 
        {
 
          "$ref": "#/refs/signal"
 
        }
 
      ]
 
    }
 
  },
 
  "type": "object",
 
  "allOf": [
 
    {
 
      "$ref": "#/defs/scope"
 
    },
 
    {
 
      "properties": {
 
        "$schema": {
 
          "type": "string",
 
          "format": "uri"
 
        },
 
        "config": {
 
          "type": "object"
 
        },
 
        "description": {
 
          "type": "string"
 
        },
 
        "width": {
 
          "$ref": "#/refs/numberOrSignal"
 
        },
 
        "height": {
 
          "$ref": "#/refs/numberOrSignal"
 
        },
 
        "padding": {
 
          "$ref": "#/defs/padding"
 
        },
 
        "autosize": {
 
          "$ref": "#/defs/autosize"
 
        },
 
        "background": {
 
          "$ref": "#/defs/background"
 
        },
 
        "style": {
 
          "$ref": "#/refs/style"
 
        }
 
      }
 
    }
 
  ]
 
}
 
-->
 

Latest revision as of 22:45, 25 August 2024

Few Word.png

Welcome to the Maker Hub Introduction Course!

All Maker Hub users must take this course in order to have access to the Maker Hub. This course should take less than 45 minutes to complete. And we promise, of all the Maker Hub training courses, this one is the longest (except for the soldering irons for some reason). Reading is hard... but somehow, we need to put the necessary training information into your brain so that you can use the Maker Hub's equipment safely and refrain from breaking things. We'll try to convey all of this in as few words as possible (humor aside). For all the "TLDR" peeps in the house, buckle up...

To gain basic card-swipe access to the Maker Hub, read this entire page and pass the Maker Hub Introduction Canvas quiz (with 100%). The link to the Canvas quiz is found toward the bottom of this page here.

How We Operate

The Maker Hub is available to all members of the GFU family (i.e. undergrad students, graduate students, ADP students, and employees), and that includes non-engineering students! The Maker Hub was born to advance creativity, innovation, and entrepreneurship within the community of George Fox University. One of the main ways we achieve this goal is by providing a space where people can work on academic and/or personal projects. The Maker Hub operates under the guidance of a few GFU employees, a handful of student staff, and a plethora of student aces and volunteers. The student staff, aces, and volunteers play critical leadership roles in overseeing various technical shops and training others to use the equipment. With a diverse user-base and a diverse set of projects running concurrently, there has to be a standardized training system that keeps everyone on the same page. And... that's why you're here reading this epic wiki page anyways.

To enable you to access and maintain this space, you are being asked (OK, required) to take a short training course on the Maker Hub. Through this course, you will become acquainted with the facilities within the Maker Hub, the equipment and tools available to you, and the expectations for proper usage of them. The goal of this course is twofold: first, to introduce you to the capabilities available to you in the space, and second, to help you understand the expectations upon you when using the space. Both are crucial if you want to be an active participant in the space.

In any public space, there has to be some set of rules that govern the activity in the space. Ideally, we would just use the clever “Rule 0: Don’t make me make a rule.” But, we felt it was better to come up with some overall guiding principles rather than a list of rules. Clearly, there are some obvious “rules” that get implied from these principles, but, we believe that if you embrace the principles, the rules will take care of themselves. These principles we like to call: The Three Commandments.

(See what we did there? - Christian school - reference to the commandments? Get it?)

The Three Commandments

  1. Safety First
  2. Reset the Space
  3. Be Professional


What Do The Three Commandments Mean?

Safety First

This should be the most obvious--and critical--of the commandments. A significant portion of the equipment and tools in the Maker Hub can be quite dangerous. It is imperative that in everything you do, you address safety first. This starts with general behavior (don’t run with scissors - in fact, don’t run at all - unless there is a fire - and you can see now why we are going with principles rather than specific rules). But beyond general behavior, various rooms and machines have very specific safety procedures and violations of these procedures will come with penalties.

We use the buddy system. It's always a good idea to have a buddy or someone within eyesight or earshot while working anywhere in the Maker Hub. It is IMPERATIVE to have a buddy or someone else present when working in the machine shop, wood shop, or welding shop. Do not use equipment alone in the machine shop, wood shop, or welding shop; it is a serious safety violation.

Safety first includes not only your safety and the safety of others, but the safety of the equipment and tools as well. It is a huge privilege to have access to this set of equipment and we need to ensure that the equipment is being properly used and maintained. There is no reason in this space to use a screwdriver as a hammer. We have hammers. Use tools for their intended purposes, not just for your safety, but for the safety of the tool.

Safety is our number one concern as you use the equipment and tools available in the Maker Hub. In the Maker Hub, there is a very clear distinction between things that are considered equipment and things that are considered tools. Equipment is a special category of machines that, by definition, requires certified training before an individual is allowed to use it. Tools have no certification process; they can be used by anyone who has completed this Maker Hub Introduction course and passed the quiz. That does not mean that tools are necessarily less dangerous; equipment just requires more training. Do not use any equipment that you have not been certified on. There are several equipment stations in The Hub such as the sewing machines, the electronics workstation, and the heat press to name a few. All equipment is marked in the Maker Hub with special icons that are displayed either on, around, or above the equipment. Here's an example icon for the sublimation printer.

Equipment that has an icon posted over it, by definition, requires specialized certification training. Without completing this training, you are not authorized to utilize the equipment! Have we beat this dead horse enough yet? Think of these certifications as a “license to learn.” They allow you to utilize the equipment, but you should still feel free to ask for help, at any point, from a shop mentor or technician.

Never forget ... SAFETY FIRST!

Reset the Space

This commandment is simple enough to understand, but sometimes difficult for ... let’s just say it ... people ... to implement. The idea is very simple. Put things back. Leave the space better than you found it. It's not that hard. There is a place for everything, and everything has a place. There are marks on the floor in the Hub for the tables. These are just there to help remind you. This principle applies to EVERYTHING in the space. If you move a chair, put it back. If you move a table, put it back. If you use a tool, put it back. If you use a rolling computer, put it back. That means you don’t take things from one room and leave them in another. You see, that would not be “putting it back.” You see where I am going with this? If you use a machine in the shop, put the tools away. Use the vacuum to clean up. Make the space look better than you found it. If you want a marker for a whiteboard in the space, go request one from the Tool Room. They are free for usage in the space. Do not take them from other rooms. Do not take erasers from other rooms. If you use a whiteboard, erase it. I could go on. Sort of want to. But I will contain myself. Ok ... a few more ...

We currently allow food and drink in the Maker Hub. Resetting the Space means that you don’t leave food spills, wrappers, or trays, or anything that wasn’t there when you came in.

Now, we understand that sometimes you need to leave things out. Maybe you are in the middle of a large test and you need something to run overnight. In cases like this, it is OK, but you NEED to leave a note on your system so that others know the situation. This is just common courtesy.

Whatever you do, RESET THE SPACE!

Be Professional

This commandment has two sides to it. It covers the idea of acting like a professional (which Webster’s defines as “exhibiting a courteous, conscientious, and generally businesslike manner in the workplace”). The term also describes the standards of education and training that prepare members of the profession with the particular knowledge and skills necessary to perform their specific role within that profession. Hopefully, you are learning both of these as part of your education at George Fox University. In the Maker Hub we expect you to develop as a courteous, conscientious, and skilled craftsman, understanding the tools and equipment in the Maker Hub and how to use them effectively.

Being a professional has some obvious behavioral ramifications. First, be Christlike. Think of others better than yourselves. Share. If you are using a meeting room to do individual work, and a team needs a meeting room, then you should yield the room. Function is more important than who got there first. This is being a professional.

If you are working with a tool or piece of equipment, and you don’t know the proper way to do what you are attempting - ASK SOMEONE! Learn! Become a professional. Learn the craft. This is an educational space. You might think it will be quick and you can just get it done “your” way and not learn how to do it correctly. Be a professional and learn the proper way, and then be available to teach others.

One very important, and likely difficult part of being a professional is to correct others when they are not being professional. It is your responsibility to speak up when you see somebody doing something inappropriate. If you see somebody doing something unsafe, not resetting the space, or being unprofessional, the professional thing to do is to remind them of the three commandments and ask them politely to correct their action. This is OUR space, not any individual's. As a group, we expect everyone in the space to keep the space safe, clean, and operable for everyone.

Now, it’s time for a brief “family chat” (Nick speaking here). I am primarily addressing our engineering students where I hear of these issues occurring, but this topic certainly applies to all students, all majors, all Maker Hub users, and beyond. I hear reports of sexist comments and crude joking at the expense of one gender or the other occurring in the Maker Hub (albeit far less than reports I hear from other universities). I doubt anyone is surprised to hear me say that this is not professional behavior. Having been college student myself at one point, I am familiar with the type of locker room talk that “gets a laugh out of the boys.” If you actually take a minute to examine the origin/purpose behind such comments, it exposes a significant thread of immaturity. Some who engage in sexism make socially unacceptable statements but cover them by saying “it’s just a joke.” Some are seeking attention or approval from their peers. Some want to be perceived as funny or edgy by others. Some have a very fragile masculinity or femininity and feel better when they put the other gender down. Some genuinely have a perverted ideology concerning men, women, and gender roles and feel a need to stroke their own ego. No matter the intent, sexist conduct displays a lack of maturity.

There is a time and place for appropriate humor concerning the whimsical rivalries between various engineering disciplines or even differing majors. Still, such humor should never include elements that would dishonor one gender or the other. And yes, let me be clear: the standard goes both directions. I am well aware that men are the more common offenders, but that does not give women any license or justification to return fire with disparaging remarks. We reject the “eye-for-an-eye” mentality. I speak on behalf of the College of Engineering (and the university as a whole) when I say that one of our main goals is to guide you toward greater levels of maturity and let the transforming love of Christ be the primary thing that informs your thoughts, speech, attitudes, and actions. Insomuch as your interaction with the Maker Hub could contribute toward this goal, the Maker Hub will continue to uphold a professional culture and expect our users to meet the standard.

Much more can be said about this topic, but for the sake of space, I will pause here. Please reach out to nsullivan@georgefox.edu to report violations or engage in further dialogue about this topic.

BE PROFESSIONAL!

How We Handle Violations

These are The Three Commandments, and they form the rule and order for the Maker Hub. There are similarities to the rule and order in Christianity. As G.K. Chesterton said in his classic book “Orthodoxy,”

"The more I considered Christianity, the more I found that while it had established a rule and order, the chief aim of that order was to give room for good things to run wild."

It is our hope and expectation that you and other students will be able to run wild and create many wonderful things in this space. These “commandments” are intended to provide that space - and the expectation is that everyone will abide by them. But, as we know, not everyone chooses to do so (1 Tim 1:9-10). We have seen various ways that different schools address these violations, and most use expulsion from the space as the primary penalty. Our penalty system is purposely vague to allow us to handle violations on a case-by-case basis. Some violations (not putting a chair back after moving it) might be comparatively minor, while others are extremely severe. An example of an extremely severe violation would be unauthorized usage of equipment in the machine shop or wood shop, or even authorized usage of a machine shop/wood shop machine without anyone else present. These violations would most likely result in immediate suspension from accessing the Maker Hub. Let's just not go there, please.

Ok, moving onward. You might have noticed that the Maker Hub itself and many of the facility doors around the Maker hub are access-controlled. The main doors should not be propped open except for Maker Hub events. Unless a facility is being monitored by the Maker Hub staff, a Maker Hub work study student, or a volunteer/ace, the facility doors should not be propped open. Please leave these doors closed under normal circumstances. Obvious exceptions are the meeting rooms and computer lab (we don't care if you use them with the doors open or closed). Other exceptions are the wood shop and welding shop; while users are working in these two spaces, the doors must remain propped open for safety reasons. You might be surprised how something so simple as "proper door usage" factors into the SAFETY FIRST and BE PROFESSIONAL commandments. It is a serious liability concern for the Maker Hub and the university if people are using the space without undergoing the proper safety training. If you're unsure if the people walking behind you have access to a certain facility, ask... don't be afraid to introduce yourself and make new friends. Everyone in the space should understand the three commandments and will be expected to adhere to these principles.

Finally, as a friendly reminder, we have security cameras posted throughout the Maker Hub, so do be on your best behavior. The cameras exist to help protect the space and enforce violations. All public areas are under constant surveillance, and everything is being recorded. This means that, if necessary, the video can be reviewed to help identify nefarious behavior or the cause of an accident. If an accident happens in the Maker Hub, first decide if you need to call an ambulance. Second, notify the Lead Technician and/or Maker Hub Manager. Even if no one got hurt... if you broke something... if something dangerous happened... if a significant malfunction occurred, but then it magically fixed itself later... please notify the Maker Hub employees. It's always better to take initiative in owning your mistakes than for the Maker Hub staff to find out what happened by reviewing the camera footage.

Let's switch gears to a happier topic.

Things You Need To Know About The Hub

 
Map of the Maker Hub

The Facilities section on the Main Page shows a gallery of the different spaces that comprise the whole Maker Hub. See the map to the right for the layout of the Maker Hub. With the exception of the doors and the Senior Design Space, there are 11 labelled facilities on the map.

For students, your standard entry and exit point for the Maker Hub will be the main doors. Please do not use the senior design doors, the loading dock doors, or any of the emergency exit doors (unless, for example, there is an emergency or you are receiving a large shipment on the loading dock). This is intentional to funnel our user base through the turnstiles. As of the beginning of the spring semester 2023, the turnstiles next to the front desk are now live. This means that users will now use their GFU ID card at the turnstiles to swipe in on entry and swipe out when exiting the Maker Hub. Anyone who walks through without swiping will set off the alarm, and that would be sooo embarrassing.

A brief explanation of why... The turnstiles are part of the Maker Hub's data collection initiative. These data will show the collective usage of the Maker Hub and provide quantitative leverage for acquiring funding for new equipment and other developments in the space. We will also be able to analyze usage trends to better serve our current user base and inform our marketing efforts. Your compliance with this new policy benefits the Maker Hub and creates more opportunities for us to develop the space. Just in case it needs to be stated explicitly: Proper turnstile usage will be expected of all Maker Hub users. Violators should expect consequences... but, we know none of you would be so flagrant. ;)

If you are giving a tour, you can ask someone working at the front desk to temporarily disable the turnstiles so that all of your tour guests won't set off the alarm. The front desk has a regular rotation of work study students that work during the afternoons and early evenings on weekdays. Feel free to ask them for assistance (or Katherine or Jennifer if they are working at the Maker Hub front desk).

The Hub

The space we call "The Hub" refers to the large central room, which includes the lobby and hallways (the blue area on the map where the Maker Hub logo is). The Hub is a 24/7 general-use area that is meant for designing and making. It has approximately 8 rolling workbenches, some blue rolling carts, 8 computers on wheels, tool racks on the wall, and some semi-permanent stations.

First, there are approximately 8 open workbenches surrounded by tall drafting chairs that are open for general use. Each of these has a permanent home that is marked on the floor. Each workbench has power outlets on each leg, which can be powered by plugging the workbench's power plug into the yellow power outlets that come down from the ceiling. The yellow power outlets have been positioned so that that they hang down directly next to the workbench. These workbenches have locking casters and can be moved. However, when you have finished with the workbench, please reset the space. Ensure that the workbench is placed back inside of the special marks on the floor, and place the drafting chairs (usually 4 of them) around the workbench. When you RESET THE SPACE, it makes it nice for those following behind you. And we want to be nice ... don’t we? Yes is the answer to that question. If you need to leave your project out on a workbench for an extended period, you must mark it as "in use" with a note including your name, date, contact info, and when the project will be moved/cleaned up. There should be a good reason for this because we don't want to lock down a workbench for days. If there are special circumstances, please speak with your project advisor and/or a Maker Hub employee.

Project storage is at a premium in the Maker Hub. Visit our Project Storage page to see what storage spaces are available. We do not have a lot of space to store projects. The blue rolling carts that live in the hub are designed for project transportation, not permanent project storage. When you are finished using these carts, please clear them off and return them where you found them. If, for some special reason, you need to use the cart continuously for a short time, mark the cart as "in use" with a note per the description above. This is useful if you want to run overnight tests or you are in the middle of an assembly. However, this is for short term use. Remember, BE PROFESSIONAL. Release the materials for others to use. There are project storage racks in the senior design hallway. If you want to store your project there, label your shelf/materials with your name, the date, and contact info. Do not swipe other people's labeled materials for your own project. Keep in mind that these storage racks are periodically cleaned out each summer, so please take your projects with you at the end of the spring semester or notify a Maker Hub employee if you want your project to stay over the summer.

There are 8 computers on wheels that live up against the wall facing the quad or between the meeting rooms on the south side of the hub. They are all the same as the Computer Lab machines with the exception of number 8. Computer 8 has the Adobe Creative Suite in addition to all the rest of the software. Side note: the other computer in the Maker Hub with the Adobe Creative Suite is the computer connected to the vinyl cutters and the sublimation printer. All of the computers on wheels have a UPS (uninterruptible power supply) that allows you to unplug the machine and move it around the Maker Hub without powering it down. You allegedly have about 15 minutes of power available from the UPS (if anyone actually times it, let us know). Feel free to roll these computers to wherever you want to use them; however, when you are finished, RESET THE SPACE! The computers, when not in use, should always be sitting at their permanent locations plugged into a wall outlet.

On the wall, there are a couple tool racks. These are available for use within the Maker Hub. As should be obvious by now, when you are done using the tools, return them - RESET THE SPACE. Do not take these tools out of the Maker Hub. That's what the Tool Room is for. A tool is to the Tool Room as a book is to the library. Check out tools for an extended period of time and simply return them by the due date. The Tool Room hours are posted on the front desk.

There is A/V equipment in the corner of the hub. Best to just leave it alone.

The Low-Fidelity Prototyping Station is provided so that students can make quick project mock-ups. Please BE PROFESSIONAL when using this station. While it might be tempting to make pipe-cleaner men as you did in elementary school, these supplies are provided for free to be utilized for projects, not entertainment. We will simply not be able to provide these supplies if they are continually wasted. This station is notorious for being left a mess, so please RESET THE SPACE and clean up when you are finished. Also, there is a small laminating machine located at the low-fidelity prototyping station. The low-fidelity prototyping station and the laminating machine are not considered "equipment," which means that there is no certification process necessary to use these items. See The Hub wiki page to see what equipment is located in the hub.

Meeting Rooms

 
A neat and orderly Meeting Room :)

There are 8 meeting rooms in the Maker Hub (the dark blue areas on the map). The intended function of these rooms is to house meetings (i.e. these are not study rooms, but meeting rooms). Which means, priority will be given to weekly meetings with senior design teams, servant engineering teams, and other teams meeting for classes or projects. When not requested for a team meeting, these rooms can be used by individuals for studying, or by groups for hanging out. If you are acting like a professional, then you will yield the room to others who have a legitimate project-related need for the meeting room. This happens frequently, so do not be surprised or upset if you are displaced by a project team. The meeting rooms fill up fast (because they're awesome), but everyone needs to remember that the meeting rooms serve the primary purpose of housing project-related meetings. If you are studying in a meeting room, consider it a very professional act to offer "your" meeting room to a team that needs to meet and then study elsewhere. Likewise, if a team would like to use a room at an unscheduled time, it would be professional for the team to first look for an empty room, and second, look for a room that has the least effect on others who might be using the room for group study or other activities.

Each of these rooms is equipped with a wall-mounted flat-screen TV and HDMI connector. There is a whiteboard in each room as well. As with other whiteboards, please do not take the erasers or markers, and always erase the board when you leave the meeting room. If there are no markers or erasers, please obtain them from the Tool Room. When you leave the meeting room, turn off the TV and leave the HDMI cable accessible (not tossed underneath the table). Also, there should be 1 table (haven’t seen anyone take those yet), and 7 short chairs without armrests (these chairs are different from the taller drafting chairs in The Hub), and a clean whiteboard with an eraser and markers. No extra items should be left behind (e.g. computer on wheels). Just like the picture to the right, remember that you should always RESET THE SPACE.

There are coat hangers on the wall behind the door. These are only for coats, they will not be strong enough to hold backpacks.

Enjoy the meeting rooms - just remember The Three Commandments.

Computer Lab

The computer lab is open to all Maker Hub users (the yellow area on the map). The computer lab has 29 computer stations (28 for students and 1 for the instructor). Each of these stations consists of a computer, a keyboard, a mouse, and a chair with armrests. These items form a unit. Which should make it clear that you should never take a keyboard, a mouse, or a chair from this space. There are no chairs with armrests in The Hub or meeting rooms. So, leave the armrest-chairs in the computer lab. The keyboards and mouses are intended for these computers. If a keyboard or mouse is broken, inform the Tool Room. If there is a dire situation where you need to borrow one of these items, as always, RESET THE SPACE. Several classes are held in the computer lab, and we don't want them to waste class-time looking for missing keyboards, mouses, or chairs.

The large whiteboards in the computer lab follow the same principles as the whiteboards in the meeting rooms. Don't remove markers or erasers from the computer lab. If the markers are missing or not functional, go to the Tool Room and get new ones. Erase the board when you are finished. If you want to save your whiteboard writing, take a picture. Writing “Do Not Erase” is not an acceptable action for a whiteboard. You can save it yourself and reproduce it quickly later. Again, BE PROFESSIONAL.

Clean up after yourself; consider this good practice for marriage if indeed you would like to get married one day. This means you need to be sure to clean up any papers, food, and drink. If you have a class in the computer lab and receive a handout, it is your job to study it like your wonderful professor intended. But if you are not going to do that, it is your responsibility to recycle it. Leave the space better than you found it.

There is a set of 72 small storage lockers in this room. Their main function is to hold Maker-Hub-related materials for classes/labs or Maker-Hub-related personal projects. They are not to be used as personal lockers for non-Maker-Hub-related items. Now clearly, if you are already using a locker for Maker Hub reasons, then it is certainly fine to additionally place a textbook or engagement ring in there (preferably in the spring). But don’t secure a locker if you are not actively working on a project or participating in a class/lab. You will need to provide your own lock. At the end of each semester, the lockers should be cleared out and the locks removed. If there are still locks on them, this will give us a chance to use our bolt cutters and sell the locker's contents on the web. That is always a good time. If you need to maintain a locker over the break, you will need to coordinate with the Maker Hub employees. Please do not set things on top of the lockers. These items will be routinely disposed of without warning. Clearly, setting something on top would not be resetting the space, and hopefully you are discovering that this is an important commandment.

Material Policy

The Maker Hub gladly provides a limited assortment of low-cost materials and consumable items to its users—free of charge. This is true for both academic and personal projects. We want to remove as many monetary barriers as possible as users work on projects. There are two noteworthy areas where the Maker Hub expects that the user cover material costs.

The first scenario is for projects that require a large quantity of materials. A “large quantity” is an intentionally subjective term that will be decided by the Maker Hub staff on a case-by-case basis. The term "large quantity" also applies to expensive materials such as a full sheet of plywood, which can cost well over $100 depending on the quality. Sure, some projects legitimately need a large quantity of materials. Just ask the Maker Hub staff about it first. Maybe we'll give you the green light; maybe we'll ask you to cover the cost. We monitor our inventory carefully and want there to be enough materials available for everyone to enjoy, so please don't abuse this privilege.

The second scenario is for specialized materials that the Maker Hub does not keep in stock. In this case, we can direct the user to a list of local businesses and online stores to purchase materials. If you are unfamiliar with the materials you to plan to use for your project or what materials you "should" use, talk with the Maker Hub staff before purchasing. We might be able to save you a big headache.

Production Runs

Production runs are not allowed in the Maker Hub. Let's define what this means from the Maker Hub's perspective...

The primary factor that qualifies a project as a production run is attempting to produce a large quantity of items, but this factor is also weighed in conjunction with the time, effort, and cost needed to complete the project. Again, we are using a “large quantity of items” as an intentionally subjective term. If you ask yourself questions like... how many things am I trying to make? how much time will it take? what amount of effort is involved? how much will it cost? and the answer to all of them is a LOT, then you are definitely attempting a production run. The Maker Hub staff reserves the right to determine whether a project qualifies as a production run on a case-by-case basis.

Why does the Maker Hub care about production runs? The Maker Hub is primarily an educational space; it is not a mass-production facility. Educating, training, and equipping will always be among our top priorities. Production runs tend to lock down a particular space, tool, or piece of equipment for an extended period of time as the user conducts repetitive tasks to produce his or her items. Whether it’s a production run or not, locking down the Maker Hub’s resources for an extended period of time without express permission from the Maker Hub staff comes in conflict with the third commandment: Be Professional! With education as a top priority, high production volumes can begin to compete with that priority by tying up Maker Hub resources for long periods of time. Secondly, the Maker Hub is not the place to fire up your business's assembly line and start cranking out hundreds of widgets for profit. If indeed you have the skills to make something in the Maker Hub that someone else would actually buy with real money, do it! Make something amazing and sell it. However, the Maker Hub will not support any form of "profit making" that includes assembly line production or qualifies as a production run.

How The Training System Works

Anyone need a snack break? to stand up and stretch? a brief intermission? Almost there!

A few category definitions for you...

  • Facilities are the various spaces in the Maker Hub. They usually require wiki reading and a passed Canvas quiz.
  • Equipment is machinery where authorized usage requires wiki reading, a passed Canvas quiz, certification training, and a demonstration.
  • Tools are items that range from hand tools to benchtop instruments. Some have informative wiki pages, but they do not require a Canvas quiz, certification training, or a demonstration in order to use them.

Right now, you are in the middle of the Maker Hub Introduction training course. Successful completion of this course grants you 24/7 access to The Hub. There are many other training courses available. Most facilities in the Maker Hub have a top-level Canvas quiz (e.g. the Prototype Lab). Successful completion of the Prototype Lab's top-level Canvas quiz grants you access to the Prototype Lab. Each piece of equipment in the Maker Hub has an associated Canvas quiz (e.g. the Prusa 3D Printer). Successful completion of the Prusa 3D Printer's Canvas quiz plus training and a demonstration from a staff member authorizes you to use the Prusa 3D Printer. Canvas quizzes must be taken sequentially depending on where the equipment is located; you won't be able to take the Prusa 3D Printer quiz until you have passed the Prototype Lab's top-level quiz. For all you visual learners out there, take a look at the fancy graph below. Each node represents a Canvas quiz (unless the node is labelled with "No Quiz"). The graph follows a sequential process of completing quizzes from left to right. Take a minute to bask in its glory, then continue reading below.

Notice that the middle column contains all of the facilities within the Maker Hub, and the right column contains each piece of equipment within the Maker Hub.

The Training Process

Training follows a specific progression as shown in the image to the right...

 
The Training Progression in the Maker Hub

The first place to start is by reading the wiki page on whatever facility or piece of equipment you would like to use. Watch the videos, open up the user manuals, etc. After you finish, you can find the link to the Canvas quiz under the Certification header. Theoretically, all the information you need to pass the Canvas quiz can be found somewhere on its respective wiki page. The link will take you to the main page of the Canvas course. You will need to self-enroll in the Canvas course by clicking the "Join This Course" button in the right column. If the quiz is locked, it means that either you haven't self-enrolled or you haven't yet taken the facility's top-level quiz for that piece of equipment. Pass the quiz with 100%. If you took a quiz for a facility, you're done. Facilities do not require you to schedule training or demonstrations; only equipement does. But it seems kind of pointless to have access to a facility but not be able to use anything in it... so let's continue the process for a piece of equipment. You've read the wiki page; you've passed the Canvas quiz with 100%. What's next? The next step is to scroll back to the top of the wiki page and find the student ace listed for that piece of equipment. A student ace is simply a student who knows a piece of equipment well and is willing to train other students on the proper usage of that equipment. Student aces often receive extra privileges such as extended hours in their particular facility. Once you've found the student ace's email address, send them and email and CC makerhub@georgefox.edu. Your email is simply a request to schedule training and a demonstration for the equipment.

What if there is no student ace listed? Try going to the facility page of where the equipment is located to see if there is an ace or a shop supervisor listed. What if there still is no student ace or shop supervisor listed there? Well, today might be your lucky day to offer to be a student ace for that particular equipment. No one in the Maker Hub is required to be an ace for anything, but the "ace" system is critically important to the operation of the Maker Hub and the culture we continue to develop. We focus our efforts into developing a culture in the Maker Hub that is collaborative, where people are eager to be helpful and share best practices. Our culture empowers students to take ownership of the Maker Hub through various roles and responsibilities. We are very grateful for anyone willing to be a student ace and assist others.

If there are no student aces available, just send your email to makerhub@georgefox.edu and someone will schedule a training and demonstration with you. The demonstration is usually a set task where the trainee will create a specific object or complete several functions to demonstrate basic proficiency on the equipment. Each piece of equipment has a unique demonstration, and the instructions are listed on the equipment's wiki page. Once the training and demonstration are complete, you are certified on the equipment. This means that you are free to use the equipment (adhering to the buddy system as applicable) whenever the facility is open. Each facility has posted hours on its respective wiki page and/or on the door of the facility. What does certification NOT mean? Certification does not mean that you know everything about the machine - neither does it mean that you're on your own to figure out how to use the machine if you forgot something from the training. Again, consider certifications as a "license to learn" more about the equipment. Ask questions and seek help from the Maker Hub staff and your peers.

Having just described the training process in excruciating detail, I promise it's a lot easier than it sounds. And it becomes much faster and more familiar once you've gone through it a few times.

Quiz Resets

All Canvas quizzes are reset at the beginning of the summer, so you will need to retake all of your quizzes in the fall in order to maintain certification on those pieces of equipment. This is intentional to refresh your knowledge of how to operate the machines you've trained on once a year. However, all of your demonstrations carry over from year to year, so you don't have to go through the process of scheduling a training and demonstration with a student ace again. By all means, ask for refresher training if you need it. But, there is no requirement to redo certification training/demonstrations for any piece of equipment that you have already been certified on at some point.

The Maker Hub Waiver

For legal and liability reasons, the Maker Hub has a waiver that all users must sign prior to any equipment or tool usage. See our User Policies page for more details on different Maker Hub users with respect to the waiver.

The Maker Hub waiver is part of the Maker Hub Introduction Canvas Course and should be completed by users there. It is simply listed here for reference: Maker Hub Waiver V2

Certification

Now that you've probably experienced information overload, go knock out this Maker Hub Introduction Canvas quiz (link below). If you miss a question, take the quiz again. 100% is the only passing grade for Maker Hub quizzes. Training in the Maker Hub can be tedious, but it's not meant to be frustrating. If you are confused or something is not working correctly for you, please contact the Maker Hub staff for assistance at makerhub@georgefox.edu.

Maker Hub Canvas Course

What's Next?

After you have passed the Maker Hub Introduction quiz on Canvas with 100%, you should receive card-swipe access to the main doors of the Maker Hub on the following day (because the card reader system updates at midnight).