From f326594743563d35a5f858d01ea184b6b072c6b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Thu, 20 Jan 2022 11:33:11 +0100 Subject: [PATCH 001/120] De-dupe readme, point usage to docs --- readme.md | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/readme.md b/readme.md index 0768cfe..92cb351 100644 --- a/readme.md +++ b/readme.md @@ -3,25 +3,7 @@ Ergogen is a keyboard generator that aims to provide a common configuration format to describe **ergonomic** 2D layouts, and generate automatic plates, cases, and (un-routed) PCBs for them. The project grew out of (and is an integral part of) the [Absolem keyboard](https://zealot.hu/absolem), and shares its [Discord server](https://discord.gg/nbKcAZB) as well. - - - - - -## Usage - -Supposing you have a config ready, you can use ergogen either on the command line, or through the [web UI](https://ergogen.xyz). - -Command line usage requires `node v14.4.0+` with `npm v6.14.5+` to be installed, the repo to be checked out, `npm install` to be issued, and then simply calling the CLI interface through `node src/cli.js`. -The `--help` switch lists the available command line options. - -The [web UI](https://ergogen.xyz) is a more accessible version of the same codebase, where everything happens in your browser. -It's been patched together on a fresh Chrome-derivative, and I didn't take any care to make it compatible with older stuff, so please use something modern! - -As for how to prepare a valid config, please read the [reference](https://docs.ergogen.xyz). - - - +For usage and config information, please refer to the [docs](https://docs.ergogen.xyz). ## Contributions From 3570be2184c4fe7c6fe92489792d26bd2c7ba934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Thu, 20 Jan 2022 11:42:59 +0100 Subject: [PATCH 002/120] Delete old docs --- docs/reference.md | 644 ---------------------------------------------- 1 file changed, 644 deletions(-) delete mode 100644 docs/reference.md diff --git a/docs/reference.md b/docs/reference.md deleted file mode 100644 index 056daeb..0000000 --- a/docs/reference.md +++ /dev/null @@ -1,644 +0,0 @@ -## Overview - -The whole Ergogen config is a single YAML file. -If you prefer JSON over YAML, feel free to use it, conversion is trivial and the generator will detect the input format. -The important thing is that the data should contain the following keys: - -```yaml -points: -outlines: -cases: -pcbs: -``` - -The `points` section describes the core of the layout: the positions of the keys. -The `outlines` section then uses these points to generate plate, case, and PCB outlines. -The `cases` section details how the case outlines are to be 3D-ized to form a 3D-printable object. -Finally, the `pcbs` section is used to configure KiCAD PCB templates. - -In the following, we'll have an in-depth discussion about each of these. -There's also a completely separate "preprocessing" step to help reduce unnecessary repetition. -Of course, if the declarative nature of the config is still not terse enough (despite the preprocessor, the built-in YAML references, and the Ergogen-based inheritance detailed below), there's nothing stopping you from writing code that generates the config. -It brings the game to yet another abstraction level higher, so that you can use branching, loops, and parametric functions to compose a "drier" keyboard definition. - -
- - - - - - - - - - - - - - - - - - - - - - - -## Preprocessing - -Ergogen does a separate preprocessor pass on the config before starting to interpret it. -This consists of the following steps: - -- **Unnesting**: any object key containing dots (as in, `.`s) will be unnested. This allows the use of the so called "dot notation". For example, `nested.key.definition: value` will turn into `{nested: {key: {definition: value}}}` in the preprocessed config object. - -- **Inheritance**: the `$extends` key can be used in any declaration to inherit values from another declaration. Extension happens according to the following rules: - - if the new value is `undefined`, the old value will be used as a default; - - if both values are defined (and have the same type), the new one will override the old; - - if both values have different types, the new value will take precedence; - - if the new value is `$unset`, the resulting value will be `undefined`, regardless of previous type; - - for arrays or objects, extension is called for each child element recursively. - - The actual value of the `$extends` key should be the full absolute path of the declaration we wish to inherit from (using the above mentioned, nested "dot notation" if necessary). For example: - - ```yaml - top: - parent: - a: 1 - b: 2 - child: - $extends: top.parent - c: 3 - ``` - - This declaration will lead to `child` containing all three letter keys: `{a: 1, b: 2, c: 3}`. - -- **Parameterization**: allows regex replacements within declarations. Take the following declaration as a starting point: - - ```yaml - top: - value: placeholder - double_value: placeholder * 2 - $params: [placeholder] - $args: [3] - ``` - - In this case, every occurrence of the value "placeholder" will be replaced with "3", which allows us to define it only once and still use it in multiple places (kind of like a pseudo-variable). - -- **Skipping**: the `$skip` key can be used anywhere to, well, skip (or "comment out" entire declarations). It can also be useful when combining inheritance and parameterization. For example: - - ```yaml - grandparent: - a: placeholder1 - b: placeholder2 - $params: [placeholder1, placeholder2] - parent: - $extends: grandparent - $args: [value1] - child: - $extends: parent - $args: [,value2] - ``` - - Here, the grandparent defines two different parameters, but only the child knows both arguments that should be substituted. This would lead to an error at the parent's level, because it has two parameters, and only one argument. But, assuming that this is just an intermediary abstract declaration and we wouldn't want to use it anyway, we can just declare `$skip: true`. - -The result of the preprocessor is *almost* just a plain JSON object. -The only semantic difference is how numbers are handled. For example, the value `3 * 2` would lead to a string type in JSON, but since it's a mathematical formula, it can also be interpreted as a number. -Ergogen tries this interpretation for every string value, and if it succeeds, it calculates the results and converts them to JSON numbers. -This syntax also works with variables, which we can use to define units (see below). - -Otherwise, we can begin with the actual keyboard-related layout... - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Points - -A point in this context refers to a 2D point `[x,y]` with a rotation/orientation `r` added in. -These can be thought of as the middle points of the keycaps in a resulting keyboard layout, with an additional handling of the angle of the keycap. - -What makes this generator "ergo" is the implicit focus on the column-stagger. -Of course we could simulate the traditional row-stagger by defining everything with a 90 degree rotation, but that's really not the goal here. -Since we're focusing on column-stagger, keys are laid out in columns, and a collection of columns is called a "zone". -For example, we can define multiple, independent zones to make it easy to differentiate between the keywell and the thumb fan/cluster. - -Points can be described as follows: - -```yaml -points: - units: - name: val - ... - zones: - my_zone_name: - anchor: - ref: - orient: num # default = 0 - shift: [x, y] # default = [0, 0] - rotate: num # default = 0 - affects: string containing any of x, y, or r # default = xyr - columns: - column_name: - ... - rows: - row_name: - ... - key: - ... -``` - -We start with a `units` clause, where we can define units to use in relative calculations. -The three predefined ones are `u` (=19mm), `cx` (=18mm, named for "Choc X distance"), and `cy` (=17mm, named for "Choc Y distance"). -But we can add any other (or modify these predefined ones), or even use an existing measure in calculating a new value (for example, `double: 2 u`). -Recall how each string that can be interpreted as a math formula will be treated like a number, so this is a great way to add math-level variables to your config. - -Then comes the `zones` key, under which we can define the individual, named zones. -`anchors` are used to, well, anchor the zone to something. -It's the `[0, 0]` origin with a 0 degree orientation by default, but it can be changed to any other pre-existing point. (Consequently, the first zone can't use a ref, because there isn't any yet.) -The `ref` field can also be an array of references, in which case their average is used -- mostly useful for anchoring to the center, by averaging a key and its mirror; see later. -This initial position can then be changed with the `orient`, `shift`, and `rotate` options. -`shift` adds extra translation, while the difference between `orient` and `rotate` is whether they add their rotation before or after the translation. - -Also note that anywhere an anchor can be specified, a list of anchors is also valid. -It would be meaningless, though, if each subsequent anchor would override the previous one, so the `affects` clause helps to affect only certain dimensions of the anchor. -It can be declared using a string containing any of `x`, `y`, or `r`, which stand for the x and y coordinates and the rotation of the anchor, respectively. - -Once we know _where_ to start, we can describe the `columns` of our layout. - -```yaml -columns: - column_name: - stagger: num # default = 0 - spread: num # default = 19 - rotate: num # default = 0 - origin: [x, y] # relative to center of column's first key, default = [0, 0] - rows: - row_name: - ... - key: - ... -``` - -`stagger` means an extra vertical shift to the starting point of the whole column compared to the previous one (initially 0, cumulative afterwards). -The layout of the column then proceeds according to the appropriate key declarations (more on this in a minute). - -Once the column has been laid out, `spread` (the horizontal space between this column and the next) is applied, and an optional (cumulative) rotation is added around the `origin` if `rotate` is specified. -We repeat this until the end of the column definitions, then move on to the next zone. - -
- -Regarding lower level layout, rows appear both in zones and columns, and keys can be defined in five (!) different places. So what gives? -Don't worry, all this is there just so that we can keep repetition to a minimum. -We could safely remove the `rows` and `key` options from zones, and the `key` option from column definitions, without losing any of the functionality. -But we'd have to repeat ourselves a lot more. - -Let's start with rows. -`zone.rows` can give an overall picture about how many rows we'll have, and set key-related options on a per-row basis. -But what if we want to extend this initial picture with some column-specific details? (More on "extension" in a bit.) -For example, we want an outer pinky column where padding is tighter than it is for the others. -That's where `column.rows` can help, specifying a row "extension" for just that column. - -And what if we want to **override** the zone-level declarations in a certain column? -For example, we don't just want to modify a row's attributes for a given column, but actually override the amount of rows there are. -Like an outer pinky column with just two keys instead of the regular three. -That's where `column.row_overrides` can help, specifying a row-level override that disregards the zone-level defaults. -Easy. - -Now for the trickier part: keys. -There are five ways to set key-related options (again, to minimize the need for repetition): - -1. at the global-level (affecting all zones) -2. at the zone-level -3. at the column-level -4. at the row-level -5. at the key-level - -These "extend" each other in this order so by the time we reach a specific key, every level had an opportunity to modify something. -Note that unlike the overriding for rows, key-related extension is additive. -For example, let's suppose that a key-related attribute is already defined at the column-level. -When we later encounter a key-level extension for this key that specifies a few things but not this exact key, its value will stay the same instead of disappearing. - -When there is a "collision", simple values (like booleans, numbers, or strings) replace the old ones, while composites (arrays or objects) apply this same extension recursively, element-wise. -So when `key = 1` is extended by `key = 2`, the result is `key = 2`. -But if `key = {a: 1}` is extended by `key = {b: 2}`, the result is `key = {a: 1, b: 2}`. - -Lastly, while there are a few key-specific attributes that have special meaning in the context of points (listed below), any key with any data can be specified here. -This can be useful for storing arbitrary meta-info about the keys, or just configuring later stages with key-level parameters. -So, for example, when the outline phase specifies `bind` as a key-level parameter (see below), it means that it can be specified just like any other key-level attribute. - -Now for the "official" key-level attributes: - -```yaml -name: name_override # default = a concatenation of zone, column, and row -shift: [x, y] # default = [0, 0] -rotate: num # default = 0 -padding: num # default = 19 -skip: boolean # default = false -asym: left | right | both # default = both -mirror: -``` - -`name` is the unique identifier of this specific key. -It defaults to a `_` format, but can be overridden if necessary. -`shift` and `rotate` declare an extra, key-level translation or rotation, respectively. -Then we leave `padding` amount of vertical space before moving on to the next key in the column. -`skip` signals that the point is just a "helper" and should not be included in the output. -This can happen when a _real_ point is more easily calculable through a "stepping stone", but then we don't actually want the stepping stone to be a key itself. -Finally, `asym` and `mirror` relate to mirroring, which we'll cover in a second. - -
- -Since `zones` was only a single key within the `points` section, it's reasonable to expect something more. -Indeed: - -```yaml -points: - units: - zones: - key: - rotate: num # default = 0 - mirror: - axis: num # default = 0 - ref: # and other anchor-level settings - distance: num # default = 0 -``` - -Here, `rotate` can apply a global angle to all the points, which can simulate the inter-half angle of one-piece boards. -Then comes the mirroring step, where the generator automatically copies and mirrors each point. -If there's an `axis` set within the `mirror` key, points will be mirrored according to that. -If not, the axis will be calculated so that there will be exactly `distance` mms between the `ref`erenced point and its duplicate. - -Now if our design is symmetric, we're done. -Otherwise, we need to use the `asym` key-level attribute to indicate which side the key should appear on. -If it's set as `left`, mirroring will simply skip this key. -If it's `right`, mirroring will "move" the point instead of copying it. -The default `both` assumes symmetry. - -Using the _key-level_ `mirror` key (not to be confused with the global `mirror` setting we just discussed above), we can set additional data for the mirrored version of the key. -It will use the same extension mechanism as it did for the 5 levels before. - -And this concludes point definitions. -This should be generic enough to describe any ergo layout, yet easy enough so that you'll appreciate not having to work in raw CAD. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Outlines - -Once the raw points are available, we want to turn them into solid, continuous outlines. -The points are enough to create properly positioned and rotated rectangles (with parametric side lengths), but they won't combine since there won't be any overlap. -So the first part of the outline generation is "binding", where we make the individual holes _bind_ to each other. -We use a key-level declarations for this: - -```yaml -bind: num | [num_x, num_y] | [num_t, num_r, num_b, num_l] # default = 0 -``` - -Again, key-level declaration means that both of these should be specified in the `points` section, benefiting from the same extension process every key-level setting does. -This field declares how much we want to bind in each direction, i.e., the amount of overlap we want to make sure that we can reach the neighbor (`num` applies to all directions, `num_x` horizontally, `num_y` vertically, and the t/r/b/l versions to top/right/bottom/left, respectively). -Note that it might make sense to have negative `bind` values, in case we not only don't want to bind in the given direction, but also don't want to "cover up" a potential corner rounding or bevel (see below). - -If it's a one-piece design, we also need to "glue" the halves together (or we might want to leave some extra space for the controller on the inner side for splits). -This is where the following section comes into play: - -```yaml -glue: - glue_name: - top: - left: - right: | num - bottom: - left: - right: | num - waypoints: - - percent: num - width: num | [num_left, num_right] - - ... - extra: - - - - ... - ... -``` - -...where an `` is the same as it was for points. - -The `top` and `bottom` fields in each glue's section are both formatted the same, and describe the center line's top and bottom intersections, respectively. -In a one-piece case, this means that we project a line from a left-side anchor, another from the right, and converge them to where they meet. -Split designs can specify `right` as a single number to mean the x coordinate where the side should be "cut off". - -This leads to a gluing middle patch that can be used to meld the left and right sides together, given by the counter-clockwise polygon: - -- Top intersection -- Left top point -- Left bottom point -- Bottom intersection -- Right bottom point -- Right top point - -If this is insufficient (maybe because it would leave holes), the `waypoints` can be used to supplement the glue. -Here, `percent` means the y coordinate along the centerline (going from the top intersection to the bottom intersection), and `width` means the offset on the x axis. - -If this is somehow _still_ insufficient (or there were problems with the binding phase), we can specify additional primitive shapes under the `extra` key (similarly to how we would use them in the exports; see below). -These are then added to what we have so far to finish out the glue. -(TODO: while the `extra` key is reserved for this purpose, it hasn't been needed, and therefore is unimplemented for now.) - -
- -Once we're satisfied with the glue, the outline is generated by the union of the bound left/right halves and the glue polygon. -Note that this outline is still parametric, so that we can specify different width/height values for the rectangles. - -Now we can configure what we want to "export" as outlines from this phase, given by the combination/subtraction of the following primitives: - -- `keys` : the combined outline that we've just created. Its parameters include: - - `side: left | right | middle | both | glue` : the part we want to use - - `left` and `right` are just the appropriate side of the laid out keys, without the glue. - - `middle` means an "ideal" version of the glue (meaning that instead of the `outline.glue` we defined above, we get `both` - `left` - `right`, so the _exact_ middle piece we would have needed to glue everything together - - `both` means both sides, held together by the glue - - `glue` is just the raw glue shape we defined above under `outline.glue` - - `tag: ` : optional tags to filter which points to consider in this step, where tags can be specified as key-level attributes. - - `glue: ` : the name of the glue to use, if applicable - - `size: num | [num_x, num_y]` : the width/height of the rectangles to lay onto the points. Note that these values are added to the evaluation context as the variables `sx` and `sy`. So during a `keys` layout with a size of 18, for example, a relative shift of `[.5 sx, .5 sy]` actually means `[9, 9]` in mms. - - `corner: num # default = 0)` : corner radius of the rectangles - - `bevel: num # default = 0)` : corner bevel of the rectangles, can be combined with rounding - - `bound: boolean # default = true` : whether to use the binding declared previously -- `rectangle` : an independent rectangle primitive. Parameters: - - `ref`, `rotate`, and `shift`, etc. (the usual anchor settings) - - `size`, `corner` and `bevel`, just like for `keys` -- `circle` : an independent circle primitive. Parameters: - - `ref`, `rotate`, and `shift`, etc. (the usual anchor settings) - - `radius: num` : the radius of the circle -- `polygon` : an independent polygon primitive. Parameters: - - `points: [, ...]` : the points of the polygon. Each `` can have its own `ref`, `shift`, etc. (all of which are still the same as above). The only difference here is that if a `ref` is unspecified, the previous point will be assumed (as in a continuous chain). For the first, it's `[0, 0]` by default. -- `outline` : a previously defined outline, see below. - - `name: outline_name` : the name of the referenced outline - -Using these, we define exports as follows: - -```yaml -exports: - my_name: - - operation: add | subtract | intersect | stack # default = add - type: # default = outline - - - ... -``` - -Individual parts can also be specified as an object instead of an array (which could be useful when YAML or built-in inheritance is used), like so: - -```yaml -exports: - my_name: - first_phase: - operation: add | subtract | intersect | stack # default = add - type: # default = outline - - second: - ... -``` - -Operations are performed in order, and the resulting shape is exported as an output. -Additionally, it is going to be available for further export declarations to use (through the `outline` type) under the name specified (`my_name`, in this case). -If we only want to use it as a building block for further exports, we can start the name with an underscore (e.g., `_my_name`) to prevent it from being actually exported. -(By convention, a starting underscore is kind of like a "private" marker.) - -A shorthand version of a part can be given when the elements of the above arrays/objects are simple strings instead of further objects. -The syntax is a symbol from `[+, -, ~, ^]`, followed by a name, and is equivalent to adding/subtracting/intersecting/stacking an outline of that name, respectively. -More specifically, `~something` is equivalent to: - -```yaml -type: outline -name: something -operation: intersect -``` - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## Cases - -Cases add a pretty basic and minimal 3D aspect to the generation process. -In this phase, we take different outlines (exported from the above section, even the "private" ones), extrude and position them in space, and combine them into one 3D-printable object. -That's it. -Declarations might look like this: - -```yaml -cases: - case_name: - - type: outline # default option - name: - extrude: num # default = 1 - shift: [x, y, z] # default = [0, 0, 0] - rotate: [ax, ay, az] # default = [0, 0, 0] - operation: add | subtract | intersect # default = add - - type: case - name: - # extrude makes no sense here... - shift: # same as above - rotate: # same as above - operation: # same as above - - ... - ... -``` - -When the `type` is `outline`, `name` specifies which outline to import onto the xy plane, while `extrude` specifies how much it should be extruded along the z axis. -When the `type` is `case`, `name` specifies which case to use. -After having established our base 3D object, it is (relatively!) `rotate`d, `shift`ed, and combined with what we have so far according to `operation`. -If we only want to use an object as a building block for further objects, we can employ the same "start with an underscore" trick we learned at the outlines section to make it "private". - -Individual case parts can again be listed as an object instead of an array, if that's more comfortable for inheritance/reuse (just like for outlines). -And speaking of outline similarities, the `[+, -, ~]` plus name shorthand is available again. -First it will try to look up cases, and then outlines by the name given. -Stacking is omitted as it makes no sense here. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -## PCBs - -Everything should be ready for a handwire, but if you'd like the design to be more accessible and easily replicable, you probably want a PCB as well. -To help you get started, the necessary footprints and an edge cut can be automatically positioned so that all you need to do manually is the routing. - -Footprints can be specified at the key-level (under the `points` section, like we discussed above), or here with manually given anchors. -The differences between the two footprint types are: - -- an omitted `ref` in the anchor means the current key for key-level declarations, while here it defaults to `[0, 0]` -- a parameter starting with an equal sign `=` is an indirect reference to an eponymous key-level attribute -- so, for example, `{from: =column_net}` would mean that the key's `column_net` attribute is read there. - -Additionally, the edge cut of the PCB (or other decorative outlines for the silkscreen maybe) can be specified using a previously defined outline name under the `outlines` key. - -```yaml -pcbs: - pcb_name: - outlines: - pcb_outline_name: - outline: - layer: # default = Edge.Cuts - ... - footprints: - - type: - anchor: - nets: - params: - - ... - ... -``` - -Defining both the `outlines` and the `footprints` can be done either as arrays or objects, whichever is more convenient. -The currently supported footprint types can be viewed in [this folder](https://github.com/mrzealot/ergogen/tree/master/src/footprints), where: - -- `nets` represents the available PCB nets the footprint should connect to, and -- `params` represents other, non-net parameters to customize the footprint. - -These can be specified in the eponymous keys within `pcbs.pcb_name.footprints`. - -
- - - - - - - - - - - - -## Phew, that's it. - -*Theoretically*, you should know everything to start making your own dream keyboard. -*Realistically* though, this might have been a bit dense, to say the least. But hey, this is the full reference, what did you expect? - -If you want to look at an example that leverages the full power of Ergogen, you can find [the Absolem project](https://github.com/mrzealot/absolem/) and its [configuration file here.](https://github.com/mrzealot/absolem/blob/master/absolem.yaml) - -If you'd like to get your feet wet with easier examples, and get gradually more hard-core, let me suggest the other tutorials in the docs folder (as they become available). -Alternatively, if you'd like to talk to a certified Ergogen representative, come join us [on Discord](https://discord.gg/nbKcAZB)! -It's also a great place to get in touch if you are already somewhat familiar with this whole shebang, and would like to contribute examples, tests, features, whatever. -See you there! From 86c00eb62d4857f643f0926391d87944a17cfa57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Thu, 20 Jan 2022 11:43:54 +0100 Subject: [PATCH 003/120] Bump patch version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d854cf..e929a49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ergogen", - "version": "3.1.1", + "version": "3.1.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ergogen", - "version": "3.1.1", + "version": "3.1.2", "license": "MIT", "dependencies": { "@jscad/openjscad": "github:ergogen/oldjscad", diff --git a/package.json b/package.json index 2cfcc73..93c0d31 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "3.1.1", + "version": "3.1.2", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", From 73045e4754f73fce19a2ddbef1bd2bd9614a292a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 18 Dec 2021 18:37:26 +0100 Subject: [PATCH 004/120] Move column-level attributes to key-level --- playground/unoverride.yaml | 13 + src/points.js | 125 ++---- src/units.js | 8 +- test/cli/big/reference/points/points.yaml | 18 +- test/cli/big/reference/points/units.yaml | 6 + test/cli/minimal/reference/points/points.yaml | 18 +- test/cli/minimal/reference/points/units.yaml | 6 + test/points/adjustments.yaml | 4 +- test/points/adjustments___demo_dxf.dxf | 242 +++++++++++ test/points/adjustments___points.json | 108 ++--- test/points/basic_2x2___demo_dxf.dxf | 242 +++++++++++ test/points/basic_2x2___points.json | 88 ++-- test/points/default___demo_dxf.dxf | 98 +++++ test/points/default___points.json | 22 +- test/points/overrides.yaml | 29 +- test/points/overrides___demo_dxf.dxf | 386 ++++++++++++++++++ test/points/overrides___points.json | 168 ++++---- test/points/units___units.json | 8 +- test/unit/units.js | 7 +- 19 files changed, 1290 insertions(+), 306 deletions(-) create mode 100644 playground/unoverride.yaml create mode 100644 test/points/adjustments___demo_dxf.dxf create mode 100644 test/points/basic_2x2___demo_dxf.dxf create mode 100644 test/points/default___demo_dxf.dxf create mode 100644 test/points/overrides___demo_dxf.dxf diff --git a/playground/unoverride.yaml b/playground/unoverride.yaml new file mode 100644 index 0000000..de73d71 --- /dev/null +++ b/playground/unoverride.yaml @@ -0,0 +1,13 @@ +points.zones: + preprocessor: + anchor: + shift: [u, 0] + rows: + row1: {} + row2: {} + columns: + col1: {} + col2: + rows: + row1: {} + row2: $unset \ No newline at end of file diff --git a/src/points.js b/src/points.js index d2b7f6f..8377d40 100644 --- a/src/points.js +++ b/src/points.js @@ -24,7 +24,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, const cols = a.sane(zone.columns || {}, `points.zones.${zone_name}.columns`, 'object')() const zone_wide_rows = a.sane(zone.rows || {}, `points.zones.${zone_name}.rows`, 'object')() for (const [key, val] of Object.entries(zone_wide_rows)) { - zone_wide_rows[key] = a.sane(val || {}, `points.zones.${zone_name}.rows.${key}`, 'object')() + zone_wide_rows[key] = val || {} // no check yet, as it will be extended later } const zone_wide_key = a.sane(zone.key || {}, `points.zones.${zone_name}.key`, 'object')() @@ -32,11 +32,14 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, const points = {} const rotations = [] + const zone_anchor = anchor.clone() // transferring the anchor rotation to "real" rotations rotations.push({ - angle: anchor.r, - origin: anchor.p + angle: zone_anchor.r, + origin: zone_anchor.p }) + // and now clear it from the anchor so that we don't apply it twice + zone_anchor.r = 0 // column layout @@ -53,47 +56,15 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, a.unexpected( col, `points.zones.${zone_name}.columns.${col_name}`, - ['stagger', 'spread', 'rotate', 'origin', 'rows', 'row_overrides', 'key'] + ['rows', 'key'] ) - col.stagger = a.sane( - col.stagger || 0, - `points.zones.${zone_name}.columns.${col_name}.stagger`, - 'number' - )(units) - col.spread = a.sane( - col.spread !== undefined ? col.spread : (first_col ? 0 : 'u'), - `points.zones.${zone_name}.columns.${col_name}.spread`, - 'number' - )(units) - col.rotate = a.sane( - col.rotate || 0, - `points.zones.${zone_name}.columns.${col_name}.rotate`, - 'number' - )(units) - col.origin = a.xy( - col.origin || [0, 0], - `points.zones.${zone_name}.columns.${col_name}.origin` - )(units) - let override = false col.rows = a.sane( col.rows || {}, `points.zones.${zone_name}.columns.${col_name}.rows`, 'object' )() - if (col.row_overrides) { - override = true - col.rows = a.sane( - col.row_overrides, - `points.zones.${zone_name}.columns.${col_name}.row_overrides`, - 'object' - )() - } for (const [key, val] of Object.entries(col.rows)) { - col.rows[key] = a.sane( - val || {}, - `points.zones.${zone_name}.columns.${col_name}.rows.${key}`, - 'object' - )() + col.rows[key] = val || {} // again, no check yet, as it will be extended later } col.key = a.sane( col.key || {}, @@ -106,42 +77,25 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, col.name = col_name // combining row data from zone-wide defs and col-specific defs - // (while also handling potential overrides) - const actual_rows = override ? Object.keys(col.rows) - : Object.keys(prep.extend(zone_wide_rows, col.rows)) + const actual_rows = Object.keys(prep.extend(zone_wide_rows, col.rows)) if (!actual_rows.length) { actual_rows.push('default') } - // setting up column-level anchor - - anchor.x += col.spread - anchor.y += col.stagger - const col_anchor = anchor.clone() - // clear potential rotations, as they will get re-applied anyway - // and we don't want to apply them twice... - col_anchor.r = 0 - - // applying col-level rotation (cumulatively, for the next columns as well) - - if (col.rotate) { - push_rotation( - rotations, - col.rotate, - col_anchor.clone().shift(col.origin, false).p - ) - } - // getting key config through the 5-level extension const keys = [] const default_key = { + stagger: units.$default_stagger, + spread: first_col ? 0 : units.$default_spread, + splay: units.$default_splay, + origin: [0, 0], shift: [0, 0], rotate: 0, - padding: 'u', - width: 1, - height: 1, + width: units.$default_width, + height: units.$default_height, + padding: units.$default_padding, skip: false, asym: 'both' } @@ -156,7 +110,14 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, ) key.name = key.name || `${zone_name}_${col_name}_${row}` + key.col = col + key.row = row key.colrow = `${col_name}_${row}` + + key.stagger = a.sane(key.stagger, `${key.name}.shift`, 'number')(units) + key.spread = a.sane(key.spread, `${key.name}.spread`, 'number')(units) + key.splay = a.sane(key.splay, `${key.name}.splay`, 'number')(units) + key.origin = a.xy(key.origin, `${key.name}.origin`)(units) key.shift = a.xy(key.shift, `${key.name}.shift`)(units) key.rotate = a.sane(key.rotate, `${key.name}.rotate`, 'number')(units) key.width = a.sane(key.width, `${key.name}.width`, 'number')(units) @@ -164,11 +125,25 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, key.padding = a.sane(key.padding, `${key.name}.padding`, 'number')(units) key.skip = a.sane(key.skip, `${key.name}.skip`, 'boolean')() key.asym = a.in(key.asym, `${key.name}.asym`, ['left', 'right', 'both']) - key.col = col - key.row = row + keys.push(key) } + // setting up column-level anchor + zone_anchor.x += keys[0].spread + zone_anchor.y += keys[0].stagger + const col_anchor = zone_anchor.clone() + + // applying col-level rotation (cumulatively, for the next columns as well) + + if (keys[0].splay) { + push_rotation( + rotations, + keys[0].splay, + col_anchor.clone().shift(keys[0].origin, false).p + ) + } + // actually laying out keys for (const key of keys) { @@ -227,15 +202,12 @@ exports.parse = (config, units) => { const global_rotate = a.sane(config.rotate || 0, 'points.rotate', 'number')(units) const global_mirror = config.mirror let points = {} - let mirrored_points = {} - let all_points = {} - // rendering zones for (let [zone_name, zone] of Object.entries(zones)) { // extracting keys that are handled here, not at the zone render level - const anchor = anchor_lib.parse(zone.anchor || {}, `points.zones.${zone_name}.anchor`, all_points)(units) + const anchor = anchor_lib.parse(zone.anchor || {}, `points.zones.${zone_name}.anchor`, points)(units) const rotate = a.sane(zone.rotate || 0, `points.zones.${zone_name}.rotate`, 'number')(units) const mirror = zone.mirror delete zone.anchor @@ -261,24 +233,21 @@ exports.parse = (config, units) => { // adding new points so that they can be referenced from now on points = Object.assign(points, new_points) - all_points = Object.assign(all_points, points) // per-zone mirroring for the new keys - const axis = parse_axis(mirror, `points.zones.${zone_name}.mirror`, all_points, units) + const axis = parse_axis(mirror, `points.zones.${zone_name}.mirror`, points, units) if (axis) { + const mirrored_points = {} for (const new_point of Object.values(new_points)) { const [mname, mp] = perform_mirror(new_point, axis) if (mp) { mirrored_points[mname] = mp - all_points[mname] = mp } } + points = Object.assign(points, mirrored_points) } } - // merging regular and early-mirrored points - points = Object.assign(points, mirrored_points) - // applying global rotation for (const point of Object.values(points)) { if (global_rotate) { @@ -297,8 +266,6 @@ exports.parse = (config, units) => { } } } - - // merging the global-mirrored points as well points = Object.assign(points, global_mirrored_points) // removing temporary points @@ -314,11 +281,9 @@ exports.parse = (config, units) => { exports.visualize = (points, units) => { const models = {} - const x_unit = units.visual_x || (units.u - 1) - const y_unit = units.visual_y || (units.u - 1) for (const [pname, p] of Object.entries(points)) { - const w = p.meta.width * x_unit - const h = p.meta.height * y_unit + const w = p.meta.width + const h = p.meta.height const rect = u.rect(w, h, [-w/2, -h/2]) models[pname] = p.position(rect) } diff --git a/src/units.js b/src/units.js index f0b1cef..90e0eaa 100644 --- a/src/units.js +++ b/src/units.js @@ -5,7 +5,13 @@ const default_units = { U: 19.05, u: 19, cx: 18, - cy: 17 + cy: 17, + $default_stagger: 0, + $default_spread: 'u', + $default_splay: 0, + $default_height: 'u-1', + $default_width: 'u-1', + $default_padding: 'u' } exports.parse = (config = {}) => { diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index 091b01a..433c3c6 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -3,25 +3,25 @@ matrix_col_row: 'y': 0 r: 0 meta: + stagger: 0 + spread: 0 + splay: 0 + origin: + - 0 + - 0 shift: - 0 - 0 rotate: 0 + width: 18 + height: 18 padding: 19 - width: 1 - height: 1 skip: false asym: both name: matrix_col_row - colrow: col_row col: - stagger: 0 - spread: 0 - rotate: 0 - origin: - - 0 - - 0 rows: {} key: {} name: col row: row + colrow: col_row diff --git a/test/cli/big/reference/points/units.yaml b/test/cli/big/reference/points/units.yaml index 579c750..ae049c1 100644 --- a/test/cli/big/reference/points/units.yaml +++ b/test/cli/big/reference/points/units.yaml @@ -2,4 +2,10 @@ U: 19.05 u: 19 cx: 18 cy: 17 +$default_stagger: 0 +$default_spread: 19 +$default_splay: 0 +$default_height: 18 +$default_width: 18 +$default_padding: 19 a: 47 diff --git a/test/cli/minimal/reference/points/points.yaml b/test/cli/minimal/reference/points/points.yaml index 091b01a..433c3c6 100644 --- a/test/cli/minimal/reference/points/points.yaml +++ b/test/cli/minimal/reference/points/points.yaml @@ -3,25 +3,25 @@ matrix_col_row: 'y': 0 r: 0 meta: + stagger: 0 + spread: 0 + splay: 0 + origin: + - 0 + - 0 shift: - 0 - 0 rotate: 0 + width: 18 + height: 18 padding: 19 - width: 1 - height: 1 skip: false asym: both name: matrix_col_row - colrow: col_row col: - stagger: 0 - spread: 0 - rotate: 0 - origin: - - 0 - - 0 rows: {} key: {} name: col row: row + colrow: col_row diff --git a/test/cli/minimal/reference/points/units.yaml b/test/cli/minimal/reference/points/units.yaml index 6df000d..4f4cee3 100644 --- a/test/cli/minimal/reference/points/units.yaml +++ b/test/cli/minimal/reference/points/units.yaml @@ -2,3 +2,9 @@ U: 19.05 u: 19 cx: 18 cy: 17 +$default_stagger: 0 +$default_spread: 19 +$default_splay: 0 +$default_height: 18 +$default_width: 18 +$default_padding: 19 diff --git a/test/points/adjustments.yaml b/test/points/adjustments.yaml index 45026a4..9aae94e 100644 --- a/test/points/adjustments.yaml +++ b/test/points/adjustments.yaml @@ -3,10 +3,10 @@ points: matrix: columns: left: - right: + right.key: stagger: 5 spread: 25 - rotate: 5 + splay: 5 origin: [-9, -9] rows: bottom: diff --git a/test/points/adjustments___demo_dxf.dxf b/test/points/adjustments___demo_dxf.dxf new file mode 100644 index 0000000..7fafd46 --- /dev/null +++ b/test/points/adjustments___demo_dxf.dxf @@ -0,0 +1,242 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-9 +20 +9 +11 +9 +21 +9 +0 +LINE +8 +0 +10 +9 +20 +9 +11 +9 +21 +-9 +0 +LINE +8 +0 +10 +9 +20 +-9 +11 +-9 +21 +-9 +0 +LINE +8 +0 +10 +-9 +20 +-9 +11 +-9 +21 +9 +0 +LINE +8 +0 +10 +-9 +20 +28 +11 +9 +21 +28 +0 +LINE +8 +0 +10 +9 +20 +28 +11 +9 +21 +10 +0 +LINE +8 +0 +10 +9 +20 +10 +11 +-9 +21 +10 +0 +LINE +8 +0 +10 +-9 +20 +10 +11 +-9 +21 +28 +0 +LINE +8 +0 +10 +14.4311966 +20 +13.9315046 +11 +32.3627012 +21 +15.500308 +0 +LINE +8 +0 +10 +32.3627012 +20 +15.500308 +11 +33.9315046 +21 +-2.4311966 +0 +LINE +8 +0 +10 +33.9315046 +20 +-2.4311966 +11 +16 +21 +-4 +0 +LINE +8 +0 +10 +16 +20 +-4 +11 +14.4311966 +21 +13.9315046 +0 +LINE +8 +0 +10 +12.7752375 +20 +32.8592038 +11 +30.7067421 +21 +34.4280072 +0 +LINE +8 +0 +10 +30.7067421 +20 +34.4280072 +11 +32.2755455 +21 +16.4965026 +0 +LINE +8 +0 +10 +32.2755455 +20 +16.4965026 +11 +14.3440409 +21 +14.9276992 +0 +LINE +8 +0 +10 +14.3440409 +20 +14.9276992 +11 +12.7752375 +21 +32.8592038 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/points/adjustments___points.json b/test/points/adjustments___points.json index 82b843b..0dc8ef5 100644 --- a/test/points/adjustments___points.json +++ b/test/points/adjustments___points.json @@ -4,31 +4,31 @@ "y": 0, "r": 0, "meta": { + "stagger": 0, + "spread": 0, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_left_bottom", - "colrow": "left_bottom", "col": { - "stagger": 0, - "spread": 0, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": {}, "key": {}, "name": "left" }, - "row": "bottom" + "row": "bottom", + "colrow": "left_bottom" } }, "matrix_left_top": { @@ -36,31 +36,31 @@ "y": 19, "r": 0, "meta": { + "stagger": 0, + "spread": 0, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_left_top", - "colrow": "left_top", "col": { - "stagger": 0, - "spread": 0, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": {}, "key": {}, "name": "left" }, - "row": "top" + "row": "top", + "colrow": "left_top" } }, "matrix_right_bottom": { @@ -68,31 +68,39 @@ "y": 5.750154, "r": 5, "meta": { + "stagger": 5, + "spread": 25, + "splay": 5, + "origin": [ + -9, + -9 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_right_bottom", - "colrow": "right_bottom", "col": { - "stagger": 5, - "spread": 25, - "rotate": 5, - "origin": [ - -9, - -9 - ], + "key": { + "stagger": 5, + "spread": 25, + "splay": 5, + "origin": [ + -9, + -9 + ] + }, "rows": {}, - "key": {}, "name": "right" }, - "row": "bottom" + "row": "bottom", + "colrow": "right_bottom" } }, "matrix_right_top": { @@ -100,31 +108,39 @@ "y": 24.6778532, "r": 5, "meta": { + "stagger": 5, + "spread": 25, + "splay": 5, + "origin": [ + -9, + -9 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_right_top", - "colrow": "right_top", "col": { - "stagger": 5, - "spread": 25, - "rotate": 5, - "origin": [ - -9, - -9 - ], + "key": { + "stagger": 5, + "spread": 25, + "splay": 5, + "origin": [ + -9, + -9 + ] + }, "rows": {}, - "key": {}, "name": "right" }, - "row": "top" + "row": "top", + "colrow": "right_top" } } } diff --git a/test/points/basic_2x2___demo_dxf.dxf b/test/points/basic_2x2___demo_dxf.dxf new file mode 100644 index 0000000..af1fdfa --- /dev/null +++ b/test/points/basic_2x2___demo_dxf.dxf @@ -0,0 +1,242 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-9 +20 +9 +11 +9 +21 +9 +0 +LINE +8 +0 +10 +9 +20 +9 +11 +9 +21 +-9 +0 +LINE +8 +0 +10 +9 +20 +-9 +11 +-9 +21 +-9 +0 +LINE +8 +0 +10 +-9 +20 +-9 +11 +-9 +21 +9 +0 +LINE +8 +0 +10 +-9 +20 +28 +11 +9 +21 +28 +0 +LINE +8 +0 +10 +9 +20 +28 +11 +9 +21 +10 +0 +LINE +8 +0 +10 +9 +20 +10 +11 +-9 +21 +10 +0 +LINE +8 +0 +10 +-9 +20 +10 +11 +-9 +21 +28 +0 +LINE +8 +0 +10 +10 +20 +9 +11 +28 +21 +9 +0 +LINE +8 +0 +10 +28 +20 +9 +11 +28 +21 +-9 +0 +LINE +8 +0 +10 +28 +20 +-9 +11 +10 +21 +-9 +0 +LINE +8 +0 +10 +10 +20 +-9 +11 +10 +21 +9 +0 +LINE +8 +0 +10 +10 +20 +28 +11 +28 +21 +28 +0 +LINE +8 +0 +10 +28 +20 +28 +11 +28 +21 +10 +0 +LINE +8 +0 +10 +28 +20 +10 +11 +10 +21 +10 +0 +LINE +8 +0 +10 +10 +20 +10 +11 +10 +21 +28 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/points/basic_2x2___points.json b/test/points/basic_2x2___points.json index 8da5055..2fd2c4e 100644 --- a/test/points/basic_2x2___points.json +++ b/test/points/basic_2x2___points.json @@ -4,31 +4,31 @@ "y": 0, "r": 0, "meta": { + "stagger": 0, + "spread": 0, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_left_bottom", - "colrow": "left_bottom", "col": { - "stagger": 0, - "spread": 0, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": {}, "key": {}, "name": "left" }, - "row": "bottom" + "row": "bottom", + "colrow": "left_bottom" } }, "matrix_left_top": { @@ -36,31 +36,31 @@ "y": 19, "r": 0, "meta": { + "stagger": 0, + "spread": 0, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_left_top", - "colrow": "left_top", "col": { - "stagger": 0, - "spread": 0, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": {}, "key": {}, "name": "left" }, - "row": "top" + "row": "top", + "colrow": "left_top" } }, "matrix_right_bottom": { @@ -68,31 +68,31 @@ "y": 0, "r": 0, "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_right_bottom", - "colrow": "right_bottom", "col": { - "stagger": 0, - "spread": 19, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": {}, "key": {}, "name": "right" }, - "row": "bottom" + "row": "bottom", + "colrow": "right_bottom" } }, "matrix_right_top": { @@ -100,31 +100,31 @@ "y": 19, "r": 0, "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_right_top", - "colrow": "right_top", "col": { - "stagger": 0, - "spread": 19, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": {}, "key": {}, "name": "right" }, - "row": "top" + "row": "top", + "colrow": "right_top" } } } diff --git a/test/points/default___demo_dxf.dxf b/test/points/default___demo_dxf.dxf new file mode 100644 index 0000000..8082f61 --- /dev/null +++ b/test/points/default___demo_dxf.dxf @@ -0,0 +1,98 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-9 +20 +9 +11 +9 +21 +9 +0 +LINE +8 +0 +10 +9 +20 +9 +11 +9 +21 +-9 +0 +LINE +8 +0 +10 +9 +20 +-9 +11 +-9 +21 +-9 +0 +LINE +8 +0 +10 +-9 +20 +-9 +11 +-9 +21 +9 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/points/default___points.json b/test/points/default___points.json index c13be2e..e19638c 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -4,31 +4,31 @@ "y": 0, "r": 0, "meta": { + "stagger": 0, + "spread": 0, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_default_default", - "colrow": "default_default", "col": { - "stagger": 0, - "spread": 0, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": {}, "key": {}, "name": "default" }, - "row": "default" + "row": "default", + "colrow": "default_default" } } } diff --git a/test/points/overrides.yaml b/test/points/overrides.yaml index 5c14031..12be1a2 100644 --- a/test/points/overrides.yaml +++ b/test/points/overrides.yaml @@ -1,16 +1,15 @@ -points: - zones: - matrix: - columns: - left: - middle: - rows: - top: - right: - stagger: u - row_overrides: - home: - top: +points.zones.matrix: + columns: + left: + middle: rows: - bottom: - home: \ No newline at end of file + top: + right: + key.stagger: u + rows: + bottom: $unset + home: + top: + rows: + bottom: + home: \ No newline at end of file diff --git a/test/points/overrides___demo_dxf.dxf b/test/points/overrides___demo_dxf.dxf new file mode 100644 index 0000000..91dffe3 --- /dev/null +++ b/test/points/overrides___demo_dxf.dxf @@ -0,0 +1,386 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-9 +20 +9 +11 +9 +21 +9 +0 +LINE +8 +0 +10 +9 +20 +9 +11 +9 +21 +-9 +0 +LINE +8 +0 +10 +9 +20 +-9 +11 +-9 +21 +-9 +0 +LINE +8 +0 +10 +-9 +20 +-9 +11 +-9 +21 +9 +0 +LINE +8 +0 +10 +-9 +20 +28 +11 +9 +21 +28 +0 +LINE +8 +0 +10 +9 +20 +28 +11 +9 +21 +10 +0 +LINE +8 +0 +10 +9 +20 +10 +11 +-9 +21 +10 +0 +LINE +8 +0 +10 +-9 +20 +10 +11 +-9 +21 +28 +0 +LINE +8 +0 +10 +10 +20 +9 +11 +28 +21 +9 +0 +LINE +8 +0 +10 +28 +20 +9 +11 +28 +21 +-9 +0 +LINE +8 +0 +10 +28 +20 +-9 +11 +10 +21 +-9 +0 +LINE +8 +0 +10 +10 +20 +-9 +11 +10 +21 +9 +0 +LINE +8 +0 +10 +10 +20 +28 +11 +28 +21 +28 +0 +LINE +8 +0 +10 +28 +20 +28 +11 +28 +21 +10 +0 +LINE +8 +0 +10 +28 +20 +10 +11 +10 +21 +10 +0 +LINE +8 +0 +10 +10 +20 +10 +11 +10 +21 +28 +0 +LINE +8 +0 +10 +10 +20 +47 +11 +28 +21 +47 +0 +LINE +8 +0 +10 +28 +20 +47 +11 +28 +21 +29 +0 +LINE +8 +0 +10 +28 +20 +29 +11 +10 +21 +29 +0 +LINE +8 +0 +10 +10 +20 +29 +11 +10 +21 +47 +0 +LINE +8 +0 +10 +29 +20 +28 +11 +47 +21 +28 +0 +LINE +8 +0 +10 +47 +20 +28 +11 +47 +21 +10 +0 +LINE +8 +0 +10 +47 +20 +10 +11 +29 +21 +10 +0 +LINE +8 +0 +10 +29 +20 +10 +11 +29 +21 +28 +0 +LINE +8 +0 +10 +29 +20 +47 +11 +47 +21 +47 +0 +LINE +8 +0 +10 +47 +20 +47 +11 +47 +21 +29 +0 +LINE +8 +0 +10 +47 +20 +29 +11 +29 +21 +29 +0 +LINE +8 +0 +10 +29 +20 +29 +11 +29 +21 +47 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/points/overrides___points.json b/test/points/overrides___points.json index aeff7d0..9cc2884 100644 --- a/test/points/overrides___points.json +++ b/test/points/overrides___points.json @@ -4,31 +4,31 @@ "y": 0, "r": 0, "meta": { + "stagger": 0, + "spread": 0, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_left_bottom", - "colrow": "left_bottom", "col": { - "stagger": 0, - "spread": 0, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": {}, "key": {}, "name": "left" }, - "row": "bottom" + "row": "bottom", + "colrow": "left_bottom" } }, "matrix_left_home": { @@ -36,31 +36,31 @@ "y": 19, "r": 0, "meta": { + "stagger": 0, + "spread": 0, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_left_home", - "colrow": "left_home", "col": { - "stagger": 0, - "spread": 0, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": {}, "key": {}, "name": "left" }, - "row": "home" + "row": "home", + "colrow": "left_home" } }, "matrix_middle_bottom": { @@ -68,33 +68,33 @@ "y": 0, "r": 0, "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_middle_bottom", - "colrow": "middle_bottom", "col": { "rows": { "top": {} }, - "stagger": 0, - "spread": 19, - "rotate": 0, - "origin": [ - 0, - 0 - ], "key": {}, "name": "middle" }, - "row": "bottom" + "row": "bottom", + "colrow": "middle_bottom" } }, "matrix_middle_home": { @@ -102,33 +102,33 @@ "y": 19, "r": 0, "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_middle_home", - "colrow": "middle_home", "col": { "rows": { "top": {} }, - "stagger": 0, - "spread": 19, - "rotate": 0, - "origin": [ - 0, - 0 - ], "key": {}, "name": "middle" }, - "row": "home" + "row": "home", + "colrow": "middle_home" } }, "matrix_middle_top": { @@ -136,33 +136,33 @@ "y": 38, "r": 0, "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_middle_top", - "colrow": "middle_top", "col": { "rows": { "top": {} }, - "stagger": 0, - "spread": 19, - "rotate": 0, - "origin": [ - 0, - 0 - ], "key": {}, "name": "middle" }, - "row": "top" + "row": "top", + "colrow": "middle_top" } }, "matrix_right_home": { @@ -170,38 +170,37 @@ "y": 19, "r": 0, "meta": { + "stagger": 19, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_right_home", - "colrow": "right_home", "col": { - "stagger": 19, - "row_overrides": { - "home": {}, - "top": {} + "key": { + "stagger": "u" }, - "spread": 19, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": { + "bottom": "$unset", "home": {}, "top": {} }, - "key": {}, "name": "right" }, - "row": "home" + "row": "home", + "colrow": "right_home" } }, "matrix_right_top": { @@ -209,38 +208,37 @@ "y": 38, "r": 0, "meta": { + "stagger": 19, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], "shift": [ 0, 0 ], "rotate": 0, + "width": 18, + "height": 18, "padding": 19, - "width": 1, - "height": 1, "skip": false, "asym": "both", "name": "matrix_right_top", - "colrow": "right_top", "col": { - "stagger": 19, - "row_overrides": { - "home": {}, - "top": {} + "key": { + "stagger": "u" }, - "spread": 19, - "rotate": 0, - "origin": [ - 0, - 0 - ], "rows": { + "bottom": "$unset", "home": {}, "top": {} }, - "key": {}, "name": "right" }, - "row": "top" + "row": "top", + "colrow": "right_top" } } } diff --git a/test/points/units___units.json b/test/points/units___units.json index 48690d9..729b66e 100644 --- a/test/points/units___units.json +++ b/test/points/units___units.json @@ -4,5 +4,11 @@ "cx": 18, "cy": 17, "a": 10, - "b": 15 + "b": 15, + "$default_stagger": 0, + "$default_spread": 19, + "$default_splay": 0, + "$default_height": 18, + "$default_width": 18, + "$default_padding": 19 } diff --git a/test/unit/units.js b/test/unit/units.js index 393090a..2da81dc 100644 --- a/test/unit/units.js +++ b/test/unit/units.js @@ -1,11 +1,12 @@ const u = require('../../src/units') +const public = key => !key.startsWith('$') describe('Units', function() { it('defaults', function() { // check that an empty config has the default units (and nothing more) const def = u.parse({}) - Object.keys(def).length.should.equal(4) + Object.keys(def).filter(public).length.should.equal(4) def.U.should.equal(19.05) def.u.should.equal(19) def.cx.should.equal(18) @@ -20,7 +21,7 @@ describe('Units', function() { b: 'a + 1' } }) - Object.keys(res).length.should.equal(6) + Object.keys(res).filter(public).length.should.equal(6) res.a.should.equal(9) res.b.should.equal(10) // also check that order matters, which it should @@ -42,7 +43,7 @@ describe('Units', function() { a: 'U + 1' } }) - Object.keys(res).length.should.equal(5) + Object.keys(res).filter(public).length.should.equal(5) res.a.should.equal(20.05) }) From 0ed29e7e1dd3c6ba34c68c03174c7fcecd759898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 18 Dec 2021 19:51:26 +0100 Subject: [PATCH 005/120] Place rectangles by their centers --- src/outlines.js | 5 +- src/point.js | 2 +- test/cases/001_cube___cases_cube_stl.stl | 72 +++++----- .../affect_mirror___outlines_test_dxf.dxf | 128 +++++++++--------- test/outlines/rectangles.yaml | 4 +- 5 files changed, 105 insertions(+), 106 deletions(-) diff --git a/src/outlines.js b/src/outlines.js index 6ec7164..66f4308 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -265,14 +265,13 @@ exports.parse = (config = {}, points = {}, units = {}) => { const corner = a.sane(part.corner || 0, `${name}.corner`, 'number')(rec_units) const bevel = a.sane(part.bevel || 0, `${name}.bevel`, 'number')(rec_units) const rect_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() - const rect = rectangle(size[0], size[1], corner, bevel, name) + const rect = m.model.moveRelative(rectangle(size[0], size[1], corner, bevel, name), [-size[0]/2, -size[1]/2]) arg = anchor.position(u.deepcopy(rect)) if (rect_mirror) { const mirror_anchor = u.deepcopy(anchor_def) a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`) anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(rec_units) - const mirror_rect = m.model.moveRelative(u.deepcopy(rect), [-size[0], 0]) - arg = u.union(arg, anchor.position(mirror_rect)) + arg = u.union(arg, anchor.position(u.deepcopy(rect))) } break case 'circle': diff --git a/src/point.js b/src/point.js index 41d2c85..f42ab68 100644 --- a/src/point.js +++ b/src/point.js @@ -59,7 +59,7 @@ module.exports = class Point { } rect(size=14) { - let rect = u.rect(size, size, [-size/2, -size/2], this.meta.mirrored) + let rect = u.rect(size, size, [-size/2, -size/2]) return this.position(rect) } } diff --git a/test/cases/001_cube___cases_cube_stl.stl b/test/cases/001_cube___cases_cube_stl.stl index 038a3bc..08f24dd 100644 --- a/test/cases/001_cube___cases_cube_stl.stl +++ b/test/cases/001_cube___cases_cube_stl.stl @@ -1,86 +1,86 @@ solid csg.js facet normal 0 0 -1 outer loop -vertex 0 5 0 -vertex 5 5 0 -vertex 5 0 0 +vertex -2.5 2.5 0 +vertex 2.5 2.5 0 +vertex 2.5 -2.5 0 endloop endfacet facet normal 0 0 -1 outer loop -vertex 0 5 0 -vertex 5 0 0 -vertex 0 0 0 +vertex -2.5 2.5 0 +vertex 2.5 -2.5 0 +vertex -2.5 -2.5 0 endloop endfacet facet normal 0 0 1 outer loop -vertex 0 5 5 -vertex 0 0 5 -vertex 5 0 5 +vertex -2.5 2.5 5 +vertex -2.5 -2.5 5 +vertex 2.5 -2.5 5 endloop endfacet facet normal 0 0 1 outer loop -vertex 0 5 5 -vertex 5 0 5 -vertex 5 5 5 +vertex -2.5 2.5 5 +vertex 2.5 -2.5 5 +vertex 2.5 2.5 5 endloop endfacet facet normal 0 -1 0 outer loop -vertex 5 0 0 -vertex 5 0 5 -vertex 0 0 5 +vertex 2.5 -2.5 0 +vertex 2.5 -2.5 5 +vertex -2.5 -2.5 5 endloop endfacet facet normal 0 -1 0 outer loop -vertex 5 0 0 -vertex 0 0 5 -vertex 0 0 0 +vertex 2.5 -2.5 0 +vertex -2.5 -2.5 5 +vertex -2.5 -2.5 0 endloop endfacet facet normal 1 0 0 outer loop -vertex 5 5 0 -vertex 5 5 5 -vertex 5 0 5 +vertex 2.5 2.5 0 +vertex 2.5 2.5 5 +vertex 2.5 -2.5 5 endloop endfacet facet normal 1 0 0 outer loop -vertex 5 5 0 -vertex 5 0 5 -vertex 5 0 0 +vertex 2.5 2.5 0 +vertex 2.5 -2.5 5 +vertex 2.5 -2.5 0 endloop endfacet facet normal 0 1 0 outer loop -vertex 5 5 5 -vertex 5 5 0 -vertex 0 5 0 +vertex 2.5 2.5 5 +vertex 2.5 2.5 0 +vertex -2.5 2.5 0 endloop endfacet facet normal 0 1 0 outer loop -vertex 5 5 5 -vertex 0 5 0 -vertex 0 5 5 +vertex 2.5 2.5 5 +vertex -2.5 2.5 0 +vertex -2.5 2.5 5 endloop endfacet facet normal -1 0 0 outer loop -vertex 0 5 5 -vertex 0 5 0 -vertex 0 0 0 +vertex -2.5 2.5 5 +vertex -2.5 2.5 0 +vertex -2.5 -2.5 0 endloop endfacet facet normal -1 0 0 outer loop -vertex 0 5 5 -vertex 0 0 0 -vertex 0 0 5 +vertex -2.5 2.5 5 +vertex -2.5 -2.5 0 +vertex -2.5 -2.5 5 endloop endfacet endsolid csg.js diff --git a/test/outlines/affect_mirror___outlines_test_dxf.dxf b/test/outlines/affect_mirror___outlines_test_dxf.dxf index b251d92..2d21a6e 100644 --- a/test/outlines/affect_mirror___outlines_test_dxf.dxf +++ b/test/outlines/affect_mirror___outlines_test_dxf.dxf @@ -241,193 +241,193 @@ LINE 8 0 10 -31.0980762 +27 20 --4.0980762 +-5.1961524 11 -36.2942286 +32.1961524 21 --7.0980762 +-8.1961524 0 LINE 8 0 10 -36.2942286 +32.1961524 20 --7.0980762 +-8.1961524 11 -39.2942286 +35.1961524 21 --1.9019238 +-3 0 LINE 8 0 10 -39.2942286 +35.1961524 20 --1.9019238 +-3 11 -34.0980762 +30 21 -1.0980762 +0 0 LINE 8 0 10 -34.0980762 +30 20 -1.0980762 +0 11 -31.0980762 +27 21 --4.0980762 +-5.1961524 0 LINE 8 0 10 -31.0980762 +27 20 -14.9019238 +13.8038476 11 -36.2942286 +32.1961524 21 -11.9019238 +10.8038476 0 LINE 8 0 10 -36.2942286 +32.1961524 20 -11.9019238 +10.8038476 11 -39.2942286 +35.1961524 21 -17.0980762 +16 0 LINE 8 0 10 -39.2942286 +35.1961524 20 -17.0980762 +16 11 -34.0980762 +30 21 -20.0980762 +19 0 LINE 8 0 10 -34.0980762 +30 20 -20.0980762 +19 11 -31.0980762 +27 21 -14.9019238 +13.8038476 0 LINE 8 0 10 --1.0980762 +-2.1961524 20 --4.0980762 +-8.1961524 11 -4.0980762 +3 21 --1.0980762 +-5.1961524 0 LINE 8 0 10 -4.0980762 +3 20 --1.0980762 +-5.1961524 11 -1.0980762 +0 21 -4.0980762 +0 0 LINE 8 0 10 -1.0980762 +0 20 -4.0980762 +0 11 --4.0980762 +-5.1961524 21 -1.0980762 +-3 0 LINE 8 0 10 --4.0980762 +-5.1961524 20 -1.0980762 +-3 11 --1.0980762 +-2.1961524 21 --4.0980762 +-8.1961524 0 LINE 8 0 10 --1.0980762 +-2.1961524 20 -14.9019238 +10.8038476 11 -4.0980762 +3 21 -17.9019238 +13.8038476 0 LINE 8 0 10 -4.0980762 +3 20 -17.9019238 +13.8038476 11 -1.0980762 +0 21 -23.0980762 +19 0 LINE 8 0 10 -1.0980762 +0 20 -23.0980762 +19 11 --4.0980762 +-5.1961524 21 -20.0980762 +16 0 LINE 8 0 10 --4.0980762 +-5.1961524 20 -20.0980762 +16 11 --1.0980762 +-2.1961524 21 -14.9019238 +10.8038476 0 ENDSEC 0 diff --git a/test/outlines/rectangles.yaml b/test/outlines/rectangles.yaml index 01410ec..43bf02a 100644 --- a/test/outlines/rectangles.yaml +++ b/test/outlines/rectangles.yaml @@ -16,12 +16,12 @@ outlines: ref: - matrix_default_default - mirror_matrix_default_default - shift: [-sx/2, 0] + shift: [0, sy/2] size: [20, 40] outside_rects: type: rectangle anchor: ref: matrix_default_default - shift: [-15, 5] + shift: [-10, 10] size: 10 mirror: true \ No newline at end of file From 9ee099b16c3ec46b1d3d2d7c1e96fc828bdfafc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 18 Dec 2021 19:53:33 +0100 Subject: [PATCH 006/120] Minor test adjustments --- test/cases/{001_cube.yaml => cube.yaml} | 0 ...{001_cube___cases_cube_stl.stl => cube___cases_cube_stl.stl} | 0 test/index.js | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename test/cases/{001_cube.yaml => cube.yaml} (100%) rename test/cases/{001_cube___cases_cube_stl.stl => cube___cases_cube_stl.stl} (100%) diff --git a/test/cases/001_cube.yaml b/test/cases/cube.yaml similarity index 100% rename from test/cases/001_cube.yaml rename to test/cases/cube.yaml diff --git a/test/cases/001_cube___cases_cube_stl.stl b/test/cases/cube___cases_cube_stl.stl similarity index 100% rename from test/cases/001_cube___cases_cube_stl.stl rename to test/cases/cube___cases_cube_stl.stl diff --git a/test/index.js b/test/index.js index b552c62..c836545 100644 --- a/test/index.js +++ b/test/index.js @@ -120,7 +120,7 @@ for (let w of cli_what) { this.timeout(120000) this.slow(120000) for (const t of glob.sync(path.join(__dirname, w))) { - it(cap(path.basename(t).split('_').join(' ')), function() { + it(path.basename(t).split('_').join(' '), function() { const command = read(t, 'command') const output_path = exists(t, 'path') ? read(t, 'path') : 'output' fs.removeSync(output_path) From 2c18902e9fb6a9a6ad294f2f5c17da55741caec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 18 Dec 2021 20:28:33 +0100 Subject: [PATCH 007/120] Simplify the names in individual point "zones" --- src/points.js | 14 +++++++++++++- test/outlines/circles.yaml | 6 +++--- test/outlines/polygons.yaml | 6 +++--- test/outlines/rectangles.yaml | 6 +++--- test/points/default.yaml | 4 +--- test/points/default___points.json | 4 ++-- 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/points.js b/src/points.js index 8377d40..396413c 100644 --- a/src/points.js +++ b/src/points.js @@ -206,6 +206,9 @@ exports.parse = (config, units) => { // rendering zones for (let [zone_name, zone] of Object.entries(zones)) { + // zone sanitization + zone = a.sane(zone || {}, `points.zones.${zone_name}`, 'object')() + // extracting keys that are handled here, not at the zone render level const anchor = anchor_lib.parse(zone.anchor || {}, `points.zones.${zone_name}.anchor`, points)(units) const rotate = a.sane(zone.rotate || 0, `points.zones.${zone_name}.rotate`, 'number')(units) @@ -215,7 +218,16 @@ exports.parse = (config, units) => { delete zone.mirror // creating new points - const new_points = render_zone(zone_name, zone, anchor, global_key, units) + let new_points = render_zone(zone_name, zone, anchor, global_key, units) + + // simplifying the names in individual point "zones" + const new_keys = Object.keys(new_points) + const individual_key = `${zone_name}_default_default` + if (new_keys.length == 1 && new_keys[0] == individual_key) { + new_points[zone_name] = new_points[individual_key] + new_points[zone_name].meta.name = zone_name + delete new_points[individual_key] + } // adjusting new points for (const [new_name, new_point] of Object.entries(new_points)) { diff --git a/test/outlines/circles.yaml b/test/outlines/circles.yaml index fe8d572..3daca88 100644 --- a/test/outlines/circles.yaml +++ b/test/outlines/circles.yaml @@ -14,13 +14,13 @@ outlines: type: circle anchor: ref: - - matrix_default_default - - mirror_matrix_default_default + - matrix + - mirror_matrix radius: 15 outside_circles: type: circle anchor: - ref: matrix_default_default + ref: matrix shift: [-10, 10] radius: 5 mirror: true \ No newline at end of file diff --git a/test/outlines/polygons.yaml b/test/outlines/polygons.yaml index d22f109..3489d56 100644 --- a/test/outlines/polygons.yaml +++ b/test/outlines/polygons.yaml @@ -14,15 +14,15 @@ outlines: type: polygon points: - ref: - - matrix_default_default - - mirror_matrix_default_default + - matrix + - mirror_matrix shift: [0, 20] - shift: [20, -40] - shift: [-40, 0] outside_polys: type: polygon points: - - ref: matrix_default_default + - ref: matrix shift: [-10, 15] - shift: [5, -10] - shift: [-10, 0] diff --git a/test/outlines/rectangles.yaml b/test/outlines/rectangles.yaml index 43bf02a..cec172d 100644 --- a/test/outlines/rectangles.yaml +++ b/test/outlines/rectangles.yaml @@ -14,14 +14,14 @@ outlines: type: rectangle anchor: ref: - - matrix_default_default - - mirror_matrix_default_default + - matrix + - mirror_matrix shift: [0, sy/2] size: [20, 40] outside_rects: type: rectangle anchor: - ref: matrix_default_default + ref: matrix shift: [-10, 10] size: 10 mirror: true \ No newline at end of file diff --git a/test/points/default.yaml b/test/points/default.yaml index 0e806d6..f767592 100644 --- a/test/points/default.yaml +++ b/test/points/default.yaml @@ -1,3 +1 @@ -points: - zones: - matrix: {} \ No newline at end of file +points.zones.matrix: \ No newline at end of file diff --git a/test/points/default___points.json b/test/points/default___points.json index e19638c..33e284f 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -1,5 +1,5 @@ { - "matrix_default_default": { + "matrix": { "x": 0, "y": 0, "r": 0, @@ -21,7 +21,7 @@ "padding": 19, "skip": false, "asym": "both", - "name": "matrix_default_default", + "name": "matrix", "col": { "rows": {}, "key": {}, From f2bd0d23a190f8a0e549c1b8279142f70bfdbb7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 18 Dec 2021 22:15:57 +0100 Subject: [PATCH 008/120] Roadmap update --- roadmap.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/roadmap.md b/roadmap.md index 26b074e..89ad8e4 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,17 +6,15 @@ ### Major -- Move column-level attributes like spread to key-level to unify the structure - Generalize what shapes to be repeated when outlining `keys` -- Place rectangles by their centers -- Full per-point anchors -- Collapse any raw shift or rotation under the anchor infrastructure - Merge, generalize, and uniform-ize footprints - Template for creating them, built-in variables they can use, documentation, external links, etc. - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. ### Minor +- Key-level orient +- 3D orient for cases - Allow shift/rotate for outlines (via `anchor_def`, probably) - More generic anchors or distances? - Intersect support for anchor affects clauses, which (combined with the math formulas and possible trigonometric functions) should allow for every use case we've discussed so far From e48631fac8ccf741147704c3c7c119dc330d3456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 25 Dec 2021 21:22:37 +0100 Subject: [PATCH 009/120] Add key-level orient --- roadmap.md | 3 +- src/points.js | 3 ++ test/cli/big/reference/points/points.yaml | 1 + test/cli/minimal/reference/points/points.yaml | 1 + test/points/adjustments.yaml | 16 ++++++--- test/points/adjustments___demo_dxf.dxf | 32 ++++++++--------- test/points/adjustments___points.json | 34 +++++++++++++++---- test/points/basic_2x2___points.json | 4 +++ test/points/default___points.json | 1 + test/points/overrides___points.json | 7 ++++ 10 files changed, 74 insertions(+), 28 deletions(-) diff --git a/roadmap.md b/roadmap.md index 89ad8e4..743288a 100644 --- a/roadmap.md +++ b/roadmap.md @@ -10,11 +10,12 @@ - Merge, generalize, and uniform-ize footprints - Template for creating them, built-in variables they can use, documentation, external links, etc. - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. + - https://en.wikipedia.org/wiki/Reference_designator#Designators ### Minor -- Key-level orient - 3D orient for cases +- Post-process anchor for global (post-mirror!) orient/shift/rotate for everything - Allow shift/rotate for outlines (via `anchor_def`, probably) - More generic anchors or distances? - Intersect support for anchor affects clauses, which (combined with the math formulas and possible trigonometric functions) should allow for every use case we've discussed so far diff --git a/src/points.js b/src/points.js index 396413c..c4c157f 100644 --- a/src/points.js +++ b/src/points.js @@ -91,6 +91,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, spread: first_col ? 0 : units.$default_spread, splay: units.$default_splay, origin: [0, 0], + orient: 0, shift: [0, 0], rotate: 0, width: units.$default_width, @@ -118,6 +119,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, key.spread = a.sane(key.spread, `${key.name}.spread`, 'number')(units) key.splay = a.sane(key.splay, `${key.name}.splay`, 'number')(units) key.origin = a.xy(key.origin, `${key.name}.origin`)(units) + key.orient = a.sane(key.orient, `${key.name}.orient`, 'number')(units) key.shift = a.xy(key.shift, `${key.name}.shift`)(units) key.rotate = a.sane(key.rotate, `${key.name}.rotate`, 'number')(units) key.width = a.sane(key.width, `${key.name}.width`, 'number')(units) @@ -151,6 +153,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, for (const r of rotations) { point.rotate(r.angle, r.origin) } + point.r += key.orient point.shift(key.shift) point.r += key.rotate point.meta = key diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index 433c3c6..2e296a1 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -9,6 +9,7 @@ matrix_col_row: origin: - 0 - 0 + orient: 0 shift: - 0 - 0 diff --git a/test/cli/minimal/reference/points/points.yaml b/test/cli/minimal/reference/points/points.yaml index 433c3c6..2e296a1 100644 --- a/test/cli/minimal/reference/points/points.yaml +++ b/test/cli/minimal/reference/points/points.yaml @@ -9,6 +9,7 @@ matrix_col_row: origin: - 0 - 0 + orient: 0 shift: - 0 - 0 diff --git a/test/points/adjustments.yaml b/test/points/adjustments.yaml index 9aae94e..77850a8 100644 --- a/test/points/adjustments.yaml +++ b/test/points/adjustments.yaml @@ -3,11 +3,17 @@ points: matrix: columns: left: - right.key: - stagger: 5 - spread: 25 - splay: 5 - origin: [-9, -9] + right: + key: + stagger: 5 + spread: 25 + splay: 5 + origin: [-9, -9] + rows: + top: + orient: -90 + shift: [0, 10] + rotate: 90 rows: bottom: top: \ No newline at end of file diff --git a/test/points/adjustments___demo_dxf.dxf b/test/points/adjustments___demo_dxf.dxf index 7fafd46..d953dbe 100644 --- a/test/points/adjustments___demo_dxf.dxf +++ b/test/points/adjustments___demo_dxf.dxf @@ -193,49 +193,49 @@ LINE 8 0 10 -12.7752375 +22.7371845 20 -32.8592038 +33.7307612 11 -30.7067421 +40.6686891 21 -34.4280072 +35.2995646 0 LINE 8 0 10 -30.7067421 +40.6686891 20 -34.4280072 +35.2995646 11 -32.2755455 +42.2374925 21 -16.4965026 +17.36806 0 LINE 8 0 10 -32.2755455 +42.2374925 20 -16.4965026 +17.36806 11 -14.3440409 +24.3059879 21 -14.9276992 +15.7992566 0 LINE 8 0 10 -14.3440409 +24.3059879 20 -14.9276992 +15.7992566 11 -12.7752375 +22.7371845 21 -32.8592038 +33.7307612 0 ENDSEC 0 diff --git a/test/points/adjustments___points.json b/test/points/adjustments___points.json index 0dc8ef5..02b7e60 100644 --- a/test/points/adjustments___points.json +++ b/test/points/adjustments___points.json @@ -11,6 +11,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -43,6 +44,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -75,6 +77,7 @@ -9, -9 ], + "orient": 0, "shift": [ 0, 0 @@ -96,7 +99,16 @@ -9 ] }, - "rows": {}, + "rows": { + "top": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, "name": "right" }, "row": "bottom", @@ -104,8 +116,8 @@ } }, "matrix_right_top": { - "x": 22.525391499999998, - "y": 24.6778532, + "x": 32.4873385, + "y": 25.5494106, "r": 5, "meta": { "stagger": 5, @@ -115,11 +127,12 @@ -9, -9 ], + "orient": -90, "shift": [ 0, - 0 + 10 ], - "rotate": 0, + "rotate": 90, "width": 18, "height": 18, "padding": 19, @@ -136,7 +149,16 @@ -9 ] }, - "rows": {}, + "rows": { + "top": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, "name": "right" }, "row": "top", diff --git a/test/points/basic_2x2___points.json b/test/points/basic_2x2___points.json index 2fd2c4e..9f717de 100644 --- a/test/points/basic_2x2___points.json +++ b/test/points/basic_2x2___points.json @@ -11,6 +11,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -43,6 +44,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -75,6 +77,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -107,6 +110,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 diff --git a/test/points/default___points.json b/test/points/default___points.json index 33e284f..a24eb94 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -11,6 +11,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 diff --git a/test/points/overrides___points.json b/test/points/overrides___points.json index 9cc2884..e1e8152 100644 --- a/test/points/overrides___points.json +++ b/test/points/overrides___points.json @@ -11,6 +11,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -43,6 +44,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -75,6 +77,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -109,6 +112,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -143,6 +147,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -177,6 +182,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 @@ -215,6 +221,7 @@ 0, 0 ], + "orient": 0, "shift": [ 0, 0 From 534ac4b75d5dd5220d233a767a8858acd01e0ae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 26 Dec 2021 14:06:30 +0100 Subject: [PATCH 010/120] Filter implementation started --- src/filter.js | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/filter.js diff --git a/src/filter.js b/src/filter.js new file mode 100644 index 0000000..ff7a33e --- /dev/null +++ b/src/filter.js @@ -0,0 +1,86 @@ +const u = require('./utils') +const a = require('./assert') +const anchor = require('./anchor').parse + +const _true = () => true +const _and = arr => p => arr.map(e => e(p)).reduce((a, b) => a && b) +const _or = arr => p => arr.map(e => e(p)).reduce((a, b) => a || b) + +const similar = (a, b, name, units) => { + let neg = false + + if (b.startsWith('-')) { + neg = true + b = b.slice(1) + } + + if (b.startsWith('/')) { + //... + } +} + +const comparators = { + '~': similar + // TODO: extension point for other operators... +} +const symbols = Object.keys(comparators) + +const simple = (exp, name, units) => { + + let a = ['meta.name', 'meta.tags'] + let op = '~' + let b + const parts = exp.split(/\s+/g) + + // full case + if (symbols.includes(parts[1])) { + a = parts[0].split(',') + op = parts[1] + b = parts.slice(2).join(' ') + + // middle case, just an operator spec, default "a" + } else if (symbols.includes(parts[0])) { + op = parts[0] + b = parts.slice(1).join(' ') + + // basic case, only "b" + } else { + b = exp + } + + return comparators[op](a, b, name, units) +} + +const complex = (config, name, units, aggregator=_and) => { + + // default is all points + if (config === undefined) { + return _true + } + + // otherwise we branch by type + const type = a.type(config)() + switch(type) { + + // base case is a string, meaning a simple/single filter + case 'string': + return simple(config, name, units) + + // arrays are aggregated with alternating and/or conditions + case 'array': + const alternate = aggregator == _and ? _or : _and + return aggregator(config.map(elem => complex(elem, name, units, alternate))) + + default: + throw new Error(`Unexpected type "${type}" found at filter "${name}"!`) + } +} + +exports.parse = (config, name, points={}, units={}) => { + + if (a.type(config)() == 'object') { + return [anchor(config, name, points)(units)] + } + + return Object.values(points).filter(complex(config, name, units)) +} \ No newline at end of file From a7f333c9bc2943ae1cbc0d8f2151a75e50743236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 3 Jan 2022 14:43:45 +0100 Subject: [PATCH 011/120] Filter implementation progress --- src/filter.js | 54 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/src/filter.js b/src/filter.js index ff7a33e..a90fb2c 100644 --- a/src/filter.js +++ b/src/filter.js @@ -6,17 +6,41 @@ const _true = () => true const _and = arr => p => arr.map(e => e(p)).reduce((a, b) => a && b) const _or = arr => p => arr.map(e => e(p)).reduce((a, b) => a || b) -const similar = (a, b, name, units) => { +const similar = (key, reference, name, units) => { let neg = false - if (b.startsWith('-')) { + if (reference.startsWith('-')) { neg = true - b = b.slice(1) + reference = reference.slice(1) } - if (b.startsWith('/')) { - //... + // support both string or regex as reference + let internal_tester = val => (''+val) == reference + if (reference.startsWith('/')) { + const regex_parts = reference.split('/') + regex_parts.shift() // remove starting slash + const flags = regex_parts.pop() + const regex = new RegExp(regex_parts.join('/'), flags) + internal_tester = val => regex.test(''+val) } + + // support strings, arrays, or objects as key + const external_tester = point => { + const value = u.deep(point, key) + if (a.type(value)() == 'array') { + return value.some(subkey => internal_tester(subkey)) + } else if (a.type(value)() == 'object') { + return Object.keys(value).some(subkey => internal_tester(subkey)) + } else { + return internal_tester(value) + } + } + + // negation happens at the end + if (neg) { + return point => !external_tester(point) + } + return external_tester } const comparators = { @@ -27,28 +51,28 @@ const symbols = Object.keys(comparators) const simple = (exp, name, units) => { - let a = ['meta.name', 'meta.tags'] + let keys = ['meta.name', 'meta.tags'] let op = '~' - let b + let value const parts = exp.split(/\s+/g) // full case if (symbols.includes(parts[1])) { - a = parts[0].split(',') + keys = parts[0].split(',') op = parts[1] - b = parts.slice(2).join(' ') + value = parts.slice(2).join(' ') - // middle case, just an operator spec, default "a" + // middle case, just an operator spec, default "keys" } else if (symbols.includes(parts[0])) { op = parts[0] - b = parts.slice(1).join(' ') + value = parts.slice(1).join(' ') - // basic case, only "b" + // basic case, only "value" } else { - b = exp + value = exp } - return comparators[op](a, b, name, units) + return point => keys.some(key => comparators[op](key, value, name, units)) } const complex = (config, name, units, aggregator=_and) => { @@ -78,9 +102,11 @@ const complex = (config, name, units, aggregator=_and) => { exports.parse = (config, name, points={}, units={}) => { + // if a filter decl is an object, it is an anchor if (a.type(config)() == 'object') { return [anchor(config, name, points)(units)] } + // otherwise, it is treated as a condition to filter all available points return Object.values(points).filter(complex(config, name, units)) } \ No newline at end of file From bd6b5a0ca6d985042daacdf971ffefb223044abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 8 Jan 2022 23:51:03 +0100 Subject: [PATCH 012/120] Add filter tests --- roadmap.md | 2 ++ src/filter.js | 4 ++-- test/unit/filter.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 test/unit/filter.js diff --git a/roadmap.md b/roadmap.md index 743288a..d56752e 100644 --- a/roadmap.md +++ b/roadmap.md @@ -11,6 +11,8 @@ - Template for creating them, built-in variables they can use, documentation, external links, etc. - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. - https://en.wikipedia.org/wiki/Reference_designator#Designators +- Kill glue +- Revamp binding?? ### Minor diff --git a/src/filter.js b/src/filter.js index a90fb2c..3fdfe59 100644 --- a/src/filter.js +++ b/src/filter.js @@ -72,10 +72,10 @@ const simple = (exp, name, units) => { value = exp } - return point => keys.some(key => comparators[op](key, value, name, units)) + return point => keys.some(key => comparators[op](key, value, name, units)(point)) } -const complex = (config, name, units, aggregator=_and) => { +const complex = (config, name, units, aggregator=_or) => { // default is all points if (config === undefined) { diff --git a/test/unit/filter.js b/test/unit/filter.js new file mode 100644 index 0000000..bdf5775 --- /dev/null +++ b/test/unit/filter.js @@ -0,0 +1,44 @@ +const filter = require('../../src/filter').parse +const anchor = require('../../src/anchor').parse +const Point = require('../../src/point') + +describe('Filter', function() { + + const points = { + one: new Point(0, 1, 0, {name: 'one', tags: ['odd']}), + two: new Point(0, 2, 0, {name: 'two', tags: ['even', 'prime']}), + three: new Point(0, 3, 0, {name: 'three', tags: {odd: 'yes', prime: 'yupp'}}) + } + + const names = points => points.map(p => p.meta.name) + + it('similar', function() { + // no points filter to no points + filter(undefined, '', undefined).should.deep.equal([]) + // and undefined config doesn't filter anything + filter(undefined, '', points).should.deep.equal(Object.values(points)) + // objects just propagate to anchor (and then wrap in array for consistency) + filter({}, '', points).should.deep.equal([anchor({}, '', points)()]) + // simple name string + names(filter('one', '', points)).should.deep.equal(['one']) + // simple name regex + names(filter('/^t/', '', points)).should.deep.equal(['two', 'three']) + // tags should count, too (one for the name, three for the odd tag) + names(filter('/^o/', '', points)).should.deep.equal(['one', 'three']) + // middle spec, should be the same as above, only explicit + names(filter('~ /^o/', '', points)).should.deep.equal(['one', 'three']) + // full spec (n would normally match both one and even, but on the tags level, it's just even) + names(filter('meta.tags ~ /n/', '', points)).should.deep.equal(['two']) + // negation + names(filter('meta.tags ~ -/n/', '', points)).should.deep.equal(['one', 'three']) + // arrays OR by default at odd levels levels (including top level)... + names(filter(['one', 'two'], '', points)).should.deep.equal(['one', 'two']) + // ...and AND at even levels + names(filter([['even', 'prime']], '', points)).should.deep.equal(['two']) + // arbitrary nesting should be possible + names(filter([[['even', 'odd'], 'prime']], '', points)).should.deep.equal(['two', 'three']) + // anything other than string/array/object/undefined is an error + filter.bind(this, 28, '', points).should.throw('Unexpected type') + }) + +}) \ No newline at end of file From 6504b2b9528c6072badb769d9fcdd28536b9850e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 9 Jan 2022 22:56:05 +0100 Subject: [PATCH 013/120] Outlines rewrite in progress --- src/anchor.js | 5 +- src/outlines.js | 381 +++++++++++++++++++++++++++--------------------- src/utils.js | 2 +- 3 files changed, 216 insertions(+), 172 deletions(-) diff --git a/src/anchor.js b/src/anchor.js index 5f08925..92e52b6 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -2,13 +2,12 @@ const u = require('./utils') const a = require('./assert') const Point = require('./point') -const mirror_ref = exports.mirror = (ref, mirror) => { +const mirror_ref = exports.mirror = (ref, mirror=true) => { if (mirror) { if (ref.startsWith('mirror_')) { return ref.substring(7) - } else { - return 'mirror_' + ref } + return 'mirror_' + ref } return ref } diff --git a/src/outlines.js b/src/outlines.js index 66f4308..28a47ed 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -5,82 +5,80 @@ const o = require('./operation') const Point = require('./point') const prep = require('./prepare') const anchor_lib = require('./anchor') +const filter = require('./filter').parse -const rectangle = (w, h, corner, bevel, name='') => { - const error = (dim, val) => `Rectangle for "${name}" isn't ${dim} enough for its corner and bevel (${val} - 2 * ${corner} - 2 * ${bevel} <= 0)!` - const mod = 2 * (corner + bevel) - const cw = w - mod - a.assert(cw >= 0, error('wide', w)) - const ch = h - mod - a.assert(ch >= 0, error('tall', h)) +const binding = (base, w, h, point, units) => { - let res = new m.models.Rectangle(cw, ch) - if (bevel) { - res = u.poly([ - [-bevel, 0], - [-bevel, ch], - [0, ch + bevel], - [cw, ch + bevel], - [cw + bevel, ch], - [cw + bevel, 0], - [cw, -bevel], - [0, -bevel] - ]) + let bind = a.trbl(point.meta.bind || 0, `${point.meta.name}.bind`)(units) + // if it's a mirrored key, we swap the left and right bind values + if (point.meta.mirrored) { + bind = [bind[0], bind[3], bind[2], bind[1]] } - if (corner > 0) res = m.model.outline(res, corner, 0) - return m.model.moveRelative(res, [corner + bevel, corner + bevel]) + + const bt = h/2 + Math.max(bind[0], 0) + const br = w/2 + Math.max(bind[1], 0) + const bd = -h/2 - Math.max(bind[2], 0) + const bl = -w/2 - Math.max(bind[3], 0) + + if (bind[0] || bind[1]) base = u.union(base, u.rect(br, bt)) + if (bind[1] || bind[2]) base = u.union(base, u.rect(br, -bd, [0, bd])) + if (bind[2] || bind[3]) base = u.union(base, u.rect(-bl, -bd, [bl, bd])) + if (bind[3] || bind[0]) base = u.union(base, u.rect(-bl, bt, [bl, 0])) + + return base } -const layout = exports._layout = (config = {}, points = {}, units = {}) => { +const rectangle = (config, name, points, units) => { - // Glue config sanitization + // prepare params + a.unexpected(config, `${name}`, ['size', 'corner', 'bevel']) + const size = a.wh(params.size, `${export_name}.size`)(units) + const rec_units = prep.extend({ + sx: size[0], + sy: size[1] + }, units) + const corner = a.sane(params.corner || 0, `${export_name}.corner`, 'number')(rec_units) + const bevel = a.sane(params.bevel || 0, `${export_name}.bevel`, 'number')(rec_units) - const parsed_glue = u.deepcopy(a.sane(config, 'outlines.glue', 'object')()) - for (let [gkey, gval] of Object.entries(parsed_glue)) { - a.unexpected(gval, `outlines.glue.${gkey}`, ['top', 'bottom', 'waypoints', 'extra']) - - for (const y of ['top', 'bottom']) { - a.unexpected(gval[y], `outlines.glue.${gkey}.${y}`, ['left', 'right']) - gval[y].left = anchor_lib.parse(gval[y].left, `outlines.glue.${gkey}.${y}.left`, points) - if (a.type(gval[y].right)(units) != 'number') { - gval[y].right = anchor_lib.parse(gval[y].right, `outlines.glue.${gkey}.${y}.right`, points) - } + // return shape function + return (point, bound, mirror) => { + + const error = (dim, val) => `Rectangle for "${name}" isn't ${dim} enough for its corner and bevel (${val} - 2 * ${corner} - 2 * ${bevel} <= 0)!` + const [w, h] = size + const mod = 2 * (corner + bevel) + const cw = w - mod + a.assert(cw >= 0, error('wide', w)) + const ch = h - mod + a.assert(ch >= 0, error('tall', h)) + + let rect = new m.models.Rectangle(cw, ch) + if (bevel) { + rect = u.poly([ + [-bevel, 0], + [-bevel, ch], + [0, ch + bevel], + [cw, ch + bevel], + [cw + bevel, ch], + [cw + bevel, 0], + [cw, -bevel], + [0, -bevel] + ]) } - - gval.waypoints = a.sane(gval.waypoints || [], `outlines.glue.${gkey}.waypoints`, 'array')(units) - let wi = 0 - gval.waypoints = gval.waypoints.map(w => { - const name = `outlines.glue.${gkey}.waypoints[${++wi}]` - a.unexpected(w, name, ['percent', 'width']) - w.percent = a.sane(w.percent, name + '.percent', 'number')(units) - w.width = a.wh(w.width, name + '.width')(units) - return w - }) + if (corner > 0) rect = m.model.outline(rect, corner, 0) + rect = m.model.moveRelative(res, [corner + bevel, corner + bevel]) - parsed_glue[gkey] = gval + let normal = u.deepcopy(rect) + if (bound) normal = binding(normal, w, h, point, rec_units) + normal = point.position(normal) + + let mirrored + if (mirror) { + mirrored_name = anchor_lib.mirror(point.name) + } } +} - // TODO: handle glue.extra (or revoke it from the docs) - - return (params, export_name, expected) => { - - // Layout params sanitization - - a.unexpected(params, `${export_name}`, expected.concat(['side', 'tags', 'glue', 'size', 'corner', 'bevel', 'bound'])) - const size = a.wh(params.size, `${export_name}.size`)(units) - const relative_units = prep.extend({ - sx: size[0], - sy: size[1] - }, units) - - - - const side = a.in(params.side, `${export_name}.side`, ['left', 'right', 'middle', 'both', 'glue']) - const tags = a.sane(params.tags || [], `${export_name}.tags`, 'array')() - const corner = a.sane(params.corner || 0, `${export_name}.corner`, 'number')(relative_units) - const bevel = a.sane(params.bevel || 0, `${export_name}.bevel`, 'number')(relative_units) - const bound = a.sane(params.bound === undefined ? true : params.bound, `${export_name}.bound`, 'boolean')() // Actual layout @@ -220,125 +218,172 @@ const layout = exports._layout = (config = {}, points = {}, units = {}) => { } } -exports.parse = (config = {}, points = {}, units = {}) => { - a.unexpected(config, 'outline', ['glue', 'exports']) - const layout_fn = layout(config.glue, points, units) +const whats = { + rectangle, +} + + + + + +exports.parse = (config = {}, points = {}, units = {}) => { + + // output outlines will be collected here const outlines = {} - const ex = a.sane(config.exports || {}, 'outlines.exports', 'object')() - for (let [key, parts] of Object.entries(ex)) { + // the config must be an actual object so that the exports have names + config = a.sane(config, 'outlines', 'object')() + for (let [outline_name, parts] of Object.entries(config)) { + + // placeholder for the current outline + outlines[outline_name] = {models: {}} + + // each export can consist of multiple parts + // either sub-objects or arrays are fine... if (a.type(parts)() == 'array') { parts = {...parts} } - parts = a.sane(parts, `outlines.exports.${key}`, 'object')() - let result = {models: {}} + parts = a.sane(parts, `outlines.${key}`, 'object')() + for (let [part_name, part] of Object.entries(parts)) { - const name = `outlines.exports.${key}.${part_name}` + + const name = `outlines.${key}.${part_name}` + + // string part-shortcuts are expanded first if (a.type(part)() == 'string') { part = o.operation(part, {outline: Object.keys(outlines)}) } - const expected = ['type', 'operation'] - part.type = a.in(part.type || 'outline', `${name}.type`, ['keys', 'rectangle', 'circle', 'polygon', 'outline']) - part.operation = a.in(part.operation || 'add', `${name}.operation`, ['add', 'subtract', 'intersect', 'stack']) - let op = u.union - if (part.operation == 'subtract') op = u.subtract - else if (part.operation == 'intersect') op = u.intersect - else if (part.operation == 'stack') op = u.stack + // process keys that are common to all part declarations + const what = a.in(part.what || 'outline', `${name}.what`, ['rectangle', 'circle', 'polygon', 'outline']) + // where is delayed until we have all, potentially what-dependent units + const where = units => filter(part.where, `${name}.where`, points, units) + const operation = u[a.in(part.operation || 'add', `${name}.operation`, ['add', 'subtract', 'intersect', 'stack'])] + const bound = a.sane(part.bound === undefined ? true : part.bound, `${name}.bound`, 'boolean')() + const mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() - let arg - let anchor - const anchor_def = part.anchor || {} - switch (part.type) { - case 'keys': - arg = layout_fn(part, name, expected) - break - case 'rectangle': - a.unexpected(part, name, expected.concat(['anchor', 'size', 'corner', 'bevel', 'mirror'])) - const size = a.wh(part.size, `${name}.size`)(units) - const rec_units = prep.extend({ - sx: size[0], - sy: size[1] - }, units) - anchor = anchor_lib.parse(anchor_def, `${name}.anchor`, points)(rec_units) - const corner = a.sane(part.corner || 0, `${name}.corner`, 'number')(rec_units) - const bevel = a.sane(part.bevel || 0, `${name}.bevel`, 'number')(rec_units) - const rect_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() - const rect = m.model.moveRelative(rectangle(size[0], size[1], corner, bevel, name), [-size[0]/2, -size[1]/2]) - arg = anchor.position(u.deepcopy(rect)) - if (rect_mirror) { - const mirror_anchor = u.deepcopy(anchor_def) - a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`) - anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(rec_units) - arg = u.union(arg, anchor.position(u.deepcopy(rect))) - } - break - case 'circle': - a.unexpected(part, name, expected.concat(['anchor', 'radius', 'mirror'])) - const radius = a.sane(part.radius, `${name}.radius`, 'number')(units) - const circle_units = prep.extend({ - r: radius - }, units) - anchor = anchor_lib.parse(anchor_def, `${name}.anchor`, points)(circle_units) - const circle_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() - arg = u.circle(anchor.p, radius) - if (circle_mirror) { - const mirror_anchor = u.deepcopy(anchor_def) - a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`) - anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(circle_units) - arg = u.union(arg, u.circle(anchor.p, radius)) - } - break - case 'polygon': - a.unexpected(part, name, expected.concat(['points', 'mirror'])) - const poly_points = a.sane(part.points, `${name}.points`, 'array')() - const poly_mirror = a.sane(part.mirror || false, `${name.mirror}`, 'boolean')() - const parsed_points = [] - const mirror_points = [] - let poly_mirror_x = 0 - let last_anchor = new Point() - let poly_index = 0 - for (const poly_point of poly_points) { - const poly_name = `${name}.points[${++poly_index}]` - if (poly_index == 1 && poly_mirror) { - a.assert(poly_point.ref, `Field "${poly_name}.ref" must be speficied if mirroring is required!`) - const mirrored_ref = anchor_lib.mirror(poly_point.ref, poly_mirror) - a.assert(points[poly_point.ref], `Field "${poly_name}.ref" does not name an existing point!`) - a.assert(points[mirrored_ref], `The mirror of field "${poly_name}.ref" ("${mirrored_ref}") does not name an existing point!`) - poly_mirror_x = (points[poly_point.ref].x + points[mirrored_ref].x) / 2 - } - last_anchor = anchor_lib.parse(poly_point, poly_name, points, true, last_anchor)(units) - parsed_points.push(last_anchor.p) - mirror_points.push(last_anchor.clone().mirror(poly_mirror_x).p) - } - arg = u.poly(parsed_points) - if (poly_mirror) { - arg = u.union(arg, u.poly(mirror_points)) - } - break - case 'outline': - a.unexpected(part, name, expected.concat(['name', 'fillet'])) - a.assert(outlines[part.name], `Field "${name}.name" does not name an existing outline!`) - const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) - arg = u.deepcopy(outlines[part.name]) - if (fillet) { - for (const [index, chain] of m.model.findChains(arg).entries()) { - arg.models[`fillet_${index}`] = m.chain.fillet(chain, fillet) - } - } - break - default: - throw new Error(`Field "${name}.type" (${part.type}) does not name a valid outline part type!`) + // which are then removed, so ops can check their own unexpected keys + delete part.what + delete part.where + delete part.operation + delete part.bound + delete part.mirror + + // a prototype "shape" maker (and its units) are computed + const [shape, shape_units] = whats[what](part, name, points, units) + + // and then repeated for all where positions + for (const w of where(shape_units)) { + const [normal, mirrored] = shape(w, bound, mirror) + outlines[outline_name] = operation(outlines[outline_name], normal) + // and even their mirrors, if applicable + if (mirror) { + outlines[outline_name] = operation(outlines[outline_name], mirrored) + } } - - result = op(result, arg) } - m.model.originate(result) - m.model.simplify(result) - outlines[key] = result + m.model.originate(outlines[outline_name]) + m.model.simplify(outlines[outline_name]) + } return outlines -} \ No newline at end of file +} + +// let arg +// let anchor +// const anchor_def = part.anchor || {} +// switch (part.type) { +// case 'keys': +// arg = layout_fn(part, name, expected) +// break +// case 'rectangle': +// a.unexpected(part, name, expected.concat(['anchor', 'size', 'corner', 'bevel', 'mirror'])) +// const size = a.wh(part.size, `${name}.size`)(units) +// const rec_units = prep.extend({ +// sx: size[0], +// sy: size[1] +// }, units) +// anchor = anchor_lib.parse(anchor_def, `${name}.anchor`, points)(rec_units) +// const corner = a.sane(part.corner || 0, `${name}.corner`, 'number')(rec_units) +// const bevel = a.sane(part.bevel || 0, `${name}.bevel`, 'number')(rec_units) +// const rect_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() +// const rect = m.model.moveRelative(rectangle(size[0], size[1], corner, bevel, name), [-size[0]/2, -size[1]/2]) +// arg = anchor.position(u.deepcopy(rect)) +// if (rect_mirror) { +// const mirror_anchor = u.deepcopy(anchor_def) +// a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`) +// anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(rec_units) +// arg = u.union(arg, anchor.position(u.deepcopy(rect))) +// } +// break +// case 'circle': +// a.unexpected(part, name, expected.concat(['anchor', 'radius', 'mirror'])) +// const radius = a.sane(part.radius, `${name}.radius`, 'number')(units) +// const circle_units = prep.extend({ +// r: radius +// }, units) +// anchor = anchor_lib.parse(anchor_def, `${name}.anchor`, points)(circle_units) +// const circle_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() +// arg = u.circle(anchor.p, radius) +// if (circle_mirror) { +// const mirror_anchor = u.deepcopy(anchor_def) +// a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`) +// anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(circle_units) +// arg = u.union(arg, u.circle(anchor.p, radius)) +// } +// break +// case 'polygon': +// a.unexpected(part, name, expected.concat(['points', 'mirror'])) +// const poly_points = a.sane(part.points, `${name}.points`, 'array')() +// const poly_mirror = a.sane(part.mirror || false, `${name.mirror}`, 'boolean')() +// const parsed_points = [] +// const mirror_points = [] +// let poly_mirror_x = 0 +// let last_anchor = new Point() +// let poly_index = 0 +// for (const poly_point of poly_points) { +// const poly_name = `${name}.points[${++poly_index}]` +// if (poly_index == 1 && poly_mirror) { +// a.assert(poly_point.ref, `Field "${poly_name}.ref" must be speficied if mirroring is required!`) +// const mirrored_ref = anchor_lib.mirror(poly_point.ref, poly_mirror) +// a.assert(points[poly_point.ref], `Field "${poly_name}.ref" does not name an existing point!`) +// a.assert(points[mirrored_ref], `The mirror of field "${poly_name}.ref" ("${mirrored_ref}") does not name an existing point!`) +// poly_mirror_x = (points[poly_point.ref].x + points[mirrored_ref].x) / 2 +// } +// last_anchor = anchor_lib.parse(poly_point, poly_name, points, true, last_anchor)(units) +// parsed_points.push(last_anchor.p) +// mirror_points.push(last_anchor.clone().mirror(poly_mirror_x).p) +// } +// arg = u.poly(parsed_points) +// if (poly_mirror) { +// arg = u.union(arg, u.poly(mirror_points)) +// } +// break +// case 'outline': +// a.unexpected(part, name, expected.concat(['name', 'fillet'])) +// a.assert(outlines[part.name], `Field "${name}.name" does not name an existing outline!`) +// const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) +// arg = u.deepcopy(outlines[part.name]) +// if (fillet) { +// for (const [index, chain] of m.model.findChains(arg).entries()) { +// arg.models[`fillet_${index}`] = m.chain.fillet(chain, fillet) +// } +// } +// break +// default: +// throw new Error(`Field "${name}.type" (${part.type}) does not name a valid outline part type!`) +// } + +// result = op(result, arg) +// } + +// m.model.originate(result) +// m.model.simplify(result) +// outlines[key] = result +// } + +// return outlines +// } \ No newline at end of file diff --git a/src/utils.js b/src/utils.js index 4955cf8..cfdb1ea 100644 --- a/src/utils.js +++ b/src/utils.js @@ -56,7 +56,7 @@ exports.poly = (arr) => { const farPoint = [1234.1234, 2143.56789] -exports.union = (a, b) => { +exports.union = exports.add = (a, b) => { return m.model.combine(a, b, false, true, false, true, { farPoint }) From df7b76c61015cb4eefa398aedda96a1f795df949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 10 Jan 2022 13:44:57 +0100 Subject: [PATCH 014/120] Outlines rewrite, part 2 --- src/filter.js | 24 +++- src/outlines.js | 355 +++++++++++++----------------------------------- src/utils.js | 14 ++ 3 files changed, 127 insertions(+), 266 deletions(-) diff --git a/src/filter.js b/src/filter.js index 3fdfe59..f56723b 100644 --- a/src/filter.js +++ b/src/filter.js @@ -1,6 +1,7 @@ const u = require('./utils') const a = require('./assert') -const anchor = require('./anchor').parse +const anchor_lib = require('./anchor') +const anchor = anchor_lib.parse const _true = () => true const _and = arr => p => arr.map(e => e(p)).reduce((a, b) => a && b) @@ -100,13 +101,26 @@ const complex = (config, name, units, aggregator=_or) => { } } -exports.parse = (config, name, points={}, units={}) => { +exports.parse = (config, name, points={}, units={}, include_mirrors=false) => { + let result = [] + // if a filter decl is an object, it is an anchor if (a.type(config)() == 'object') { - return [anchor(config, name, points)(units)] + result.push(anchor(config, name, points)(units)) + if (include_mirrors) { + // this is strict: if the ref of the anchor doesn't have a mirror pair, it will error out + result.push(anchor(config, name, points, true, undefined, true)(units)) + } + + // otherwise, it is treated as a condition to filter all available points + } else { + result = Object.values(points).filter(complex(config, name, units)) + if (include_mirrors) { + // this is permissive: we only include mirrored versions if they exist, and don't fuss if they don't + result = result.concat(result.map(p => points[anchor_lib.mirror(p.meta.name)]).filter(p => !!p)) + } } - // otherwise, it is treated as a condition to filter all available points - return Object.values(points).filter(complex(config, name, units)) + return result } \ No newline at end of file diff --git a/src/outlines.js b/src/outlines.js index 28a47ed..535837c 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -4,10 +4,10 @@ const a = require('./assert') const o = require('./operation') const Point = require('./point') const prep = require('./prepare') -const anchor_lib = require('./anchor') +const anchor = require('./anchor').parse const filter = require('./filter').parse -const binding = (base, w, h, point, units) => { +const binding = (base, point, units, origin=[0, 0]) => { let bind = a.trbl(point.meta.bind || 0, `${point.meta.name}.bind`)(units) // if it's a mirrored key, we swap the left and right bind values @@ -15,6 +15,10 @@ const binding = (base, w, h, point, units) => { bind = [bind[0], bind[3], bind[2], bind[1]] } + const bbox = m.measure.modelExtents(base) + + // TODO transition to bbox + origin computation + const bt = h/2 + Math.max(bind[0], 0) const br = w/2 + Math.max(bind[1], 0) const bd = -h/2 - Math.max(bind[2], 0) @@ -28,7 +32,7 @@ const binding = (base, w, h, point, units) => { return base } -const rectangle = (config, name, points, units) => { +const rectangle = (config, name, points, outlines, units) => { // prepare params a.unexpected(config, `${name}`, ['size', 'corner', 'bevel']) @@ -41,7 +45,7 @@ const rectangle = (config, name, points, units) => { const bevel = a.sane(params.bevel || 0, `${export_name}.bevel`, 'number')(rec_units) // return shape function - return (point, bound, mirror) => { + return (point, bound) => { const error = (dim, val) => `Rectangle for "${name}" isn't ${dim} enough for its corner and bevel (${val} - 2 * ${corner} - 2 * ${bevel} <= 0)!` const [w, h] = size @@ -66,167 +70,94 @@ const rectangle = (config, name, points, units) => { } if (corner > 0) rect = m.model.outline(rect, corner, 0) rect = m.model.moveRelative(res, [corner + bevel, corner + bevel]) + if (bound) rect = binding(rect, w, h, point, rec_units) + rect = point.position(rect) - let normal = u.deepcopy(rect) - if (bound) normal = binding(normal, w, h, point, rec_units) - normal = point.position(normal) - - let mirrored - if (mirror) { - mirrored_name = anchor_lib.mirror(point.name) - } + return rect } } +const circle = (config, name, points, outlines, units) => { + // prepare params + a.unexpected(config, `${name}`, ['radius']) + const radius = a.sane(config.radius, `${name}.radius`, 'number')(units) + const circ_units = prep.extend({ + r: radius + }, units) - // Actual layout - - let left = {models: {}} - let right = {models: {}} - if (['left', 'right', 'middle', 'both'].includes(side)) { - for (const [pname, p] of Object.entries(points)) { - - // filter by tags, if necessary - if (tags.length) { - const source = p.meta.tags || {} - const point_tags = Object.keys(source).filter(t => !!source[t]) - const relevant = point_tags.some(pt => tags.includes(pt)) - if (!relevant) continue - } - - let from_x = -size[0] / 2, to_x = size[0] / 2 - let from_y = -size[1] / 2, to_y = size[1] / 2 - - // the original position - let rect = rectangle(to_x - from_x, to_y - from_y, corner, bevel, `${export_name}.size`) - rect = m.model.moveRelative(rect, [from_x, from_y]) - - // extra binding "material", if necessary - if (bound) { - let bind = a.trbl(p.meta.bind || 0, `${pname}.bind`)(relative_units) - // if it's a mirrored key, we swap the left and right bind values - if (p.meta.mirrored) { - bind = [bind[0], bind[3], bind[2], bind[1]] - } - - const bt = to_y + Math.max(bind[0], 0) - const br = to_x + Math.max(bind[1], 0) - const bd = from_y - Math.max(bind[2], 0) - const bl = from_x - Math.max(bind[3], 0) - - if (bind[0] || bind[1]) rect = u.union(rect, u.rect(br, bt)) - if (bind[1] || bind[2]) rect = u.union(rect, u.rect(br, -bd, [0, bd])) - if (bind[2] || bind[3]) rect = u.union(rect, u.rect(-bl, -bd, [bl, bd])) - if (bind[3] || bind[0]) rect = u.union(rect, u.rect(-bl, bt, [bl, 0])) - } - - // positioning and unioning the resulting shape - rect = p.position(rect) - if (p.meta.mirrored) { - right = u.union(right, rect) - } else { - left = u.union(left, rect) - } - } - } - if (side == 'left') return left - if (side == 'right') return right - - // allow opting out of gluing, when - // A) there are no glue definitions, or - // B) glue is explicitly set to false - const glue_opt_out = (!Object.keys(parsed_glue).length || params.glue === false) - - let glue = {models: {}} - if (bound && ['middle', 'both', 'glue'].includes(side) && !glue_opt_out) { - - const default_glue_name = Object.keys(parsed_glue)[0] - const computed_glue_name = a.sane(params.glue || default_glue_name, `${export_name}.glue`, 'string')() - const glue_def = parsed_glue[computed_glue_name] - a.assert(glue_def, `Field "${export_name}.glue" does not name a valid glue!`) - - const get_line = (anchor) => { - if (a.type(anchor)(relative_units) == 'number') { - return u.line([anchor, -1000], [anchor, 1000]) - } - - // if it wasn't a number, then it's a (possibly relative) anchor - const from = anchor(relative_units).clone() - const to = from.clone().shift([from.meta.mirrored ? -1 : 1, 0]) - - return u.line(from.p, to.p) - } - - const tll = get_line(glue_def.top.left) - const trl = get_line(glue_def.top.right) - const tip = m.path.converge(tll, trl) - if (!tip) { - throw new Error(`Top lines don't intersect in glue "${computed_glue_name}"!`) - } - const tlp = u.eq(tll.origin, tip) ? tll.end : tll.origin - const trp = u.eq(trl.origin, tip) ? trl.end : trl.origin - - const bll = get_line(glue_def.bottom.left) - const brl = get_line(glue_def.bottom.right) - const bip = m.path.converge(bll, brl) - if (!bip) { - throw new Error(`Bottom lines don't intersect in glue "${computed_glue_name}"!`) - } - const blp = u.eq(bll.origin, bip) ? bll.end : bll.origin - const brp = u.eq(brl.origin, bip) ? brl.end : brl.origin - - const left_waypoints = [] - const right_waypoints = [] - - for (const w of glue_def.waypoints) { - const percent = w.percent / 100 - const center_x = tip[0] + percent * (bip[0] - tip[0]) - const center_y = tip[1] + percent * (bip[1] - tip[1]) - const left_x = center_x - w.width[0] - const right_x = center_x + w.width[1] - left_waypoints.push([left_x, center_y]) - right_waypoints.unshift([right_x, center_y]) - } - - let waypoints - const is_split = a.type(glue_def.top.right)(relative_units) == 'number' - if (is_split) { - waypoints = [tip, tlp] - .concat(left_waypoints) - .concat([blp, bip]) - } else { - waypoints = [trp, tip, tlp] - .concat(left_waypoints) - .concat([blp, bip, brp]) - .concat(right_waypoints) - } - - glue = u.poly(waypoints) - } - if (side == 'glue') return glue - - if (side == 'middle') { - let middle = u.subtract(glue, left) - middle = u.subtract(middle, right) - return middle - } - - let both = u.union(u.deepcopy(left), glue) - both = u.union(both, u.deepcopy(right)) - return both + // return shape function + return (point, bound) => { + let circle = u.circle([0, 0], radius) + if (bound) circle = binding(circle, radius, radius, point, circ_units) + circle = point.position(circle) + return circle } } +const polygon = (config, name, points, outlines, units) => { + + // prepare params + a.unexpected(config, `${name}`, ['points']) + const poly_points = a.sane(config.points, `${name}.points`, 'array')() + + // return shape function + return (point, bound) => { + const parsed_points = [] + let last_anchor = new Point() + let poly_index = -1 + for (const poly_point of poly_points) { + const poly_name = `${name}.points[${++poly_index}]` + last_anchor = anchor(poly_point, poly_name, points, true, last_anchor)(units) + parsed_points.push(last_anchor.p) + } + let poly = u.poly(parsed_points) + const bbox = u.bbox(parsed_points) + if (bound) poly = binding(poly, bbox.high[0] - bbox.low[0], bbox.high[1] - bbox.low[1], point, units) + poly = point.position(poly) + return poly + } +} + +const outline = (config, name, points, outlines, units) => { + + // prepare params + a.unexpected(config, `${name}`, ['name', 'fillet', 'expand', 'origin']) + a.assert(outlines[config.name], `Field "${name}.name" does not name an existing outline!`) + const fillet = a.sane(config.fillet || 0, `${name}.fillet`, 'number')(units) + const expand = a.sane(config.expand || 0, `${name}.expand`, 'number')(units) + const origin = a.xy(config.origin, `${name}.origin`)(units) + + // return shape function + return (point, bound) => { + let o = u.deepcopy(outlines[config.name]) + o = m.model.moveRelative(o, [-origin[0], -origin[1]]) + + if (fillet) { + for (const [index, chain] of m.model.findChains(o).entries()) { + o.models[`fillet_${index}`] = m.chain.fillet(chain, fillet) + } + } + + if (extend) { + // TODO + } + + const bbox = m.measure.modelExtents(o) + if (bound) o = binding(o, bbox.high[0] - bbox.low[0], bbox.high[1] - bbox.low[1], point, units) + + o = point.position(o) + return o + } +} const whats = { rectangle, + circle, + polygon, + outline } - - - - exports.parse = (config = {}, points = {}, units = {}) => { // output outlines will be collected here @@ -256,34 +187,32 @@ exports.parse = (config = {}, points = {}, units = {}) => { } // process keys that are common to all part declarations - const what = a.in(part.what || 'outline', `${name}.what`, ['rectangle', 'circle', 'polygon', 'outline']) - // where is delayed until we have all, potentially what-dependent units - const where = units => filter(part.where, `${name}.where`, points, units) const operation = u[a.in(part.operation || 'add', `${name}.operation`, ['add', 'subtract', 'intersect', 'stack'])] const bound = a.sane(part.bound === undefined ? true : part.bound, `${name}.bound`, 'boolean')() const mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() + const what = a.in(part.what || 'outline', `${name}.what`, ['rectangle', 'circle', 'polygon', 'outline']) + // `where` is delayed until we have all, potentially what-dependent units + // default where is the single default anchor (at [0,0]) + const where = units => filter(part.where || {}, `${name}.where`, points, units, mirror) - // which are then removed, so ops can check their own unexpected keys - delete part.what - delete part.where + // these keys are then removed, so ops can check their own unexpected keys without interference delete part.operation delete part.bound delete part.mirror + delete part.what + delete part.where // a prototype "shape" maker (and its units) are computed - const [shape, shape_units] = whats[what](part, name, points, units) + const [shape_maker, shape_units] = whats[what](part, name, points, outlines, units) - // and then repeated for all where positions + // and then the shape is repeated for all where positions for (const w of where(shape_units)) { - const [normal, mirrored] = shape(w, bound, mirror) - outlines[outline_name] = operation(outlines[outline_name], normal) - // and even their mirrors, if applicable - if (mirror) { - outlines[outline_name] = operation(outlines[outline_name], mirrored) - } + const shape = shape_maker(w, bound) + outlines[outline_name] = operation(outlines[outline_name], shape) } } + // final adjustments m.model.originate(outlines[outline_name]) m.model.simplify(outlines[outline_name]) @@ -291,99 +220,3 @@ exports.parse = (config = {}, points = {}, units = {}) => { return outlines } - -// let arg -// let anchor -// const anchor_def = part.anchor || {} -// switch (part.type) { -// case 'keys': -// arg = layout_fn(part, name, expected) -// break -// case 'rectangle': -// a.unexpected(part, name, expected.concat(['anchor', 'size', 'corner', 'bevel', 'mirror'])) -// const size = a.wh(part.size, `${name}.size`)(units) -// const rec_units = prep.extend({ -// sx: size[0], -// sy: size[1] -// }, units) -// anchor = anchor_lib.parse(anchor_def, `${name}.anchor`, points)(rec_units) -// const corner = a.sane(part.corner || 0, `${name}.corner`, 'number')(rec_units) -// const bevel = a.sane(part.bevel || 0, `${name}.bevel`, 'number')(rec_units) -// const rect_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() -// const rect = m.model.moveRelative(rectangle(size[0], size[1], corner, bevel, name), [-size[0]/2, -size[1]/2]) -// arg = anchor.position(u.deepcopy(rect)) -// if (rect_mirror) { -// const mirror_anchor = u.deepcopy(anchor_def) -// a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`) -// anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(rec_units) -// arg = u.union(arg, anchor.position(u.deepcopy(rect))) -// } -// break -// case 'circle': -// a.unexpected(part, name, expected.concat(['anchor', 'radius', 'mirror'])) -// const radius = a.sane(part.radius, `${name}.radius`, 'number')(units) -// const circle_units = prep.extend({ -// r: radius -// }, units) -// anchor = anchor_lib.parse(anchor_def, `${name}.anchor`, points)(circle_units) -// const circle_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() -// arg = u.circle(anchor.p, radius) -// if (circle_mirror) { -// const mirror_anchor = u.deepcopy(anchor_def) -// a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`) -// anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(circle_units) -// arg = u.union(arg, u.circle(anchor.p, radius)) -// } -// break -// case 'polygon': -// a.unexpected(part, name, expected.concat(['points', 'mirror'])) -// const poly_points = a.sane(part.points, `${name}.points`, 'array')() -// const poly_mirror = a.sane(part.mirror || false, `${name.mirror}`, 'boolean')() -// const parsed_points = [] -// const mirror_points = [] -// let poly_mirror_x = 0 -// let last_anchor = new Point() -// let poly_index = 0 -// for (const poly_point of poly_points) { -// const poly_name = `${name}.points[${++poly_index}]` -// if (poly_index == 1 && poly_mirror) { -// a.assert(poly_point.ref, `Field "${poly_name}.ref" must be speficied if mirroring is required!`) -// const mirrored_ref = anchor_lib.mirror(poly_point.ref, poly_mirror) -// a.assert(points[poly_point.ref], `Field "${poly_name}.ref" does not name an existing point!`) -// a.assert(points[mirrored_ref], `The mirror of field "${poly_name}.ref" ("${mirrored_ref}") does not name an existing point!`) -// poly_mirror_x = (points[poly_point.ref].x + points[mirrored_ref].x) / 2 -// } -// last_anchor = anchor_lib.parse(poly_point, poly_name, points, true, last_anchor)(units) -// parsed_points.push(last_anchor.p) -// mirror_points.push(last_anchor.clone().mirror(poly_mirror_x).p) -// } -// arg = u.poly(parsed_points) -// if (poly_mirror) { -// arg = u.union(arg, u.poly(mirror_points)) -// } -// break -// case 'outline': -// a.unexpected(part, name, expected.concat(['name', 'fillet'])) -// a.assert(outlines[part.name], `Field "${name}.name" does not name an existing outline!`) -// const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) -// arg = u.deepcopy(outlines[part.name]) -// if (fillet) { -// for (const [index, chain] of m.model.findChains(arg).entries()) { -// arg.models[`fillet_${index}`] = m.chain.fillet(chain, fillet) -// } -// } -// break -// default: -// throw new Error(`Field "${name}.type" (${part.type}) does not name a valid outline part type!`) -// } - -// result = op(result, arg) -// } - -// m.model.originate(result) -// m.model.simplify(result) -// outlines[key] = result -// } - -// return outlines -// } \ No newline at end of file diff --git a/src/utils.js b/src/utils.js index cfdb1ea..5a6f2f6 100644 --- a/src/utils.js +++ b/src/utils.js @@ -54,6 +54,20 @@ exports.poly = (arr) => { return res } +exports.bbox = (arr) => { + let minx = Infinity + let miny = Infinity + let maxx = -Infinity + let maxy = -Infinity + for (const p of arr) { + minx = Math.min(minx, p[0]) + miny = Math.min(miny, p[1]) + maxx = Math.max(maxx, p[0]) + maxy = Math.max(maxy, p[1]) + } + return {low: [minx, miny], high: [maxx, maxy]} +} + const farPoint = [1234.1234, 2143.56789] exports.union = exports.add = (a, b) => { From 4844a044dfc941d6fe1f9e284f4914fac58496fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Tue, 11 Jan 2022 22:40:09 +0100 Subject: [PATCH 015/120] Outlines rewrite theoretically done --- src/outlines.js | 54 ++++++++++++++++++++++++++++--------------------- src/point.js | 4 ++++ src/utils.js | 2 +- 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/outlines.js b/src/outlines.js index 535837c..f27120f 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -7,7 +7,7 @@ const prep = require('./prepare') const anchor = require('./anchor').parse const filter = require('./filter').parse -const binding = (base, point, units, origin=[0, 0]) => { +const binding = (base, bbox, point, units) => { let bind = a.trbl(point.meta.bind || 0, `${point.meta.name}.bind`)(units) // if it's a mirrored key, we swap the left and right bind values @@ -15,14 +15,10 @@ const binding = (base, point, units, origin=[0, 0]) => { bind = [bind[0], bind[3], bind[2], bind[1]] } - const bbox = m.measure.modelExtents(base) - - // TODO transition to bbox + origin computation - - const bt = h/2 + Math.max(bind[0], 0) - const br = w/2 + Math.max(bind[1], 0) - const bd = -h/2 - Math.max(bind[2], 0) - const bl = -w/2 - Math.max(bind[3], 0) + const bt = Math.max(bbox.high[1], 0) + Math.max(bind[0], 0) + const br = Math.max(bbox.high[0], 0) + Math.max(bind[1], 0) + const bd = Math.min(bbox.low[1], 0) - Math.max(bind[2], 0) + const bl = Math.min(bbox.low[0], 0) - Math.max(bind[3], 0) if (bind[0] || bind[1]) base = u.union(base, u.rect(br, bt)) if (bind[1] || bind[2]) base = u.union(base, u.rect(br, -bd, [0, bd])) @@ -69,8 +65,11 @@ const rectangle = (config, name, points, outlines, units) => { ]) } if (corner > 0) rect = m.model.outline(rect, corner, 0) - rect = m.model.moveRelative(res, [corner + bevel, corner + bevel]) - if (bound) rect = binding(rect, w, h, point, rec_units) + rect = m.model.moveRelative(res, [-cw/2, -ch/2]) + if (bound) { + const bbox = {high: [w/2, h/2], low: [-w/2, -h/2]} + rect = binding(rect, bbox, point, rec_units) + } rect = point.position(rect) return rect @@ -89,7 +88,10 @@ const circle = (config, name, points, outlines, units) => { // return shape function return (point, bound) => { let circle = u.circle([0, 0], radius) - if (bound) circle = binding(circle, radius, radius, point, circ_units) + if (bound) { + const bbox = {high: [radius, radius], low: [-radius, -radius]} + circle = binding(circle, bbox, point, circ_units) + } circle = point.position(circle) return circle } @@ -112,8 +114,10 @@ const polygon = (config, name, points, outlines, units) => { parsed_points.push(last_anchor.p) } let poly = u.poly(parsed_points) - const bbox = u.bbox(parsed_points) - if (bound) poly = binding(poly, bbox.high[0] - bbox.low[0], bbox.high[1] - bbox.low[1], point, units) + if (bound) { + const bbox = u.bbox(parsed_points) + poly = binding(poly, bbox, point, units) + } poly = point.position(poly) return poly } @@ -126,12 +130,13 @@ const outline = (config, name, points, outlines, units) => { a.assert(outlines[config.name], `Field "${name}.name" does not name an existing outline!`) const fillet = a.sane(config.fillet || 0, `${name}.fillet`, 'number')(units) const expand = a.sane(config.expand || 0, `${name}.expand`, 'number')(units) - const origin = a.xy(config.origin, `${name}.origin`)(units) + const joints = a.in(a.sane(config.joints || 0, `${name}.joints`, 'number')(units), `${name}.joints`, [0, 1, 2]) + const origin = anchor(config.origin, `${name}.origin`, points)(units) // return shape function return (point, bound) => { let o = u.deepcopy(outlines[config.name]) - o = m.model.moveRelative(o, [-origin[0], -origin[1]]) + o = origin.unposition(o) if (fillet) { for (const [index, chain] of m.model.findChains(o).entries()) { @@ -139,12 +144,14 @@ const outline = (config, name, points, outlines, units) => { } } - if (extend) { - // TODO + if (expand) { + o = m.model.outline(o, Math.abs(expand), joints, (expand < 0), {farPoint: u.farPoint}) } - const bbox = m.measure.modelExtents(o) - if (bound) o = binding(o, bbox.high[0] - bbox.low[0], bbox.high[1] - bbox.low[1], point, units) + if (bound) { + const bbox = m.measure.modelExtents(o) + o = binding(o, bbox, point, units) + } o = point.position(o) return o @@ -188,18 +195,19 @@ exports.parse = (config = {}, points = {}, units = {}) => { // process keys that are common to all part declarations const operation = u[a.in(part.operation || 'add', `${name}.operation`, ['add', 'subtract', 'intersect', 'stack'])] - const bound = a.sane(part.bound === undefined ? true : part.bound, `${name}.bound`, 'boolean')() - const mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() const what = a.in(part.what || 'outline', `${name}.what`, ['rectangle', 'circle', 'polygon', 'outline']) + const bound_by_default = ['rectangle'] + const bound = part.bound === undefined ? bound_by_default.includes(what) : !!part.bound + const mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() // `where` is delayed until we have all, potentially what-dependent units // default where is the single default anchor (at [0,0]) const where = units => filter(part.where || {}, `${name}.where`, points, units, mirror) // these keys are then removed, so ops can check their own unexpected keys without interference delete part.operation + delete part.what delete part.bound delete part.mirror - delete part.what delete part.where // a prototype "shape" maker (and its units) are computed diff --git a/src/point.js b/src/point.js index f42ab68..b86d48d 100644 --- a/src/point.js +++ b/src/point.js @@ -58,6 +58,10 @@ module.exports = class Point { return m.model.moveRelative(m.model.rotate(model, this.r), this.p) } + unposition(model) { + return m.model.rotate(m.model.moveRelative(model, [-this.x, -this.y]), -this.r) + } + rect(size=14) { let rect = u.rect(size, size, [-size/2, -size/2]) return this.position(rect) diff --git a/src/utils.js b/src/utils.js index 5a6f2f6..9fcb4cb 100644 --- a/src/utils.js +++ b/src/utils.js @@ -68,7 +68,7 @@ exports.bbox = (arr) => { return {low: [minx, miny], high: [maxx, maxy]} } -const farPoint = [1234.1234, 2143.56789] +const farPoint = exports.farPoint = [1234.1234, 2143.56789] exports.union = exports.add = (a, b) => { return m.model.combine(a, b, false, true, false, true, { From d6f83232a86ad0b8958e307d6b927b368348c72b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 16 Jan 2022 20:36:19 +0100 Subject: [PATCH 016/120] Outlines rewrite actually done --- roadmap.md | 1 + src/filter.js | 33 +- src/outlines.js | 47 +- test/cases/cube.yaml | 22 +- test/cli/big/reference/outlines/_export.yaml | 72 ++- test/cli/big/reference/outlines/export.yaml | 72 ++- test/cli/big/reference/points/demo.yaml | 2 +- test/cli/big/reference/points/points.yaml | 10 +- test/cli/big/reference/source/canonical.yaml | 27 +- test/cli/big/reference/source/raw.txt | 16 +- test/fixtures/big.yaml | 16 +- test/fixtures/medium.yaml | 6 +- test/outlines/affect_mirror.yaml | 85 ++- test/outlines/basic.yaml | 23 +- test/outlines/circles.yaml | 41 +- test/outlines/fillet.yaml | 17 +- test/outlines/gluing.yaml | 50 -- .../outlines/gluing___outlines_optout_dxf.dxf | 146 ----- .../gluing___outlines_outline_dxf.dxf | 518 ------------------ test/outlines/polygons.yaml | 47 +- test/outlines/rectangles.yaml | 43 +- test/pcbs/mock_footprints.yaml | 19 +- test/unit/filter.js | 9 +- 23 files changed, 288 insertions(+), 1034 deletions(-) delete mode 100644 test/outlines/gluing.yaml delete mode 100644 test/outlines/gluing___outlines_optout_dxf.dxf delete mode 100644 test/outlines/gluing___outlines_outline_dxf.dxf diff --git a/roadmap.md b/roadmap.md index d56752e..599dff8 100644 --- a/roadmap.md +++ b/roadmap.md @@ -49,6 +49,7 @@ ### Patch +- Check unexpected keys at top level, too - Better error handling for the fillet option? - Implement `glue.extra` - Integration and end2end tests to get coverage to 100% diff --git a/src/filter.js b/src/filter.js index f56723b..2d36df9 100644 --- a/src/filter.js +++ b/src/filter.js @@ -1,9 +1,11 @@ const u = require('./utils') const a = require('./assert') const anchor_lib = require('./anchor') +const Point = require('./point') const anchor = anchor_lib.parse const _true = () => true +const _false = () => false const _and = arr => p => arr.map(e => e(p)).reduce((a, b) => a && b) const _or = arr => p => arr.map(e => e(p)).reduce((a, b) => a || b) @@ -78,20 +80,19 @@ const simple = (exp, name, units) => { const complex = (config, name, units, aggregator=_or) => { - // default is all points - if (config === undefined) { - return _true - } - - // otherwise we branch by type - const type = a.type(config)() + // we branch by type + const type = a.type(config)(units) switch(type) { + + // boolean --> either all or nothing + case 'boolean': + return config ? _true : _false - // base case is a string, meaning a simple/single filter + // string --> base case, meaning a simple/single filter case 'string': return simple(config, name, units) - // arrays are aggregated with alternating and/or conditions + // array --> aggregated simple filters with alternating and/or conditions case 'array': const alternate = aggregator == _and ? _or : _and return aggregator(config.map(elem => complex(elem, name, units, alternate))) @@ -101,12 +102,22 @@ const complex = (config, name, units, aggregator=_or) => { } } +const contains_object = (val) => { + if (a.type(val)() == 'object') return true + if (a.type(val)() == 'array') return val.some(el => contains_object(el)) + return false +} + exports.parse = (config, name, points={}, units={}, include_mirrors=false) => { let result = [] - // if a filter decl is an object, it is an anchor - if (a.type(config)() == 'object') { + // if a filter decl is undefined, it's just the default point at [0, 0] + if (config === undefined) { + result.push(new Point()) + + // if a filter decl is an object, or an array that contains an object at any depth, it is an anchor + } else if (contains_object(config)) { result.push(anchor(config, name, points)(units)) if (include_mirrors) { // this is strict: if the ref of the anchor doesn't have a mirror pair, it will error out diff --git a/src/outlines.js b/src/outlines.js index f27120f..b49288b 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -32,16 +32,16 @@ const rectangle = (config, name, points, outlines, units) => { // prepare params a.unexpected(config, `${name}`, ['size', 'corner', 'bevel']) - const size = a.wh(params.size, `${export_name}.size`)(units) + const size = a.wh(config.size, `${name}.size`)(units) const rec_units = prep.extend({ sx: size[0], sy: size[1] }, units) - const corner = a.sane(params.corner || 0, `${export_name}.corner`, 'number')(rec_units) - const bevel = a.sane(params.bevel || 0, `${export_name}.bevel`, 'number')(rec_units) + const corner = a.sane(config.corner || 0, `${name}.corner`, 'number')(rec_units) + const bevel = a.sane(config.bevel || 0, `${name}.bevel`, 'number')(rec_units) - // return shape function - return (point, bound) => { + // return shape function and its units + return [(point, bound) => { const error = (dim, val) => `Rectangle for "${name}" isn't ${dim} enough for its corner and bevel (${val} - 2 * ${corner} - 2 * ${bevel} <= 0)!` const [w, h] = size @@ -65,7 +65,7 @@ const rectangle = (config, name, points, outlines, units) => { ]) } if (corner > 0) rect = m.model.outline(rect, corner, 0) - rect = m.model.moveRelative(res, [-cw/2, -ch/2]) + rect = m.model.moveRelative(rect, [-cw/2, -ch/2]) if (bound) { const bbox = {high: [w/2, h/2], low: [-w/2, -h/2]} rect = binding(rect, bbox, point, rec_units) @@ -73,7 +73,7 @@ const rectangle = (config, name, points, outlines, units) => { rect = point.position(rect) return rect - } + }, rec_units] } const circle = (config, name, points, outlines, units) => { @@ -85,8 +85,8 @@ const circle = (config, name, points, outlines, units) => { r: radius }, units) - // return shape function - return (point, bound) => { + // return shape function and its units + return [(point, bound) => { let circle = u.circle([0, 0], radius) if (bound) { const bbox = {high: [radius, radius], low: [-radius, -radius]} @@ -94,7 +94,7 @@ const circle = (config, name, points, outlines, units) => { } circle = point.position(circle) return circle - } + }, circ_units] } const polygon = (config, name, points, outlines, units) => { @@ -103,10 +103,12 @@ const polygon = (config, name, points, outlines, units) => { a.unexpected(config, `${name}`, ['points']) const poly_points = a.sane(config.points, `${name}.points`, 'array')() - // return shape function - return (point, bound) => { + // return shape function and its units + return [(point, bound) => { const parsed_points = [] - let last_anchor = new Point() + // the point starts at [0, 0] as it will be positioned later + // but we keep the metadata for potential mirroring purposes + let last_anchor = new Point(0, 0, 0, point.meta) let poly_index = -1 for (const poly_point of poly_points) { const poly_name = `${name}.points[${++poly_index}]` @@ -120,7 +122,7 @@ const polygon = (config, name, points, outlines, units) => { } poly = point.position(poly) return poly - } + }, units] } const outline = (config, name, points, outlines, units) => { @@ -131,10 +133,10 @@ const outline = (config, name, points, outlines, units) => { const fillet = a.sane(config.fillet || 0, `${name}.fillet`, 'number')(units) const expand = a.sane(config.expand || 0, `${name}.expand`, 'number')(units) const joints = a.in(a.sane(config.joints || 0, `${name}.joints`, 'number')(units), `${name}.joints`, [0, 1, 2]) - const origin = anchor(config.origin, `${name}.origin`, points)(units) + const origin = anchor(config.origin || {}, `${name}.origin`, points)(units) - // return shape function - return (point, bound) => { + // return shape function and its units + return [(point, bound) => { let o = u.deepcopy(outlines[config.name]) o = origin.unposition(o) @@ -155,7 +157,7 @@ const outline = (config, name, points, outlines, units) => { o = point.position(o) return o - } + }, units] } const whats = { @@ -182,11 +184,11 @@ exports.parse = (config = {}, points = {}, units = {}) => { if (a.type(parts)() == 'array') { parts = {...parts} } - parts = a.sane(parts, `outlines.${key}`, 'object')() + parts = a.sane(parts, `outlines.${outline_name}`, 'object')() for (let [part_name, part] of Object.entries(parts)) { - const name = `outlines.${key}.${part_name}` + const name = `outlines.${outline_name}.${part_name}` // string part-shortcuts are expanded first if (a.type(part)() == 'string') { @@ -200,8 +202,9 @@ exports.parse = (config = {}, points = {}, units = {}) => { const bound = part.bound === undefined ? bound_by_default.includes(what) : !!part.bound const mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() // `where` is delayed until we have all, potentially what-dependent units - // default where is the single default anchor (at [0,0]) - const where = units => filter(part.where || {}, `${name}.where`, points, units, mirror) + // default where is [0, 0], as per filter parsing + const original_where = part.where // need to save, so the delete's don't get rid of it below + const where = units => filter(original_where, `${name}.where`, points, units, mirror) // these keys are then removed, so ops can check their own unexpected keys without interference delete part.operation diff --git a/test/cases/cube.yaml b/test/cases/cube.yaml index ff8aaa5..5b3993f 100644 --- a/test/cases/cube.yaml +++ b/test/cases/cube.yaml @@ -1,16 +1,10 @@ -points: - zones: - arst: - columns: - c1: - rows: - r1: +points.zones.matrix: {} outlines: - exports: - square: - - type: rectangle - size: [5, 5] + square: + - what: rectangle + where: true + size: [5, 5] cases: - cube: - - name: square - extrude: 5 \ No newline at end of file + cube: + - name: square + extrude: 5 \ No newline at end of file diff --git a/test/cli/big/reference/outlines/_export.yaml b/test/cli/big/reference/outlines/_export.yaml index b901b68..de83955 100644 --- a/test/cli/big/reference/outlines/_export.yaml +++ b/test/cli/big/reference/outlines/_export.yaml @@ -7,49 +7,39 @@ models: - 0 - 0 b: - models: - a: - models: {} + paths: + ShapeLine1: + type: line origin: - - 0 - - 0 - b: - paths: - ShapeLine1: - type: line - origin: - - -9 - - -9 - end: - - 9 - - -9 - ShapeLine2: - type: line - origin: - - 9 - - -9 - end: - - 9 - - 9 - ShapeLine3: - type: line - origin: - - 9 - - 9 - end: - - -9 - - 9 - ShapeLine4: - type: line - origin: - - -9 - - 9 - end: - - -9 - - -9 + - -9 + - -9 + end: + - 9 + - -9 + ShapeLine2: + type: line origin: - - 0 - - 0 + - 9 + - -9 + end: + - 9 + - 9 + ShapeLine3: + type: line + origin: + - 9 + - 9 + end: + - -9 + - 9 + ShapeLine4: + type: line + origin: + - -9 + - 9 + end: + - -9 + - -9 origin: - 0 - 0 diff --git a/test/cli/big/reference/outlines/export.yaml b/test/cli/big/reference/outlines/export.yaml index b901b68..de83955 100644 --- a/test/cli/big/reference/outlines/export.yaml +++ b/test/cli/big/reference/outlines/export.yaml @@ -7,49 +7,39 @@ models: - 0 - 0 b: - models: - a: - models: {} + paths: + ShapeLine1: + type: line origin: - - 0 - - 0 - b: - paths: - ShapeLine1: - type: line - origin: - - -9 - - -9 - end: - - 9 - - -9 - ShapeLine2: - type: line - origin: - - 9 - - -9 - end: - - 9 - - 9 - ShapeLine3: - type: line - origin: - - 9 - - 9 - end: - - -9 - - 9 - ShapeLine4: - type: line - origin: - - -9 - - 9 - end: - - -9 - - -9 + - -9 + - -9 + end: + - 9 + - -9 + ShapeLine2: + type: line origin: - - 0 - - 0 + - 9 + - -9 + end: + - 9 + - 9 + ShapeLine3: + type: line + origin: + - 9 + - 9 + end: + - -9 + - 9 + ShapeLine4: + type: line + origin: + - -9 + - 9 + end: + - -9 + - -9 origin: - 0 - 0 diff --git a/test/cli/big/reference/points/demo.yaml b/test/cli/big/reference/points/demo.yaml index 658aacd..03402f6 100644 --- a/test/cli/big/reference/points/demo.yaml +++ b/test/cli/big/reference/points/demo.yaml @@ -1,7 +1,7 @@ models: export: models: - matrix_col_row: + matrix: paths: top: type: line diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index 2e296a1..bb15b15 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -1,4 +1,4 @@ -matrix_col_row: +matrix: x: 0 'y': 0 r: 0 @@ -19,10 +19,10 @@ matrix_col_row: padding: 19 skip: false asym: both - name: matrix_col_row + name: matrix col: rows: {} key: {} - name: col - row: row - colrow: col_row + name: default + row: default + colrow: default_default diff --git a/test/cli/big/reference/source/canonical.yaml b/test/cli/big/reference/source/canonical.yaml index bcd5013..41858d8 100644 --- a/test/cli/big/reference/source/canonical.yaml +++ b/test/cli/big/reference/source/canonical.yaml @@ -2,23 +2,18 @@ units: a: 28 + u points: zones: - matrix: - columns: - col: {} - rows: - row: {} + matrix: null outlines: - exports: - export: - - - type: keys - side: left - size: 18 - _export: - - - type: keys - side: left - size: 18 + export: + - + what: rectangle + where: true + size: 18 + _export: + - + what: rectangle + where: true + size: 18 cases: export: - diff --git a/test/cli/big/reference/source/raw.txt b/test/cli/big/reference/source/raw.txt index c9f82ec..9d6d2e7 100644 --- a/test/cli/big/reference/source/raw.txt +++ b/test/cli/big/reference/source/raw.txt @@ -1,23 +1,21 @@ units: a: 28 + u points.zones.matrix: - columns.col: {} - rows.row: {} -outlines.exports: +outlines: export: - - type: 'keys' - side: 'left' + - what: rectangle + where: true size: 18 _export: - - type: 'keys' - side: 'left' + - what: rectangle + where: true size: 18 cases: export: - - name: 'export' + - name: export extrude: 1 _export: - - name: 'export' + - name: export extrude: 1 pcbs: export: {} diff --git a/test/fixtures/big.yaml b/test/fixtures/big.yaml index c9f82ec..9d6d2e7 100644 --- a/test/fixtures/big.yaml +++ b/test/fixtures/big.yaml @@ -1,23 +1,21 @@ units: a: 28 + u points.zones.matrix: - columns.col: {} - rows.row: {} -outlines.exports: +outlines: export: - - type: 'keys' - side: 'left' + - what: rectangle + where: true size: 18 _export: - - type: 'keys' - side: 'left' + - what: rectangle + where: true size: 18 cases: export: - - name: 'export' + - name: export extrude: 1 _export: - - name: 'export' + - name: export extrude: 1 pcbs: export: {} diff --git a/test/fixtures/medium.yaml b/test/fixtures/medium.yaml index a48969c..18b6464 100644 --- a/test/fixtures/medium.yaml +++ b/test/fixtures/medium.yaml @@ -1,9 +1,9 @@ points.zones.matrix: columns.col: {} -outlines.exports: +outlines: export: - - type: 'keys' - side: 'left' + - what: rectangle + where: true size: 18 pcbs: export: {} diff --git a/test/outlines/affect_mirror.yaml b/test/outlines/affect_mirror.yaml index 98e9791..d96fc21 100644 --- a/test/outlines/affect_mirror.yaml +++ b/test/outlines/affect_mirror.yaml @@ -10,46 +10,45 @@ points: ref: matrix_only_top distance: 30 outlines: - exports: - test: - keys: - type: keys - side: both - size: 14 - bound: false - rb: - type: rectangle - anchor: - - ref: mirror_matrix_only_bottom - # we do NOT specify `affect: xyr` here - - shift: [-3,-3] - orient: 30 - size: [6,6] - operation: stack - rt: - type: rectangle - anchor: - - ref: mirror_matrix_only_top - affect: xyr - - shift: [-3,-3] - orient: 30 - size: [6,6] - operation: stack - lb: - type: rectangle - anchor: - - ref: matrix_only_bottom - # again, no `affect: xyr` - - shift: [-3,-3] - orient: 30 - size: [6,6] - operation: stack - lt: - type: rectangle - anchor: - - ref: matrix_only_top - affect: xyr - - shift: [-3,-3] - orient: 30 - size: [6,6] - operation: stack \ No newline at end of file + test: + keys: + what: rectangle + where: true + size: 14 + bound: false + rb: + what: rectangle + where: + - ref: mirror_matrix_only_bottom + # we do NOT specify `affect: xyr` here + - shift: [-3,-3] + orient: 30 + size: [6,6] + operation: stack + rt: + what: rectangle + where: + - ref: mirror_matrix_only_top + affect: xyr + - shift: [-3,-3] + orient: 30 + size: [6,6] + operation: stack + lb: + what: rectangle + where: + - ref: matrix_only_bottom + # again, no `affect: xyr` + - shift: [-3,-3] + orient: 30 + size: [6,6] + operation: stack + lt: + what: rectangle + where: + - ref: matrix_only_top + affect: xyr + - shift: [-3,-3] + orient: 30 + size: [6,6] + operation: stack \ No newline at end of file diff --git a/test/outlines/basic.yaml b/test/outlines/basic.yaml index 73c503b..8802884 100644 --- a/test/outlines/basic.yaml +++ b/test/outlines/basic.yaml @@ -10,15 +10,14 @@ points: key: bind: [0, 0, 0, 0] outlines: - exports: - outline: - main: - type: keys - side: left - size: 20 - min: - type: keys - side: left - bound: false - size: 14 - operation: subtract \ No newline at end of file + outline: + main: + what: rectangle + where: true + size: 20 + min: + what: rectangle + where: true + bound: false + size: 14 + operation: subtract \ No newline at end of file diff --git a/test/outlines/circles.yaml b/test/outlines/circles.yaml index 3daca88..aa7af33 100644 --- a/test/outlines/circles.yaml +++ b/test/outlines/circles.yaml @@ -3,24 +3,23 @@ points: matrix: {} mirror: 20 outlines: - exports: - outline: - main: - type: keys - side: both - size: 20 - bound: false - middle_circle: - type: circle - anchor: - ref: - - matrix - - mirror_matrix - radius: 15 - outside_circles: - type: circle - anchor: - ref: matrix - shift: [-10, 10] - radius: 5 - mirror: true \ No newline at end of file + outline: + main: + what: rectangle + where: true + size: 20 + bound: false + middle_circle: + what: circle + where: + ref: + - matrix + - mirror_matrix + radius: 15 + outside_circles: + what: circle + where: + ref: matrix + shift: [-10, 10] + radius: 5 + mirror: true \ No newline at end of file diff --git a/test/outlines/fillet.yaml b/test/outlines/fillet.yaml index 3b5e05f..a34ed68 100644 --- a/test/outlines/fillet.yaml +++ b/test/outlines/fillet.yaml @@ -11,12 +11,11 @@ points: bottom: top: outlines: - exports: - base: - - type: keys - side: left - size: cy - fillet: - - type: outline - name: base - fillet: 2 \ No newline at end of file + base: + - what: rectangle + where: true + size: cy + fillet: + - what: outline + name: base + fillet: 2 \ No newline at end of file diff --git a/test/outlines/gluing.yaml b/test/outlines/gluing.yaml deleted file mode 100644 index 60335d4..0000000 --- a/test/outlines/gluing.yaml +++ /dev/null @@ -1,50 +0,0 @@ -points: - zones: - matrix: - columns: - left.key.bind: [,10,,] - right.key.bind: [,,,10] - rows: - bottom.key.bind: [10,,,] - top.key.bind: [,,10,] - key: - bind: [0, 0, 0, 0] - rotate: -20 - mirror: - ref: matrix_right_top - distance: 30 -outlines: - glue: - default: - top: - left: - ref: matrix_right_top - shift: [,sy / 2] - right: - ref: mirror_matrix_right_top - shift: [,sy / 2] - bottom: - left: - ref: matrix_right_bottom - shift: [,sy / -2] - right: - ref: mirror_matrix_right_bottom - shift: [,sy / -2] - exports: - outline: - main: - type: keys - side: both - size: 20 - min: - type: keys - side: both - bound: false - size: 14 - operation: subtract - optout: - main: - type: keys - side: both - size: 20 - glue: false \ No newline at end of file diff --git a/test/outlines/gluing___outlines_optout_dxf.dxf b/test/outlines/gluing___outlines_optout_dxf.dxf deleted file mode 100644 index 95ab1d7..0000000 --- a/test/outlines/gluing___outlines_optout_dxf.dxf +++ /dev/null @@ -1,146 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --12.8171276 -20 --5.9767248 -11 -23.8308846 -21 --19.3155103 -0 -LINE -8 -0 -10 --12.8171276 -20 --5.9767248 -11 -0.5216579 -21 -30.6712874 -0 -LINE -8 -0 -10 -0.5216579 -20 -30.6712874 -11 -37.1696701 -21 -17.3325019 -0 -LINE -8 -0 -10 -23.8308846 -20 --19.3155103 -11 -37.1696701 -21 -17.3325019 -0 -LINE -8 -0 -10 -54.8742004 -20 --19.3155103 -11 -91.5222126 -21 --5.9767248 -0 -LINE -8 -0 -10 -78.1834271 -20 -30.6712874 -11 -91.5222126 -21 --5.9767248 -0 -LINE -8 -0 -10 -41.5354149 -20 -17.3325019 -11 -78.1834271 -21 -30.6712874 -0 -LINE -8 -0 -10 -41.5354149 -20 -17.3325019 -11 -54.8742004 -21 --19.3155103 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/gluing___outlines_outline_dxf.dxf b/test/outlines/gluing___outlines_outline_dxf.dxf deleted file mode 100644 index 51c042d..0000000 --- a/test/outlines/gluing___outlines_outline_dxf.dxf +++ /dev/null @@ -1,518 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --12.8171276 -20 --5.9767248 -11 -39.3525425 -21 --24.9649308 -0 -LINE -8 -0 -10 --12.8171276 -20 --5.9767248 -11 -0.5216579 -21 -30.6712874 -0 -LINE -8 -0 -10 -0.5216579 -20 -30.6712874 -11 -39.3525425 -21 -16.5380017 -0 -LINE -8 -0 -10 -41.5354149 -20 -17.3325019 -11 -78.1834271 -21 -30.6712874 -0 -LINE -8 -0 -10 -41.5354149 -20 -17.3325019 -11 -39.3525425 -21 -16.5380017 -0 -LINE -8 -0 -10 -39.3525425 -20 --24.9649308 -11 -91.5222126 -21 --5.9767248 -0 -LINE -8 -0 -10 -78.1834271 -20 -30.6712874 -11 -91.5222126 -21 --5.9767248 -0 -LINE -8 -0 -10 --8.9719893 -20 --4.1837073 -11 -4.1837073 -21 --8.9719893 -0 -LINE -8 -0 -10 -4.1837073 -20 --8.9719893 -11 -8.9719893 -21 -4.1837073 -0 -LINE -8 -0 -10 -8.9719893 -20 -4.1837073 -11 --4.1837073 -21 -8.9719893 -0 -LINE -8 -0 -10 --4.1837073 -20 -8.9719893 -11 --8.9719893 -21 --4.1837073 -0 -LINE -8 -0 -10 --2.4736066 -20 -13.6704525 -11 -10.68209 -21 -8.8821705 -0 -LINE -8 -0 -10 -10.68209 -20 -8.8821705 -11 -15.470372 -21 -22.0378671 -0 -LINE -8 -0 -10 -15.470372 -20 -22.0378671 -11 -2.3146754 -21 -26.8261491 -0 -LINE -8 -0 -10 -2.3146754 -20 -26.8261491 -11 --2.4736066 -21 -13.6704525 -0 -LINE -8 -0 -10 -8.8821705 -20 --10.68209 -11 -22.0378671 -21 --15.470372 -0 -LINE -8 -0 -10 -22.0378671 -20 --15.470372 -11 -26.8261491 -21 --2.3146754 -0 -LINE -8 -0 -10 -26.8261491 -20 --2.3146754 -11 -13.6704525 -21 -2.4736066 -0 -LINE -8 -0 -10 -13.6704525 -20 -2.4736066 -11 -8.8821705 -21 --10.68209 -0 -LINE -8 -0 -10 -15.3805532 -20 -7.1720698 -11 -28.5362498 -21 -2.3837878 -0 -LINE -8 -0 -10 -28.5362498 -20 -2.3837878 -11 -33.3245318 -21 -15.5394844 -0 -LINE -8 -0 -10 -33.3245318 -20 -15.5394844 -11 -20.1688352 -21 -20.3277664 -0 -LINE -8 -0 -10 -20.1688352 -20 -20.3277664 -11 -15.3805532 -21 -7.1720698 -0 -LINE -8 -0 -10 -74.5213777 -20 --8.9719893 -11 -87.6770743 -21 --4.1837073 -0 -LINE -8 -0 -10 -87.6770743 -20 --4.1837073 -11 -82.8887923 -21 -8.9719893 -0 -LINE -8 -0 -10 -82.8887923 -20 -8.9719893 -11 -69.7330957 -21 -4.1837073 -0 -LINE -8 -0 -10 -69.7330957 -20 -4.1837073 -11 -74.5213777 -21 --8.9719893 -0 -LINE -8 -0 -10 -68.022995 -20 -8.8821705 -11 -81.1786916 -21 -13.6704525 -0 -LINE -8 -0 -10 -81.1786916 -20 -13.6704525 -11 -76.3904096 -21 -26.8261491 -0 -LINE -8 -0 -10 -76.3904096 -20 -26.8261491 -11 -63.234713 -21 -22.0378671 -0 -LINE -8 -0 -10 -63.234713 -20 -22.0378671 -11 -68.022995 -21 -8.8821705 -0 -LINE -8 -0 -10 -56.6672179 -20 --15.470372 -11 -69.8229145 -21 --10.68209 -0 -LINE -8 -0 -10 -69.8229145 -20 --10.68209 -11 -65.0346325 -21 -2.4736066 -0 -LINE -8 -0 -10 -65.0346325 -20 -2.4736066 -11 -51.8789359 -21 --2.3146754 -0 -LINE -8 -0 -10 -51.8789359 -20 --2.3146754 -11 -56.6672179 -21 --15.470372 -0 -LINE -8 -0 -10 -50.1688352 -20 -2.3837878 -11 -63.3245318 -21 -7.1720698 -0 -LINE -8 -0 -10 -63.3245318 -20 -7.1720698 -11 -58.5362498 -21 -20.3277664 -0 -LINE -8 -0 -10 -58.5362498 -20 -20.3277664 -11 -45.3805532 -21 -15.5394844 -0 -LINE -8 -0 -10 -45.3805532 -20 -15.5394844 -11 -50.1688352 -21 -2.3837878 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/polygons.yaml b/test/outlines/polygons.yaml index 3489d56..cc094b8 100644 --- a/test/outlines/polygons.yaml +++ b/test/outlines/polygons.yaml @@ -3,27 +3,26 @@ points: matrix: {} mirror: 20 outlines: - exports: - outline: - main: - type: keys - side: both - size: 20 - bound: false - middle_poly: - type: polygon - points: - - ref: - - matrix - - mirror_matrix - shift: [0, 20] - - shift: [20, -40] - - shift: [-40, 0] - outside_polys: - type: polygon - points: - - ref: matrix - shift: [-10, 15] - - shift: [5, -10] - - shift: [-10, 0] - mirror: true \ No newline at end of file + outline: + main: + what: rectangle + where: true + size: 20 + bound: false + middle_poly: + what: polygon + where.ref: + - matrix + - mirror_matrix + points: + - shift: [0, 20] + - shift: [20, -40] + - shift: [-40, 0] + outside_polys: + what: polygon + where.ref: matrix + points: + - shift: [-10, 15] + - shift: [5, -10] + - shift: [-10, 0] + mirror: true \ No newline at end of file diff --git a/test/outlines/rectangles.yaml b/test/outlines/rectangles.yaml index cec172d..86e2e95 100644 --- a/test/outlines/rectangles.yaml +++ b/test/outlines/rectangles.yaml @@ -3,25 +3,24 @@ points: matrix: {} mirror: 20 outlines: - exports: - outline: - main: - type: keys - side: both - size: 20 - bound: false - middle_rect: - type: rectangle - anchor: - ref: - - matrix - - mirror_matrix - shift: [0, sy/2] - size: [20, 40] - outside_rects: - type: rectangle - anchor: - ref: matrix - shift: [-10, 10] - size: 10 - mirror: true \ No newline at end of file + outline: + main: + what: rectangle + where: true + size: 20 + bound: false + middle_rect: + what: rectangle + where: + ref: + - matrix + - mirror_matrix + shift: [0, sy/2] + size: [20, 40] + outside_rects: + what: rectangle + where: + ref: matrix + shift: [-10, 10] + size: 10 + mirror: true \ No newline at end of file diff --git a/test/pcbs/mock_footprints.yaml b/test/pcbs/mock_footprints.yaml index 9611264..03e07e9 100644 --- a/test/pcbs/mock_footprints.yaml +++ b/test/pcbs/mock_footprints.yaml @@ -1,16 +1,9 @@ -points: - zones: - matrix: - columns: - one: - rows: - only: +points.zones.matrix: outlines: - exports: - edge: - - type: keys - side: left - size: [u, u] + edge: + - what: rectangle + where: true + size: u pcbs: main: outlines: @@ -33,5 +26,5 @@ pcbs: type: anchor_test anchors: end: - ref: matrix_one_only + ref: matrix shift: [10, 10] \ No newline at end of file diff --git a/test/unit/filter.js b/test/unit/filter.js index bdf5775..5481949 100644 --- a/test/unit/filter.js +++ b/test/unit/filter.js @@ -13,10 +13,11 @@ describe('Filter', function() { const names = points => points.map(p => p.meta.name) it('similar', function() { - // no points filter to no points - filter(undefined, '', undefined).should.deep.equal([]) - // and undefined config doesn't filter anything - filter(undefined, '', points).should.deep.equal(Object.values(points)) + // an undefined config leads to a default point + filter(undefined, '', points).should.deep.equal([new Point()]) + // true shouldn't filter anything, while false should filter everything + filter(true, '', points).should.deep.equal(Object.values(points)) + filter(false, '', points).should.deep.equal([]) // objects just propagate to anchor (and then wrap in array for consistency) filter({}, '', points).should.deep.equal([anchor({}, '', points)()]) // simple name string From 28d076ea387557c458a736956a9760791cf9608a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 16 Jan 2022 20:36:39 +0100 Subject: [PATCH 017/120] Remove accidentally added folder --- playground/unoverride.yaml | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 playground/unoverride.yaml diff --git a/playground/unoverride.yaml b/playground/unoverride.yaml deleted file mode 100644 index de73d71..0000000 --- a/playground/unoverride.yaml +++ /dev/null @@ -1,13 +0,0 @@ -points.zones: - preprocessor: - anchor: - shift: [u, 0] - rows: - row1: {} - row2: {} - columns: - col1: {} - col2: - rows: - row1: {} - row2: $unset \ No newline at end of file From 7f5e5e754428c9156f982caf81ebc13cef5365e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Tue, 18 Jan 2022 22:07:34 +0100 Subject: [PATCH 018/120] Roadmap update --- roadmap.md | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/roadmap.md b/roadmap.md index 599dff8..b024237 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,21 +6,26 @@ ### Major -- Generalize what shapes to be repeated when outlining `keys` +- Restructure pcb point/footprint filtering + - Use the same `what`/`where` infrastructure as outlines + - Collapse params/nets/anchors into a single hierarchy from the user's POV + - Add per-footprint mirror support + - Add some way for footprints to be able to "resist" the mirroring-related special treatment of negative X shift, rotation, etc. +- Add auto-bind +- Recursive-ize anchors + - This will potentially cause `ref` to be ambiguous, so maybe introduce a separate `refs` plural? + - Plus add `orient`/`rotate` **towards** other anchors (again, recursively) - Merge, generalize, and uniform-ize footprints - Template for creating them, built-in variables they can use, documentation, external links, etc. - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. - - https://en.wikipedia.org/wiki/Reference_designator#Designators -- Kill glue -- Revamp binding?? + - Rename class to designator in this context (https://en.wikipedia.org/wiki/Reference_designator#Designators) ### Minor - 3D orient for cases - Post-process anchor for global (post-mirror!) orient/shift/rotate for everything -- Allow shift/rotate for outlines (via `anchor_def`, probably) -- More generic anchors or distances? - - Intersect support for anchor affects clauses, which (combined with the math formulas and possible trigonometric functions) should allow for every use case we've discussed so far +- Even more extreme anchor stuff + - Checkpoints, intersects, distances, weighted combinations? - Allow both object (as well as arrays) in multiple anchor refs - SVG input (for individual outlines, or even combinations parsed by line color, etc.) - And once that's done, possibly even STL or other input for cases or pcb renders @@ -28,33 +33,25 @@ - Maybe a partial markdown preprocess to support bold and italic? - Look into gr_curve to possibly add beziers to the kicad conversion - Support curves (arcs as well as Béziers) in polygons -- Support specifying keys/labels for the pcb section (not just blindly assuming all) - Add snappable line footprint -- Layer-aware export from Maker.JS, so we can debug in the webui more easily +- Figure out a manual, but still reasonably comfortable routing method directly from the config - Add filleting syntax with `@`? - Eeschema support for pcbs -- Outline expand and shrink access from makerjs -- Resurrect and/or add wider tagging support - - Also add subtractive tagging filters (exclude) - - Also expand this to footprints (so, which footprints get applied to which pcb) - - Or, at least, allow skipping per-key footprints - Generate ZMK shield from config - Export **to** KLE? -- Per-footprint mirror support -- A flag for footprints to be able to "resist" the mirroring-related special treatment of negative X shift, rotation, etc. -- Include 3D models for kicad output for visualization +- Include 3D models paths in kicad output for visualization + - Also, provide 3D models for built-in footprints - Look into kicad 5 vs. 6 output format - Update json schema and add syntax highlight to editors +- Support different netclasses ### Patch - Check unexpected keys at top level, too - Better error handling for the fillet option? -- Implement `glue.extra` - Integration and end2end tests to get coverage to 100% -- Fix the intersection of parallel lines when gluing -- Add custom fillet implementation that considers line-line connections only +- Add custom fillet implementation that considers line-line connections only? @@ -65,6 +62,8 @@ - Change over to Cache's live preview implementation - Add missing KLE functionality - Create browserified version of semver lib + - Or at least a shim with a console warning +- Visualizing multiple outlines at once, with different colors ### Minor @@ -72,12 +71,13 @@ - Attempt to auto-compile (if inactive for n secs, or whatever) - Support saving to gists - Add kicad_pcb visualization as well +- Get dropdown examples from a separate repo - Expand the config dropdown with opensource stuff: corne, lily, ergodox, atreus... ### Patch -- Streamlining (and documenting) an update pipeline -- Puppeteer tests +- Streamline (and document) an update pipeline +- Add puppeteer tests @@ -87,18 +87,18 @@ - With a progression of increasingly complex steps - And lots of illustrations! - Complete reference - - some known deficiencies: + - Some known deficiencies: - Units separated to their own block at the front - Key-level `width` and `height` are supported during visualization - This key-level example should probably be added from discord: https://discord.com/channels/714176584269168732/759825860617437204/773104093546676244 - Change outline fields to have their full anchor support documented - Mention the ability to opt out of gluing! - Key-level defaults are based around u's, not 19! - - change over to built, per-chapter docs, like how Cache has them - Contribution guidelines - - including test commands (npm test, npm run coverage, --what switch, --dump switch) + - Include test commands (npm test, npm run coverage, --what switch, --dump switch) - Changelog, Roadmap - A public catalog of real-life ergogen configs + - Probably could be the same as the separate examples repo for the dropdown From 6225013828c4f253dfec51878fef0b576978e69e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Thu, 20 Jan 2022 11:58:56 +0100 Subject: [PATCH 019/120] Indicate dev version in package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 93c0d31..9f404f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "3.1.2", + "version": "4.0.0-develop", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", From 2b98b502d6719795ba88a9d7ec2ae3f875641a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 22 Jan 2022 23:13:18 +0100 Subject: [PATCH 020/120] Support string templating for key-level attributes --- src/points.js | 20 +- src/utils.js | 14 ++ test/cli/big/reference/points/points.yaml | 4 +- test/cli/minimal/reference/points/points.yaml | 18 +- test/index.js | 2 +- test/points/adjustments___points.json | 144 ++++++++++- test/points/basic_2x2___points.json | 60 ++++- test/points/default___points.json | 7 +- test/points/overrides___points.json | 224 ++++++++++++++++-- test/unit/utils.js | 13 + 10 files changed, 459 insertions(+), 47 deletions(-) diff --git a/src/points.js b/src/points.js index c4c157f..5f6c0c0 100644 --- a/src/points.js +++ b/src/points.js @@ -72,10 +72,6 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, 'object' )() - // propagating object key to name field - - col.name = col_name - // combining row data from zone-wide defs and col-specific defs const actual_rows = Object.keys(prep.extend(zone_wide_rows, col.rows)) @@ -98,7 +94,9 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, height: units.$default_height, padding: units.$default_padding, skip: false, - asym: 'both' + asym: 'both', + colrow: '{{col.name}}_{{row}}', + name: '{{zone.name}}_{{colrow}}' } for (const row of actual_rows) { const key = prep.extend( @@ -110,10 +108,11 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, col.rows[row] || {} ) - key.name = key.name || `${zone_name}_${col_name}_${row}` + key.zone = zone + key.zone.name = zone_name key.col = col + key.col.name = col_name key.row = row - key.colrow = `${col_name}_${row}` key.stagger = a.sane(key.stagger, `${key.name}.shift`, 'number')(units) key.spread = a.sane(key.spread, `${key.name}.spread`, 'number')(units) @@ -128,6 +127,13 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, key.skip = a.sane(key.skip, `${key.name}.skip`, 'boolean')() key.asym = a.in(key.asym, `${key.name}.asym`, ['left', 'right', 'both']) + // templating support + for (const [k, v] of Object.entries(key)) { + if (a.type(v)(units) == 'string') { + key[k] = u.template(v, key) + } + } + keys.push(key) } diff --git a/src/utils.js b/src/utils.js index 9fcb4cb..089f0c0 100644 --- a/src/utils.js +++ b/src/utils.js @@ -18,6 +18,20 @@ const deep = exports.deep = (obj, key, val) => { return obj } +exports.template = (str, vals={}) => { + const regex = /\{\{([^}]*)\}\}/g + let res = str + let shift = 0 + for (const match of str.matchAll(regex)) { + const replacement = deep(vals, match[1]) || '' + res = res.substring(0, match.index + shift) + + replacement + + res.substring(match.index + match[0].length) + shift += replacement.length - match[0].length + } + return res +} + const eq = exports.eq = (a=[], b=[]) => { return a[0] === b[0] && a[1] === b[1] } diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index bb15b15..82720d6 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -19,10 +19,12 @@ matrix: padding: 19 skip: false asym: both + colrow: default_default name: matrix + zone: + name: matrix col: rows: {} key: {} name: default row: default - colrow: default_default diff --git a/test/cli/minimal/reference/points/points.yaml b/test/cli/minimal/reference/points/points.yaml index 2e296a1..a3179f0 100644 --- a/test/cli/minimal/reference/points/points.yaml +++ b/test/cli/minimal/reference/points/points.yaml @@ -19,10 +19,16 @@ matrix_col_row: padding: 19 skip: false asym: both - name: matrix_col_row - col: - rows: {} - key: {} - name: col - row: row colrow: col_row + name: matrix_col_row + zone: + columns: + col: &ref_0 + rows: {} + key: {} + name: col + rows: + row: {} + name: matrix + col: *ref_0 + row: row diff --git a/test/index.js b/test/index.js index c836545..bf88f30 100644 --- a/test/index.js +++ b/test/index.js @@ -124,7 +124,7 @@ for (let w of cli_what) { const command = read(t, 'command') const output_path = exists(t, 'path') ? read(t, 'path') : 'output' fs.removeSync(output_path) - const version_regex = /\bv\d+\.\d+\.\d+\b/ + const version_regex = /\bv\d+\.\d+\.\d+(\-develop)?\b/ // correct execution if (exists(t, 'log')) { const ref_log = read(t, 'log').replace(version_regex, '') diff --git a/test/points/adjustments___points.json b/test/points/adjustments___points.json index 02b7e60..25ce5c1 100644 --- a/test/points/adjustments___points.json +++ b/test/points/adjustments___points.json @@ -22,14 +22,46 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "left_bottom", "name": "matrix_left_bottom", + "zone": { + "columns": { + "left": null, + "right": { + "key": { + "stagger": 5, + "spread": 25, + "splay": 5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "top": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, "col": { "rows": {}, "key": {}, "name": "left" }, - "row": "bottom", - "colrow": "left_bottom" + "row": "bottom" } }, "matrix_left_top": { @@ -55,14 +87,46 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "left_top", "name": "matrix_left_top", + "zone": { + "columns": { + "left": null, + "right": { + "key": { + "stagger": 5, + "spread": 25, + "splay": 5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "top": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, "col": { "rows": {}, "key": {}, "name": "left" }, - "row": "top", - "colrow": "left_top" + "row": "top" } }, "matrix_right_bottom": { @@ -88,7 +152,40 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "right_bottom", "name": "matrix_right_bottom", + "zone": { + "columns": { + "left": null, + "right": { + "key": { + "stagger": 5, + "spread": 25, + "splay": 5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "top": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, "col": { "key": { "stagger": 5, @@ -111,8 +208,7 @@ }, "name": "right" }, - "row": "bottom", - "colrow": "right_bottom" + "row": "bottom" } }, "matrix_right_top": { @@ -138,7 +234,40 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "right_top", "name": "matrix_right_top", + "zone": { + "columns": { + "left": null, + "right": { + "key": { + "stagger": 5, + "spread": 25, + "splay": 5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "top": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, "col": { "key": { "stagger": 5, @@ -161,8 +290,7 @@ }, "name": "right" }, - "row": "top", - "colrow": "right_top" + "row": "top" } } } diff --git a/test/points/basic_2x2___points.json b/test/points/basic_2x2___points.json index 9f717de..d2c7baf 100644 --- a/test/points/basic_2x2___points.json +++ b/test/points/basic_2x2___points.json @@ -22,14 +22,25 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "left_bottom", "name": "matrix_left_bottom", + "zone": { + "columns": { + "left": null, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, "col": { "rows": {}, "key": {}, "name": "left" }, - "row": "bottom", - "colrow": "left_bottom" + "row": "bottom" } }, "matrix_left_top": { @@ -55,14 +66,25 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "left_top", "name": "matrix_left_top", + "zone": { + "columns": { + "left": null, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, "col": { "rows": {}, "key": {}, "name": "left" }, - "row": "top", - "colrow": "left_top" + "row": "top" } }, "matrix_right_bottom": { @@ -88,14 +110,25 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "right_bottom", "name": "matrix_right_bottom", + "zone": { + "columns": { + "left": null, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, "col": { "rows": {}, "key": {}, "name": "right" }, - "row": "bottom", - "colrow": "right_bottom" + "row": "bottom" } }, "matrix_right_top": { @@ -121,14 +154,25 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "right_top", "name": "matrix_right_top", + "zone": { + "columns": { + "left": null, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, "col": { "rows": {}, "key": {}, "name": "right" }, - "row": "top", - "colrow": "right_top" + "row": "top" } } } diff --git a/test/points/default___points.json b/test/points/default___points.json index a24eb94..d1c34cb 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -22,14 +22,17 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "default_default", "name": "matrix", + "zone": { + "name": "matrix" + }, "col": { "rows": {}, "key": {}, "name": "default" }, - "row": "default", - "colrow": "default_default" + "row": "default" } } } diff --git a/test/points/overrides___points.json b/test/points/overrides___points.json index e1e8152..6edfefd 100644 --- a/test/points/overrides___points.json +++ b/test/points/overrides___points.json @@ -22,14 +22,42 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "left_bottom", "name": "matrix_left_bottom", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "top": {} + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": "u" + }, + "rows": { + "bottom": "$unset", + "home": {}, + "top": {} + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {} + }, + "name": "matrix" + }, "col": { "rows": {}, "key": {}, "name": "left" }, - "row": "bottom", - "colrow": "left_bottom" + "row": "bottom" } }, "matrix_left_home": { @@ -55,14 +83,42 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "left_home", "name": "matrix_left_home", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "top": {} + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": "u" + }, + "rows": { + "bottom": "$unset", + "home": {}, + "top": {} + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {} + }, + "name": "matrix" + }, "col": { "rows": {}, "key": {}, "name": "left" }, - "row": "home", - "colrow": "left_home" + "row": "home" } }, "matrix_middle_bottom": { @@ -88,7 +144,36 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "middle_bottom", "name": "matrix_middle_bottom", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "top": {} + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": "u" + }, + "rows": { + "bottom": "$unset", + "home": {}, + "top": {} + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {} + }, + "name": "matrix" + }, "col": { "rows": { "top": {} @@ -96,8 +181,7 @@ "key": {}, "name": "middle" }, - "row": "bottom", - "colrow": "middle_bottom" + "row": "bottom" } }, "matrix_middle_home": { @@ -123,7 +207,36 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "middle_home", "name": "matrix_middle_home", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "top": {} + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": "u" + }, + "rows": { + "bottom": "$unset", + "home": {}, + "top": {} + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {} + }, + "name": "matrix" + }, "col": { "rows": { "top": {} @@ -131,8 +244,7 @@ "key": {}, "name": "middle" }, - "row": "home", - "colrow": "middle_home" + "row": "home" } }, "matrix_middle_top": { @@ -158,7 +270,36 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "middle_top", "name": "matrix_middle_top", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "top": {} + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": "u" + }, + "rows": { + "bottom": "$unset", + "home": {}, + "top": {} + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {} + }, + "name": "matrix" + }, "col": { "rows": { "top": {} @@ -166,8 +307,7 @@ "key": {}, "name": "middle" }, - "row": "top", - "colrow": "middle_top" + "row": "top" } }, "matrix_right_home": { @@ -193,7 +333,36 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "right_home", "name": "matrix_right_home", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "top": {} + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": "u" + }, + "rows": { + "bottom": "$unset", + "home": {}, + "top": {} + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {} + }, + "name": "matrix" + }, "col": { "key": { "stagger": "u" @@ -205,8 +374,7 @@ }, "name": "right" }, - "row": "home", - "colrow": "right_home" + "row": "home" } }, "matrix_right_top": { @@ -232,7 +400,36 @@ "padding": 19, "skip": false, "asym": "both", + "colrow": "right_top", "name": "matrix_right_top", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "top": {} + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": "u" + }, + "rows": { + "bottom": "$unset", + "home": {}, + "top": {} + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {} + }, + "name": "matrix" + }, "col": { "key": { "stagger": "u" @@ -244,8 +441,7 @@ }, "name": "right" }, - "row": "top", - "colrow": "right_top" + "row": "top" } } } diff --git a/test/unit/utils.js b/test/unit/utils.js index fc3a54b..bade0ee 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -22,6 +22,19 @@ describe('Utils', function() { should.equal(u.deep(obj, 'non.existent.key'), undefined) }) + it('template', function() { + u.template('arst').should.equal('arst') + u.template('{arst}}').should.equal('{arst}}') + u.template('{{arst}}').should.equal('') + u.template('{{arst}}', {arst: 'neio'}).should.equal('neio') + u.template('{{a}}_{{b}}', {a: 'c', b: 'd'}).should.equal('c_d') + u.template( + '{{longlonglong}}_{{short}}', + {longlonglong: 'long', short: 'shortshortshort'} + ).should.equal('long_shortshortshort') + u.template('{{a.b.c}}', {a: {b: {c: 'deep'}}}).should.equal('deep') + }) + it('eq', function() { // basic point usage u.eq([1, 2], [1, 2]).should.equal(true) From 06d2ae4a7fc525a0588d390eecedc575eb82916d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 23 Jan 2022 21:45:09 +0100 Subject: [PATCH 021/120] Switch to handrolled semver implementation --- package-lock.json | 56 ++---------------------------------------- package.json | 1 - roadmap.md | 7 +++--- rollup.config.js | 7 +++--- src/ergogen.js | 10 +++----- src/utils.js | 19 ++++++++++++++ test/unit/interface.js | 4 +-- test/unit/utils.js | 15 +++++++++++ 8 files changed, 48 insertions(+), 71 deletions(-) diff --git a/package-lock.json b/package-lock.json index e929a49..9d18e6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ergogen", - "version": "3.1.2", + "version": "4.0.0-develop", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ergogen", - "version": "3.1.2", + "version": "4.0.0-develop", "license": "MIT", "dependencies": { "@jscad/openjscad": "github:ergogen/oldjscad", @@ -15,7 +15,6 @@ "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", "mathjs": "^10.0.0", - "semver": "^7.3.5", "yargs": "^17.3.0" }, "bin": { @@ -2025,17 +2024,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -2785,20 +2773,6 @@ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -3127,11 +3101,6 @@ "node": ">=10" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/yargs": { "version": "17.3.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz", @@ -4739,14 +4708,6 @@ "is-unicode-supported": "^0.1.0" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -5330,14 +5291,6 @@ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, "serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -5585,11 +5538,6 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "yargs": { "version": "17.3.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz", diff --git a/package.json b/package.json index 9f404f3..e2c9a2b 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", "mathjs": "^10.0.0", - "semver": "^7.3.5", "yargs": "^17.3.0" }, "devDependencies": { diff --git a/roadmap.md b/roadmap.md index b024237..e2fa5a9 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,15 +6,16 @@ ### Major +- Anchor overhaul + - Recursive-ize anchors + - This will potentially cause `ref` to be ambiguous, so maybe introduce a separate `refs` plural? + - Add `orient`/`rotate` **towards** other anchors (again, recursively) - Restructure pcb point/footprint filtering - Use the same `what`/`where` infrastructure as outlines - Collapse params/nets/anchors into a single hierarchy from the user's POV - Add per-footprint mirror support - Add some way for footprints to be able to "resist" the mirroring-related special treatment of negative X shift, rotation, etc. - Add auto-bind -- Recursive-ize anchors - - This will potentially cause `ref` to be ambiguous, so maybe introduce a separate `refs` plural? - - Plus add `orient`/`rotate` **towards** other anchors (again, recursively) - Merge, generalize, and uniform-ize footprints - Template for creating them, built-in variables they can use, documentation, external links, etc. - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. diff --git a/rollup.config.js b/rollup.config.js index 4ba6988..8a9817b 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -4,19 +4,18 @@ import commonjs from '@rollup/plugin-commonjs' export default { input: 'src/ergogen.js', - external: ['makerjs', 'js-yaml', 'mathjs', 'kle-serial', '@jscad/openjscad', 'semver'], + external: ['makerjs', 'js-yaml', 'mathjs', 'kle-serial', '@jscad/openjscad'], output: { name: 'ergogen', file: 'dist/ergogen.js', format: 'umd', - banner: `/*!\n * Ergogen v${pkg.version}\n * https://zealot.hu/ergogen\n */\n`, + banner: `/*!\n * Ergogen v${pkg.version}\n * https://ergogen.xyz\n */\n`, globals: { 'makerjs': 'makerjs', 'js-yaml': 'jsyaml', 'mathjs': 'math', 'kle-serial': 'kle', - '@jscad/openjscad': 'myjscad', - 'semver': 'semver' + '@jscad/openjscad': 'myjscad' } }, plugins: [ diff --git a/src/ergogen.js b/src/ergogen.js index 5f223b7..8d548c7 100644 --- a/src/ergogen.js +++ b/src/ergogen.js @@ -7,7 +7,6 @@ const outlines_lib = require('./outlines') const cases_lib = require('./cases') const pcbs_lib = require('./pcbs') -const semver = require('semver') const version = require('../package.json').version const process = async (raw, debug=false, logger=()=>{}) => { @@ -34,12 +33,9 @@ const process = async (raw, debug=false, logger=()=>{}) => { if (config.meta && config.meta.engine) { logger('Checking compatibility...') - const engine = semver.validRange(config.meta.engine) - if (!engine) { - throw new Error('Invalid config engine declaration!') - } - if (!semver.satisfies(version, engine)) { - throw new Error(`Current ergogen version (${version}) doesn\'t satisfy config's engine requirement (${engine})!`) + const engine = u.semver(config.meta.engine, 'config.meta.engine') + if (!u.satisfies(version, engine)) { + throw new Error(`Current ergogen version (${version}) doesn\'t satisfy config's engine requirement (${config.meta.engine})!`) } } diff --git a/src/utils.js b/src/utils.js index 089f0c0..7e6b94b 100644 --- a/src/utils.js +++ b/src/utils.js @@ -108,4 +108,23 @@ exports.stack = (a, b) => { a, b } } +} + +const semver = exports.semver = (str, name='') => { + const main = str.split('-')[0] + if (/^\d+\.\d+\.\d+$/.test(main)) { + const parts = main.split('.').map(v => parseInt(v)) + return {major: parts[0], minor: parts[1], patch: parts[2]} + } else throw new Error(`Invalid semver "${str}" at ${name}!`) +} + +const satisfies = exports.satisfies = (current, expected) => { + if (current.major === undefined) current = semver(current) + if (expected.major === undefined) expected = semver(expected) + return current.major === expected.major && ( + current.minor > expected.minor || ( + current.minor === expected.minor && + current.patch >= expected.patch + ) + ) } \ No newline at end of file diff --git a/test/unit/interface.js b/test/unit/interface.js index 332c9cc..ddae923 100644 --- a/test/unit/interface.js +++ b/test/unit/interface.js @@ -90,9 +90,9 @@ describe('Interface', function() { it('engine', async function() { return Promise.all([ ergogen.process({'meta.engine': 'invalid'}).should.be.rejectedWith('Invalid'), - ergogen.process({'meta.engine': '^0.1.2'}).should.be.rejectedWith('satisfy'), + ergogen.process({'meta.engine': '0.1.2'}).should.be.rejectedWith('satisfy'), // no "points clause" means we're over the engine check, so it "succeeded" - ergogen.process({'meta.engine': `^${version}`}).should.be.rejectedWith('points clause') + ergogen.process({'meta.engine': `${version}`}).should.be.rejectedWith('points clause') ]) }) diff --git a/test/unit/utils.js b/test/unit/utils.js index bade0ee..b131ccb 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -132,4 +132,19 @@ describe('Utils', function() { }) }) + it('semver', function() { + u.semver('1.2.3').should.deep.equal({major: 1, minor: 2, patch: 3}) + u.semver('1.2.3-develop').should.deep.equal({major: 1, minor: 2, patch: 3}) + u.semver.bind(this, 'invalid', 'name').should.throw() + }) + + it('satisfies', function() { + u.satisfies('1.2.3', '1.2.3').should.be.true + u.satisfies('1.2.3', '1.2.1').should.be.true + u.satisfies('1.2.3', '1.1.0').should.be.true + u.satisfies('1.2.3', '1.2.4').should.be.false + u.satisfies('1.2.3', '1.3.0').should.be.false + u.satisfies('1.2.3', '2.0.0').should.be.false + }) + }) \ No newline at end of file From e0f5c910eb7a00406f4bfd68323f02f844b59f20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 23 Jan 2022 21:46:36 +0100 Subject: [PATCH 022/120] Fix rollup build warning --- src/prepare.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/prepare.js b/src/prepare.js index 6ece3e8..2314542 100644 --- a/src/prepare.js +++ b/src/prepare.js @@ -73,7 +73,7 @@ exports.inherit = config => traverse(config, config, [], (target, key, val, root candidates = candidates.concat(parents) list.unshift(other) } - val = extend.apply(this, list) + val = extend.apply(null, list) delete val.$extends } target[key] = val From d5129832b9683c5c0e05127dba0152cfb9c92f1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 23 Jan 2022 22:02:05 +0100 Subject: [PATCH 023/120] More flexible semver handling --- src/utils.js | 10 ++++++++-- test/unit/utils.js | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/utils.js b/src/utils.js index 7e6b94b..2acf1b0 100644 --- a/src/utils.js +++ b/src/utils.js @@ -111,9 +111,15 @@ exports.stack = (a, b) => { } const semver = exports.semver = (str, name='') => { - const main = str.split('-')[0] + let main = str.split('-')[0] + if (main.startsWith('v')) { + main = main.substring(1) + } + while (main.split('.').length < 3) { + main += '.0' + } if (/^\d+\.\d+\.\d+$/.test(main)) { - const parts = main.split('.').map(v => parseInt(v)) + const parts = main.split('.').map(part => parseInt(part, 10)) return {major: parts[0], minor: parts[1], patch: parts[2]} } else throw new Error(`Invalid semver "${str}" at ${name}!`) } diff --git a/test/unit/utils.js b/test/unit/utils.js index b131ccb..6ea2bdb 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -133,8 +133,13 @@ describe('Utils', function() { }) it('semver', function() { - u.semver('1.2.3').should.deep.equal({major: 1, minor: 2, patch: 3}) - u.semver('1.2.3-develop').should.deep.equal({major: 1, minor: 2, patch: 3}) + const expected = {major: 1, minor: 0, patch: 0} + u.semver('1.0.0').should.deep.equal(expected) + u.semver('1.0.0-develop').should.deep.equal(expected) + u.semver('v1.0.0').should.deep.equal(expected) + u.semver('1').should.deep.equal(expected) + u.semver('1.0').should.deep.equal(expected) + u.semver.bind(this, '1.', 'name').should.throw() u.semver.bind(this, 'invalid', 'name').should.throw() }) @@ -145,6 +150,7 @@ describe('Utils', function() { u.satisfies('1.2.3', '1.2.4').should.be.false u.satisfies('1.2.3', '1.3.0').should.be.false u.satisfies('1.2.3', '2.0.0').should.be.false + u.satisfies({major: 1, minor: 2, patch: 3}, {major: 1, minor: 2, patch: 3}).should.be.true }) }) \ No newline at end of file From cff15dd3b9eaac3f16320de96e6b97b14fd1342f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 23 Jan 2022 22:04:38 +0100 Subject: [PATCH 024/120] Add missing bbox test --- test/unit/utils.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/unit/utils.js b/test/unit/utils.js index 6ea2bdb..e702791 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -115,7 +115,13 @@ describe('Utils', function() { u.poly([[0, 0], [1, 0], [1, 0], [1, 1]]).should.deep.equal(expected) // empty in, empty out u.poly([]).should.deep.equal({paths: {}}) + }) + it('poly', function() { + u.bbox([[0, 0], [1, 0], [1, 1]]).should.deep.equal({ + high: [1, 1], + low: [0, 0] + }) }) it('combine helpers', function() { From b8c71bef0fdb00f2256424711906346c234d8767 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 24 Jan 2022 20:55:35 +0100 Subject: [PATCH 025/120] Improve readme --- readme.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 92cb351..8151102 100644 --- a/readme.md +++ b/readme.md @@ -3,7 +3,17 @@ Ergogen is a keyboard generator that aims to provide a common configuration format to describe **ergonomic** 2D layouts, and generate automatic plates, cases, and (un-routed) PCBs for them. The project grew out of (and is an integral part of) the [Absolem keyboard](https://zealot.hu/absolem), and shares its [Discord server](https://discord.gg/nbKcAZB) as well. -For usage and config information, please refer to the [docs](https://docs.ergogen.xyz). +## Getting started + +Until there's a proper "Getting started" guide, try getting acquainted with ergogen by following these steps in order: + +1. Read the [docs](https://docs.ergogen.xyz). D'uuh. They're not complete by any measure, but should give you a fairly good idea what you're dealing with here. + +1. Try one of the web-based deployments ([official](https://ergogen.xyz); [unofficial](https://ergogen.cache.works/) but probably better and soon to be official) - no need to download the CLI unless you want to A) preview in-development features, B) use custom modifications, or C) contribute code. Click things, look at outputs; see if things start to make sense. + +1. Search the [`#ergogen`](https://github.com/topics/ergogen) topic on GitHub to look at (and reverse engineer) a variety of real life configs using ergogen. Pop them into the web UI, see what they do, tinker with them; things should start to make more and more sense. + +1. If a question persists after all of the above, feel free to ask it over on [Discord](https://discord.gg/nbKcAZB) and we'll do our best to help you out. ## Contributions From 6dc6b5d8e9edf6777bd1d9b91706319132d5b101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 27 Feb 2022 11:11:45 +0100 Subject: [PATCH 026/120] Anchor recursivization --- src/anchor.js | 85 +++++++++++++++++++++++++++-------- src/filter.js | 2 +- src/outlines.js | 2 +- src/pcbs.js | 6 +-- test/outlines/circles.yaml | 2 +- test/outlines/polygons.yaml | 2 +- test/outlines/rectangles.yaml | 2 +- test/unit/anchor.js | 63 ++++++++++++++++++-------- 8 files changed, 119 insertions(+), 45 deletions(-) diff --git a/src/anchor.js b/src/anchor.js index 92e52b6..031b50b 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -12,37 +12,85 @@ const mirror_ref = exports.mirror = (ref, mirror=true) => { return ref } -const anchor = exports.parse = (raw, name, points={}, check_unexpected=true, default_point=new Point(), mirror=false) => units => { - if (a.type(raw)() == 'array') { +const aggregator_common = ['parts', 'method'] + +const aggregators = { + average: (config, name, parts) => { + a.unexpected(config, name, aggregator_common) + let x = 0, y = 0, r = 0 + const len = parts.length + for (const part of parts) { + x += part.x + y += part.y + r += part.r + } + return new Point(x / len, y / len, r / len) + } +} + +const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), mirror=false) => units => { + + // + // Anchor type handling + // + + if (a.type(raw)() == 'string') { + raw = {ref: raw} + } + + else if (a.type(raw)() == 'array') { // recursive call with incremental default_point mods, according to `affect`s let current = default_point.clone() + let index = 1 for (const step of raw) { - current = anchor(step, name, points, check_unexpected, current, mirror)(units) + current = anchor(step, `${name}[${index++}]`, points, current, mirror)(units) } return current } - if (check_unexpected) a.unexpected(raw, name, ['ref', 'orient', 'shift', 'rotate', 'affect']) + + a.unexpected(raw, name, ['ref', 'aggregate', 'orient', 'shift', 'rotate', 'affect']) + + // + // Reference or aggregate handling + // + let point = default_point.clone() + if (raw.ref !== undefined && raw.aggregate !== undefined) { + throw new Error(`Fields "ref" and "aggregate" cannot appear together in anchor "${name}"!`) + } + if (raw.ref !== undefined) { - if (a.type(raw.ref)() == 'array') { - // averaging multiple anchors - let x = 0, y = 0, r = 0 - const len = raw.ref.length - for (const ref of raw.ref) { - const parsed_ref = mirror_ref(ref, mirror) - a.assert(points[parsed_ref], `Unknown point reference "${parsed_ref}" in anchor "${name}"!`) - const resolved = points[parsed_ref] - x += resolved.x - y += resolved.y - r += resolved.r - } - point = new Point(x / len, y / len, r / len) - } else { + // base case, resolve directly + if (a.type(raw.ref)() == 'string') { const parsed_ref = mirror_ref(raw.ref, mirror) a.assert(points[parsed_ref], `Unknown point reference "${parsed_ref}" in anchor "${name}"!`) point = points[parsed_ref].clone() + // recursive case + } else { + point = anchor(raw.ref, `${name}.ref`, points, default_point, mirror)(units) } + } + + if (raw.aggregate !== undefined) { + raw.aggregate = a.sane(raw.aggregate, `${name}.aggregate`, 'object')() + raw.aggregate.method = a.sane(raw.aggregate.method || 'average', `${name}.aggregate.method`, 'string')() + a.assert(aggregators[raw.aggregate.method], `Unknown aggregator method "${raw.aggregate.method}" in anchor "${name}"!`) + raw.aggregate.parts = a.sane(raw.aggregate.parts || [], `${name}.aggregate.parts`, 'array')() + + const parts = [] + let index = 1 + for (const part of raw.aggregate.parts) { + parts.push(anchor(part, `${name}.aggregate.parts[${index++}]`, points, default_point, mirror)(units)) + } + + point = aggregators[raw.aggregate.method](raw.aggregate, `${name}.aggregate`, parts) + } + + // + // Actual orient/shift/rotate/affect handling + // + if (raw.orient !== undefined) { let angle = a.sane(raw.orient, `${name}.orient`, 'number')(units) if (point.meta.mirrored) { @@ -77,5 +125,6 @@ const anchor = exports.parse = (raw, name, points={}, check_unexpected=true, def point[aff] = candidate[aff] } } + return point } \ No newline at end of file diff --git a/src/filter.js b/src/filter.js index 2d36df9..cbece43 100644 --- a/src/filter.js +++ b/src/filter.js @@ -121,7 +121,7 @@ exports.parse = (config, name, points={}, units={}, include_mirrors=false) => { result.push(anchor(config, name, points)(units)) if (include_mirrors) { // this is strict: if the ref of the anchor doesn't have a mirror pair, it will error out - result.push(anchor(config, name, points, true, undefined, true)(units)) + result.push(anchor(config, name, points, undefined, true)(units)) } // otherwise, it is treated as a condition to filter all available points diff --git a/src/outlines.js b/src/outlines.js index b49288b..66e0849 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -112,7 +112,7 @@ const polygon = (config, name, points, outlines, units) => { let poly_index = -1 for (const poly_point of poly_points) { const poly_name = `${name}.points[${++poly_index}]` - last_anchor = anchor(poly_point, poly_name, points, true, last_anchor)(units) + last_anchor = anchor(poly_point, poly_name, points, last_anchor)(units) parsed_points.push(last_anchor.p) } let poly = u.poly(parsed_points) diff --git a/src/pcbs.js b/src/pcbs.js index 90c0a82..5eb0714 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -156,7 +156,7 @@ const footprint = exports._footprint = (config, name, points, point, net_indexer // config sanitization a.unexpected(config, name, ['type', 'anchor', 'nets', 'anchors', 'params']) const type = a.in(config.type, `${name}.type`, Object.keys(footprint_types)) - let anchor = anchor_lib.parse(config.anchor || {}, `${name}.anchor`, points, true, point)(units) + let anchor = anchor_lib.parse(config.anchor || {}, `${name}.anchor`, points, point)(units) const nets = a.sane(config.nets || {}, `${name}.nets`, 'object')() const anchors = a.sane(config.anchors || {}, `${name}.anchors`, 'object')() const params = a.sane(config.params || {}, `${name}.params`, 'object')() @@ -189,7 +189,7 @@ const footprint = exports._footprint = (config, name, points, point, net_indexer parsed_params.xy = (x, y) => { const new_anchor = anchor_lib.parse({ shift: [x, -y] - }, '_internal_footprint_xy', points, true, anchor)(units) + }, '_internal_footprint_xy', points, anchor)(units) return `${new_anchor.x} ${-new_anchor.y}` } @@ -224,7 +224,7 @@ const footprint = exports._footprint = (config, name, points, point, net_indexer // parsing anchor-type parameters parsed_params.anchors = {} for (const [anchor_name, anchor_config] of Object.entries(prep.extend(fp.anchors || {}, anchors))) { - let parsed_anchor = anchor_lib.parse(anchor_config || {}, `${name}.anchors.${anchor_name}`, points, true, anchor)(units) + let parsed_anchor = anchor_lib.parse(anchor_config || {}, `${name}.anchors.${anchor_name}`, points, anchor)(units) parsed_anchor.y = -parsed_anchor.y parsed_params.anchors[anchor_name] = parsed_anchor } diff --git a/test/outlines/circles.yaml b/test/outlines/circles.yaml index aa7af33..f1aaa51 100644 --- a/test/outlines/circles.yaml +++ b/test/outlines/circles.yaml @@ -12,7 +12,7 @@ outlines: middle_circle: what: circle where: - ref: + aggregate.parts: - matrix - mirror_matrix radius: 15 diff --git a/test/outlines/polygons.yaml b/test/outlines/polygons.yaml index cc094b8..09bf345 100644 --- a/test/outlines/polygons.yaml +++ b/test/outlines/polygons.yaml @@ -11,7 +11,7 @@ outlines: bound: false middle_poly: what: polygon - where.ref: + where.aggregate.parts: - matrix - mirror_matrix points: diff --git a/test/outlines/rectangles.yaml b/test/outlines/rectangles.yaml index 86e2e95..df2cab0 100644 --- a/test/outlines/rectangles.yaml +++ b/test/outlines/rectangles.yaml @@ -12,7 +12,7 @@ outlines: middle_rect: what: rectangle where: - ref: + aggregate.parts: - matrix - mirror_matrix shift: [0, sy/2] diff --git a/test/unit/anchor.js b/test/unit/anchor.js index b335840..0cde3ee 100644 --- a/test/unit/anchor.js +++ b/test/unit/anchor.js @@ -6,8 +6,8 @@ describe('Anchor', function() { const points = { o: new Point(0, 0, 0, {label: 'o'}), - ten: new Point(10, 10, 10, {label: 'ten'}), - mirror: new Point(20, 0, 0, {mirrored: true}) + ten: new Point(10, 10, -90, {label: 'ten'}), + mirror_ten: new Point(-10, 10, 90, {mirrored: true}) } it('params', function() { @@ -16,28 +16,45 @@ describe('Anchor', function() { parse({}, 'name')(), [0, 0, 0, {}] ) - // unexpected check can be disabled - check( - parse({unexpected_key: true}, 'name', {}, false)(), - [0, 0, 0, {}] - ) - // default point can be overridden - check( - parse({}, 'name', {}, true, new Point(1, 1))(), - [1, 1, 0, {}] - ) - }) - - it('ref', function() { // single reference check( parse({ref: 'o'}, 'name', points)(), [0, 0, 0, {label: 'o'}] ) + // default point can be overridden + check( + parse({}, 'name', {}, new Point(1, 1))(), + [1, 1, 0, {}] + ) + // mirrored references can be forced + check( + parse({ref: 'ten'}, 'name', points, undefined, true)(), + [-10, 10, 90, {mirrored: true}] + ) + }) + + it('recursive', function() { + // recursive references are supported (keeping metadata) + check( + parse({ + ref: { + ref: 'o', + shift: [2, 2] + } + }, 'name', points)(), + [2, 2, 0, {label: 'o'}] + ) + }) + + it('aggregate', function() { // average of multiple references (metadata gets ignored) check( - parse({ref: ['o', 'ten']}, 'name', points)(), - [5, 5, 5, {}] + parse({ + aggregate: { + parts: ['o', 'ten'] + } + }, 'name', points)(), + [5, 5, -45, {}] ) }) @@ -49,8 +66,8 @@ describe('Anchor', function() { ) // shift should respect mirrored points (and invert along the x axis) check( - parse({ref: 'mirror', shift: [1, 1]}, 'name', points)(), - [19, 1, 0, {mirrored: true}] + parse({ref: 'mirror_ten', shift: [1, 1]}, 'name', points)(), + [-11, 9, 90, {mirrored: true}] ) }) @@ -99,6 +116,14 @@ describe('Anchor', function() { ) }) + it('string', function() { + // basic string form + check( + parse('ten', 'name', points)(), + [10, 10, -90, {label: 'ten'}] + ) + }) + it('array', function() { // basic multi-anchor check( From d23bd71b7ad53ef8c19947986a63b77993ff99d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 27 Feb 2022 13:44:24 +0100 Subject: [PATCH 027/120] Support orient/rotate towards other points --- roadmap.md | 11 ++++++----- src/anchor.js | 27 +++++++++++++++++---------- src/point.js | 6 ++++++ test/unit/anchor.js | 10 ++++++++++ 4 files changed, 39 insertions(+), 15 deletions(-) diff --git a/roadmap.md b/roadmap.md index e2fa5a9..547f0ad 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,20 +6,20 @@ ### Major -- Anchor overhaul - - Recursive-ize anchors - - This will potentially cause `ref` to be ambiguous, so maybe introduce a separate `refs` plural? - - Add `orient`/`rotate` **towards** other anchors (again, recursively) - Restructure pcb point/footprint filtering - Use the same `what`/`where` infrastructure as outlines - Collapse params/nets/anchors into a single hierarchy from the user's POV - Add per-footprint mirror support - Add some way for footprints to be able to "resist" the mirroring-related special treatment of negative X shift, rotation, etc. - Add auto-bind -- Merge, generalize, and uniform-ize footprints +- Merge, generalize, uniform-ize and externalize footprints! + - Separate npm package for dependency, onnx-like incremental opset versioning - Template for creating them, built-in variables they can use, documentation, external links, etc. - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. - Rename class to designator in this context (https://en.wikipedia.org/wiki/Reference_designator#Designators) + - Include raw kicad footprint integrations + - pull torik's script to be able to convert raw kicad footprints into positionable ergogen ones + - have a `dummy` footprint which can just be updated from schematic ### Minor @@ -49,6 +49,7 @@ ### Patch +- Prevent double mirroring (see discord "mirror_mirror_") - Check unexpected keys at top level, too - Better error handling for the fillet option? - Integration and end2end tests to get coverage to 100% diff --git a/src/anchor.js b/src/anchor.js index 031b50b..0d5ae4d 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -91,12 +91,23 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), // Actual orient/shift/rotate/affect handling // + const rotator = (config, name, point) => { + // simple case: number gets added to point rotation + if (a.type(config)(units) == 'number') { + let angle = a.sane(config, name, 'number')(units) + if (point.meta.mirrored) { + angle = -angle + } + point.r += angle + // recursive case: points turns "towards" target anchor + } else { + const target = anchor(config, name, points, default_point, mirror)(units) + point.r = point.angle(target) + } + } + if (raw.orient !== undefined) { - let angle = a.sane(raw.orient, `${name}.orient`, 'number')(units) - if (point.meta.mirrored) { - angle = -angle - } - point.r += angle + rotator(raw.orient, `${name}.orient`, point) } if (raw.shift !== undefined) { let xyval = a.wh(raw.shift, `${name}.shift`)(units) @@ -106,11 +117,7 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), point.shift(xyval, true) } if (raw.rotate !== undefined) { - let angle = a.sane(raw.rotate, `${name}.rotate`, 'number')(units) - if (point.meta.mirrored) { - angle = -angle - } - point.r += angle + rotator(raw.rotate, `${name}.rotate`, point) } if (raw.affect !== undefined) { const candidate = point.clone() diff --git a/src/point.js b/src/point.js index b86d48d..9e32b7c 100644 --- a/src/point.js +++ b/src/point.js @@ -66,4 +66,10 @@ module.exports = class Point { let rect = u.rect(size, size, [-size/2, -size/2]) return this.position(rect) } + + angle(other) { + const dx = other.x - this.x + const dy = other.y - this.y + return -Math.atan2(dx, dy) * (180 / Math.PI) + } } diff --git a/test/unit/anchor.js b/test/unit/anchor.js index 0cde3ee..135ad2a 100644 --- a/test/unit/anchor.js +++ b/test/unit/anchor.js @@ -83,6 +83,11 @@ describe('Anchor', function() { parse({orient: -90, shift: [0, 1]}, 'name')(), [1, 0, -90, {}] ) + // orient towards another point (and then move a diagonal to get to [1, 1]) + check( + parse({orient: 'ten', shift: [0, Math.SQRT2]}, 'name', points)(), + [1, 1, -45, {}] + ) }) it('rotate', function() { @@ -97,6 +102,11 @@ describe('Anchor', function() { parse({shift: [0, 1], rotate: -90}, 'name')(), [0, 1, -90, {}] ) + // rotate towards another point + check( + parse({rotate: {shift: [-1, -1]}}, 'name')(), + [0, 0, 135, {}] + ) }) it('affect', function() { From b928cbd35d0d6479543958fc840bf2f9ea67c6d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 27 Feb 2022 18:18:16 +0100 Subject: [PATCH 028/120] Implement a simple autobind --- src/assert.js | 6 +- src/outlines.js | 3 +- src/points.js | 65 +++++++++++++++++++ src/units.js | 3 +- test/cli/bad_input/error | 2 +- test/cli/big/reference/points/points.yaml | 6 ++ test/cli/big/reference/points/units.yaml | 1 + test/cli/minimal/reference/points/points.yaml | 6 ++ test/cli/minimal/reference/points/units.yaml | 1 + test/cli/missing_input/error | 2 +- test/cli/nonexistent_input/error | 2 +- test/outlines/fillet.yaml | 1 + test/points/adjustments___points.json | 36 ++++++++-- test/points/basic_2x2___points.json | 36 ++++++++-- test/points/default___points.json | 9 ++- test/points/overrides___points.json | 63 ++++++++++++++++-- test/points/units___units.json | 7 +- 17 files changed, 221 insertions(+), 28 deletions(-) diff --git a/src/assert.js b/src/assert.js index 35ea290..916fa81 100644 --- a/src/assert.js +++ b/src/assert.js @@ -44,7 +44,7 @@ const _in = exports.in = (raw, name, arr) => { const arr = exports.arr = (raw, name, length, _type, _default) => units => { assert(type(raw)(units) == 'array', `Field "${name}" should be an array!`) assert(length == 0 || raw.length == length, `Field "${name}" should be an array of length ${length}!`) - raw = raw.map(val => val || _default) + raw = raw.map(val => val === undefined ? _default : val) raw.map(val => assert(type(val)(units) == _type, `Field "${name}" should contain ${_type}s!`)) if (_type == 'number') { raw = raw.map(val => mathnum(val)(units)) @@ -62,8 +62,8 @@ const wh = exports.wh = (raw, name) => units => { return xy(raw, name)(units) } -exports.trbl = (raw, name) => units => { +exports.trbl = (raw, name, _default=0) => units => { if (!Array.isArray(raw)) raw = [raw, raw, raw, raw] if (raw.length == 2) raw = [raw[1], raw[0], raw[1], raw[0]] - return numarr(raw, name, 4, 'number', 0)(units) + return arr(raw, name, 4, 'number', _default)(units) } diff --git a/src/outlines.js b/src/outlines.js index 66e0849..ed1061f 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -198,8 +198,7 @@ exports.parse = (config = {}, points = {}, units = {}) => { // process keys that are common to all part declarations const operation = u[a.in(part.operation || 'add', `${name}.operation`, ['add', 'subtract', 'intersect', 'stack'])] const what = a.in(part.what || 'outline', `${name}.what`, ['rectangle', 'circle', 'polygon', 'outline']) - const bound_by_default = ['rectangle'] - const bound = part.bound === undefined ? bound_by_default.includes(what) : !!part.bound + const bound = !!part.bound const mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() // `where` is delayed until we have all, potentially what-dependent units // default where is [0, 0], as per filter parsing diff --git a/src/points.js b/src/points.js index 5f6c0c0..0d48cc8 100644 --- a/src/points.js +++ b/src/points.js @@ -43,6 +43,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, // column layout + const col_minmax = {} if (!Object.keys(cols).length) { cols.default = {} } @@ -52,6 +53,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, // column-level sanitization col = col || {} + col_minmax[col_name] = {min: Infinity, max: -Infinity} a.unexpected( col, @@ -93,6 +95,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, width: units.$default_width, height: units.$default_height, padding: units.$default_padding, + autobind: units.$default_autobind, skip: false, asym: 'both', colrow: '{{col.name}}_{{row}}', @@ -155,21 +158,83 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, // actually laying out keys for (const key of keys) { + + // copy the current column anchor let point = col_anchor.clone() + + // apply transformations for (const r of rotations) { point.rotate(r.angle, r.origin) } point.r += key.orient point.shift(key.shift) point.r += key.rotate + + // save new key point.meta = key points[key.name] = point + + // collect minmax stats for autobind + col_minmax[col_name].min = Math.min(col_minmax[col_name].min, point.y) + col_minmax[col_name].max = Math.max(col_minmax[col_name].max, point.y) + + // advance the column anchor to the next position col_anchor.y += key.padding } first_col = false } + // autobind + + let col_names = Object.keys(col_minmax) + let col_index = 0 + for (const [col_name, bounds] of Object.entries(col_minmax)) { + for (const point of Object.values(points)) { + if (point.meta.col.name != col_name) continue + if (!point.meta.autobind) continue + const autobind = a.sane(point.meta.autobind, `${point.meta.name}.autobind`, 'number')(units) + // specify default as -1, so we can recognize where it was left undefined even after number-ification + const bind = point.meta.bind = a.trbl(point.meta.bind, `${point.meta.name}.bind`, -1)(units) + + // up + if (bind[0] == -1) { + if (point.y < bounds.max) bind[0] = autobind + else bind[0] = 0 + + } + + // right + if (bind[1] == -1) { + bind[1] = 0 + if (col_index < col_names.length - 1) { + const right = col_minmax[col_names[col_index + 1]] + if (point.y >= right.min && point.y <= right.max) { + bind[1] = autobind + } + } + } + + // down + if (bind[2] == -1) { + if (point.y > bounds.min) bind[2] = autobind + else bind[2] = 0 + } + + // left + if (bind[3] == -1) { + bind[3] = 0 + if (col_index > 0) { + const left = col_minmax[col_names[col_index - 1]] + if (point.y >= left.min && point.y <= left.max) { + bind[3] = autobind + } + } + } + } + col_index++ + } + return points } diff --git a/src/units.js b/src/units.js index 90e0eaa..6831192 100644 --- a/src/units.js +++ b/src/units.js @@ -11,7 +11,8 @@ const default_units = { $default_splay: 0, $default_height: 'u-1', $default_width: 'u-1', - $default_padding: 'u' + $default_padding: 'u', + $default_autobind: 10 } exports.parse = (config = {}) => { diff --git a/test/cli/bad_input/error b/test/cli/bad_input/error index 2ed6722..e922a13 100644 --- a/test/cli/bad_input/error +++ b/test/cli/bad_input/error @@ -1 +1 @@ -Error: Input doesn't resolve into an object! +Error: Input doesn't resolve into an object! \ No newline at end of file diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index 82720d6..f744193 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -17,6 +17,7 @@ matrix: width: 18 height: 18 padding: 19 + autobind: 10 skip: false asym: both colrow: default_default @@ -28,3 +29,8 @@ matrix: key: {} name: default row: default + bind: + - 0 + - 0 + - 0 + - 0 diff --git a/test/cli/big/reference/points/units.yaml b/test/cli/big/reference/points/units.yaml index ae049c1..0b00ed1 100644 --- a/test/cli/big/reference/points/units.yaml +++ b/test/cli/big/reference/points/units.yaml @@ -8,4 +8,5 @@ $default_splay: 0 $default_height: 18 $default_width: 18 $default_padding: 19 +$default_autobind: 10 a: 47 diff --git a/test/cli/minimal/reference/points/points.yaml b/test/cli/minimal/reference/points/points.yaml index a3179f0..0ec0976 100644 --- a/test/cli/minimal/reference/points/points.yaml +++ b/test/cli/minimal/reference/points/points.yaml @@ -17,6 +17,7 @@ matrix_col_row: width: 18 height: 18 padding: 19 + autobind: 10 skip: false asym: both colrow: col_row @@ -32,3 +33,8 @@ matrix_col_row: name: matrix col: *ref_0 row: row + bind: + - 0 + - 0 + - 0 + - 0 diff --git a/test/cli/minimal/reference/points/units.yaml b/test/cli/minimal/reference/points/units.yaml index 4f4cee3..454b8bb 100644 --- a/test/cli/minimal/reference/points/units.yaml +++ b/test/cli/minimal/reference/points/units.yaml @@ -8,3 +8,4 @@ $default_splay: 0 $default_height: 18 $default_width: 18 $default_padding: 19 +$default_autobind: 10 diff --git a/test/cli/missing_input/error b/test/cli/missing_input/error index 8948ed0..2b2dba0 100644 --- a/test/cli/missing_input/error +++ b/test/cli/missing_input/error @@ -1 +1 @@ -Usage: ergogen [options] +Usage: ergogen [options] \ No newline at end of file diff --git a/test/cli/nonexistent_input/error b/test/cli/nonexistent_input/error index d5ef9b2..4207ee3 100644 --- a/test/cli/nonexistent_input/error +++ b/test/cli/nonexistent_input/error @@ -1 +1 @@ -Could not read config file "nonexistent.yaml": Error: ENOENT: no such file or directory, open 'nonexistent.yaml' +Could not read config file "nonexistent.yaml": Error: ENOENT: no such file or directory, open 'nonexistent.yaml' \ No newline at end of file diff --git a/test/outlines/fillet.yaml b/test/outlines/fillet.yaml index a34ed68..5dc5e85 100644 --- a/test/outlines/fillet.yaml +++ b/test/outlines/fillet.yaml @@ -15,6 +15,7 @@ outlines: - what: rectangle where: true size: cy + bound: true fillet: - what: outline name: base diff --git a/test/points/adjustments___points.json b/test/points/adjustments___points.json index 25ce5c1..ab5e160 100644 --- a/test/points/adjustments___points.json +++ b/test/points/adjustments___points.json @@ -20,6 +20,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "left_bottom", @@ -61,7 +62,13 @@ "key": {}, "name": "left" }, - "row": "bottom" + "row": "bottom", + "bind": [ + 10, + 0, + 0, + 0 + ] } }, "matrix_left_top": { @@ -85,6 +92,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "left_top", @@ -126,7 +134,13 @@ "key": {}, "name": "left" }, - "row": "top" + "row": "top", + "bind": [ + 0, + 10, + 10, + 0 + ] } }, "matrix_right_bottom": { @@ -150,6 +164,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "right_bottom", @@ -208,7 +223,13 @@ }, "name": "right" }, - "row": "bottom" + "row": "bottom", + "bind": [ + 10, + 0, + 0, + 10 + ] } }, "matrix_right_top": { @@ -232,6 +253,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "right_top", @@ -290,7 +312,13 @@ }, "name": "right" }, - "row": "top" + "row": "top", + "bind": [ + 0, + 0, + 10, + 0 + ] } } } diff --git a/test/points/basic_2x2___points.json b/test/points/basic_2x2___points.json index d2c7baf..ab42f3d 100644 --- a/test/points/basic_2x2___points.json +++ b/test/points/basic_2x2___points.json @@ -20,6 +20,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "left_bottom", @@ -40,7 +41,13 @@ "key": {}, "name": "left" }, - "row": "bottom" + "row": "bottom", + "bind": [ + 10, + 10, + 0, + 0 + ] } }, "matrix_left_top": { @@ -64,6 +71,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "left_top", @@ -84,7 +92,13 @@ "key": {}, "name": "left" }, - "row": "top" + "row": "top", + "bind": [ + 0, + 10, + 10, + 0 + ] } }, "matrix_right_bottom": { @@ -108,6 +122,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "right_bottom", @@ -128,7 +143,13 @@ "key": {}, "name": "right" }, - "row": "bottom" + "row": "bottom", + "bind": [ + 10, + 0, + 0, + 10 + ] } }, "matrix_right_top": { @@ -152,6 +173,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "right_top", @@ -172,7 +194,13 @@ "key": {}, "name": "right" }, - "row": "top" + "row": "top", + "bind": [ + 0, + 0, + 10, + 10 + ] } } } diff --git a/test/points/default___points.json b/test/points/default___points.json index d1c34cb..667bfc4 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -20,6 +20,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "default_default", @@ -32,7 +33,13 @@ "key": {}, "name": "default" }, - "row": "default" + "row": "default", + "bind": [ + 0, + 0, + 0, + 0 + ] } } } diff --git a/test/points/overrides___points.json b/test/points/overrides___points.json index 6edfefd..9094335 100644 --- a/test/points/overrides___points.json +++ b/test/points/overrides___points.json @@ -20,6 +20,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "left_bottom", @@ -57,7 +58,13 @@ "key": {}, "name": "left" }, - "row": "bottom" + "row": "bottom", + "bind": [ + 10, + 10, + 0, + 0 + ] } }, "matrix_left_home": { @@ -81,6 +88,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "left_home", @@ -118,7 +126,13 @@ "key": {}, "name": "left" }, - "row": "home" + "row": "home", + "bind": [ + 0, + 10, + 10, + 0 + ] } }, "matrix_middle_bottom": { @@ -142,6 +156,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "middle_bottom", @@ -181,7 +196,13 @@ "key": {}, "name": "middle" }, - "row": "bottom" + "row": "bottom", + "bind": [ + 10, + 0, + 0, + 10 + ] } }, "matrix_middle_home": { @@ -205,6 +226,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "middle_home", @@ -244,7 +266,13 @@ "key": {}, "name": "middle" }, - "row": "home" + "row": "home", + "bind": [ + 10, + 10, + 10, + 10 + ] } }, "matrix_middle_top": { @@ -268,6 +296,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "middle_top", @@ -307,7 +336,13 @@ "key": {}, "name": "middle" }, - "row": "top" + "row": "top", + "bind": [ + 0, + 10, + 10, + 0 + ] } }, "matrix_right_home": { @@ -331,6 +366,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "right_home", @@ -374,7 +410,13 @@ }, "name": "right" }, - "row": "home" + "row": "home", + "bind": [ + 10, + 0, + 0, + 10 + ] } }, "matrix_right_top": { @@ -398,6 +440,7 @@ "width": 18, "height": 18, "padding": 19, + "autobind": 10, "skip": false, "asym": "both", "colrow": "right_top", @@ -441,7 +484,13 @@ }, "name": "right" }, - "row": "top" + "row": "top", + "bind": [ + 0, + 0, + 10, + 10 + ] } } } diff --git a/test/points/units___units.json b/test/points/units___units.json index 729b66e..07b55ed 100644 --- a/test/points/units___units.json +++ b/test/points/units___units.json @@ -3,12 +3,13 @@ "u": 19, "cx": 18, "cy": 17, - "a": 10, - "b": 15, "$default_stagger": 0, "$default_spread": 19, "$default_splay": 0, "$default_height": 18, "$default_width": 18, - "$default_padding": 19 + "$default_padding": 19, + "$default_autobind": 10, + "a": 10, + "b": 15 } From e13927d05075ce12b5d2734f9bea60169b4ebcae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 27 Feb 2022 18:19:50 +0100 Subject: [PATCH 029/120] Make reference dumping easier during testing --- test/index.js | 62 +++++++++++++++++++++------------------------------ 1 file changed, 25 insertions(+), 37 deletions(-) diff --git a/test/index.js b/test/index.js index bf88f30..d81f740 100644 --- a/test/index.js +++ b/test/index.js @@ -8,7 +8,9 @@ const ergogen = require('../src/ergogen') require('./helpers/mock_footprints').inject(ergogen) let what = process.env.npm_config_what -let dump = process.env.npm_config_dump +const dump = process.env.npm_config_dump + + // Unit tests // the --what switch supports each unit individually @@ -21,12 +23,12 @@ for (const unit of glob.sync(path.join(__dirname, 'unit', '*.js'))) { require(`./unit/${base}.js`) } + + // Integration tests // the --what switch supports categories (like `points` and `outlines`) // as well as individual tests using slash-notation (like `points/000`) -// the --dump switch can output actual results for easier reference creation -// by default, json output is generated of the whole `actual`, but a raw, -// type-specific representation can be written if a deep path is specified +// the --dump switch can output the new results, overriding the old reference const cap = s => s.charAt(0).toUpperCase() + s.slice(1) @@ -36,33 +38,9 @@ const test = function(input_path) { title = path.basename(input_path, '.yaml').split('_').join(' ') it(title, async function() { const input = yaml.load(fs.readFileSync(input_path).toString()) - const actual = await ergogen.process(input, true) + const output = await ergogen.process(input, true) - // if we're just creating the reference, we can dump the current output - if (dump) { - // whole dump - if (dump === true || dump === 'true') { - const out = path.join( - path.dirname(input_path), - path.basename(input_path, '.yaml') + '___ref_candidate.json' - ) - fs.writeJSONSync(out, actual, {spaces: 4}) - // partial, type-specific dump - } else { - const part = u.deep(actual, dump) - const out = path.join( - path.dirname(input_path), - path.basename(input_path, '.yaml') + '___' + dump.split('.').join('_') - ) - if (a.type(part)() == 'string') { - fs.writeFileSync(out + '.txt', part) - } else { - fs.writeJSONSync(out + '.json', part, {spaces: 4}) - } - } - } - - // compare actual vs. reference + // compare output vs. reference const base = path.join(path.dirname(input_path), path.basename(input_path, '.yaml')) for (const expected_path of glob.sync(base + '___*')) { let expected = fs.readFileSync(expected_path).toString() @@ -70,7 +48,15 @@ const test = function(input_path) { expected = JSON.parse(expected) } const comp_path = expected_path.split('___')[1].split('.')[0].split('_').join('.') - u.deep(actual, comp_path).should.deep.equal(expected) + const output_part = u.deep(output, comp_path) + if (dump) { + if (a.type(output_part)() == 'string') { + fs.writeFileSync(expected_path, output_part) + } else { + fs.writeJSONSync(expected_path, output_part, {spaces: 4}) + } + } + output_part.should.deep.equal(expected) } }) } @@ -102,9 +88,11 @@ if (what) { } } + + // End-to-end tests to actually drive the CLI as well -// --what filter is the same as above ('cli', or 'cli/prefix') -// --dump saves the log, as well as prevents the output from being deleted +// --what is the same as above ('cli', or 'cli/prefix') +// --dump automatically overrides the old reference const read = (d, p) => fs.readFileSync(path.join(d, p)).toString() const exists = (d, p) => fs.existsSync(path.join(d, p)) @@ -132,18 +120,18 @@ for (let w of cli_what) { if (dump) { fs.writeFileSync(path.join(t, 'log'), actual_log) } - actual_log.should.equal(ref_log) const comp_res = dircompare.compareSync(output_path, path.join(t, 'reference'), { compareContent: true }) if (dump) { - fs.moveSync(output_path, path.join(t, 'output'), {overwrite: true}) + fs.moveSync(output_path, path.join(t, 'reference'), {overwrite: true}) } else { fs.removeSync(output_path) } + actual_log.should.equal(ref_log) comp_res.same.should.be.true } else { - const ref_error = read(t, 'error').replace(version_regex, '') + const ref_error = read(t, 'error') try { execSync(command, {stdio: 'pipe'}) throw 'should_have_thrown' @@ -151,7 +139,7 @@ for (let w of cli_what) { if (ex === 'should_have_thrown') { throw new Error('This command should have thrown!') } - const actual_error = ex.stderr.toString().replace(version_regex, '') + const actual_error = ex.stderr.toString().split('\n')[0] if (dump) { fs.writeFileSync(path.join(t, 'error'), actual_error) } From fdc2adf30eae65e3ac5365e10f4cb130f5f2a861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 27 Feb 2022 19:10:02 +0100 Subject: [PATCH 030/120] Dependency and roadmap housecleaning --- package-lock.json | 1114 +++++++++++++++++++++++---------------------- package.json | 18 +- roadmap.md | 2 +- 3 files changed, 585 insertions(+), 549 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d18e6b..82dff16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,70 +10,82 @@ "license": "MIT", "dependencies": { "@jscad/openjscad": "github:ergogen/oldjscad", - "fs-extra": "^10.0.0", - "js-yaml": "^3.14.0", + "fs-extra": "^10.0.1", + "js-yaml": "^3.14.1", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", - "mathjs": "^10.0.0", - "yargs": "^17.3.0" + "mathjs": "^10.1.1", + "yargs": "^17.3.1" }, "bin": { "ergogen": "src/cli.js" }, "devDependencies": { - "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-commonjs": "^21.0.2", "@rollup/plugin-json": "^4.1.0", - "chai": "^4.3.4", + "chai": "^4.3.6", "chai-as-promised": "^7.1.1", - "dir-compare": "^3.3.0", + "dir-compare": "^4.0.0", "glob": "^7.2.0", - "mocha": "^9.1.3", + "mocha": "^9.2.1", "nyc": "^15.1.0", - "rollup": "^2.61.1" + "rollup": "^2.68.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", - "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", + "version": "7.17.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", + "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helpers": "^7.16.5", - "@babel/parser": "^7.16.5", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0", + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.3", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -83,22 +95,13 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", - "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -107,13 +110,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" }, @@ -124,159 +127,150 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", - "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", - "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", - "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", "dev": true, "dependencies": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -356,9 +350,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", - "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -368,9 +362,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", - "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", + "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -379,33 +373,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", - "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.5", - "@babel/types": "^7.16.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -414,12 +408,12 @@ } }, "node_modules/@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -508,6 +502,31 @@ "node": ">=8" } }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@jscad/csg": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.6.tgz", @@ -665,9 +684,9 @@ "integrity": "sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==" }, "node_modules/@rollup/plugin-commonjs": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", - "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "version": "21.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.2.tgz", + "integrity": "sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -912,15 +931,15 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", + "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001312", + "electron-to-chromium": "^1.4.71", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.2", "picocolors": "^1.0.0" }, "bin": { @@ -934,15 +953,6 @@ "url": "https://opencollective.com/browserslist" } }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -968,9 +978,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001286", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", - "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "version": "1.0.30001312", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", + "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", "dev": true, "funding": { "type": "opencollective", @@ -978,15 +988,16 @@ } }, "node_modules/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", + "loupe": "^2.3.1", "pathval": "^1.1.1", "type-detect": "^4.0.5" }, @@ -1044,10 +1055,16 @@ } }, "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1155,9 +1172,9 @@ } }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1236,19 +1253,19 @@ } }, "node_modules/dir-compare": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", - "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.0.0.tgz", + "integrity": "sha512-wC7thVKL3V656tO61rbEDE4LTeeYrUC2pAUL00AaXYghBhjjVNRyBlpH6POzb44ZuK23OSrqF6TbSC/QYeqfAg==", "dev": true, "dependencies": { - "buffer-equal": "^1.0.0", - "minimatch": "^3.0.4" + "minimatch": "^3.0.4", + "p-limit": "^3.1.0 " } }, "node_modules/electron-to-chromium": { - "version": "1.4.19", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.19.tgz", - "integrity": "sha512-TeAjwsC/vhvxEtX/xN1JQUMkl+UrwKXlB4rwLyuLYVuBuRtqJJrU4Jy5pCVihMQg4m1ceZ3MEJ0yYuxHj8vC+w==", + "version": "1.4.73", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.73.tgz", + "integrity": "sha512-RlCffXkE/LliqfA5m29+dVDPB2r72y2D2egMMfIy3Le8ODrxjuZNVo4NIC2yPL01N4xb4nZQLwzi6Z5tGIGLnA==", "dev": true }, "node_modules/emoji-regex": { @@ -1381,9 +1398,9 @@ } }, "node_modules/fraction.js": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", - "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", + "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==", "engines": { "node": "*" }, @@ -1413,9 +1430,9 @@ ] }, "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -1542,9 +1559,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, "node_modules/graham_scan": { "version": "1.0.4", @@ -1659,9 +1676,9 @@ } }, "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -1807,15 +1824,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/istanbul-lib-processinfo": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", @@ -1884,9 +1892,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz", - "integrity": "sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -2024,6 +2032,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, "node_modules/magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -2048,15 +2065,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/makerjs": { "version": "0.17.0", "resolved": "git+ssh://git@github.com/ergogen/maker.js.git#a0ca32948845efe8ad5c9ca454f1285926853138", @@ -2074,15 +2082,15 @@ } }, "node_modules/mathjs": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.0.0.tgz", - "integrity": "sha512-PZcQ73mVvVG2GZXvE47q+j7P3ALVxWUM51wTmlVX3F/3IJMLNziNIqStwyIDAO64ZGB8u3iFlQwxT7DIijtNlw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.1.1.tgz", + "integrity": "sha512-4QJP8a0Vy90ajFYESnITSluCrQBZnI+2XQhKJIRdo/6t95oupffS5qA4MTWnLGm5GsEZF179JSMjST7wCdZQkA==", "dependencies": { - "@babel/runtime": "^7.16.0", + "@babel/runtime": "^7.16.7", "complex.js": "^2.0.15", "decimal.js": "^10.3.1", "escape-latex": "^1.2.0", - "fraction.js": "^4.1.1", + "fraction.js": "^4.1.2", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", @@ -2096,9 +2104,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -2113,32 +2121,32 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "node_modules/mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz", + "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==", "dev": true, "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", + "glob": "7.2.0", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "3.0.4", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.2.0", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -2161,26 +2169,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2193,6 +2181,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/mocha/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -2237,9 +2237,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -2261,9 +2261,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", "dev": true }, "node_modules/normalize-path": { @@ -2566,9 +2566,9 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" @@ -2706,13 +2706,17 @@ "dev": true }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2743,9 +2747,9 @@ } }, "node_modules/rollup": { - "version": "2.61.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.61.1.tgz", - "integrity": "sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==", + "version": "2.68.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.68.0.tgz", + "integrity": "sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2773,6 +2777,15 @@ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -2810,9 +2823,9 @@ } }, "node_modules/signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/source-map": { @@ -2912,6 +2925,18 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/sylvester": { "name": "@kaosat-dev/sylvester", "version": "0.0.21", @@ -3054,9 +3079,9 @@ "dev": true }, "node_modules/workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", "dev": true }, "node_modules/wrap-ansi": { @@ -3102,9 +3127,9 @@ } }, "node_modules/yargs": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz", - "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -3143,9 +3168,9 @@ } }, "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { "node": ">=10" @@ -3167,9 +3192,9 @@ } }, "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "engines": { "node": ">=12" } @@ -3188,194 +3213,187 @@ } }, "dependencies": { - "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", "dev": true, "requires": { - "@babel/highlight": "^7.16.0" + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", "dev": true }, "@babel/core": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", - "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", + "version": "7.17.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", + "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helpers": "^7.16.5", - "@babel/parser": "^7.16.5", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0", + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.3", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "semver": "^6.3.0" } }, "@babel/generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", - "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", "dev": true, "requires": { - "@babel/types": "^7.16.0", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "@babel/helper-environment-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", - "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", - "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" } }, "@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true }, "@babel/helpers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", - "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", "dev": true, "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" } }, "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -3439,55 +3457,55 @@ } }, "@babel/parser": { - "version": "7.16.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", - "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", "dev": true }, "@babel/runtime": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", - "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", + "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", - "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.5", - "@babel/types": "^7.16.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, @@ -3554,6 +3572,28 @@ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@jscad/csg": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.6.tgz", @@ -3700,9 +3740,9 @@ "integrity": "sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==" }, "@rollup/plugin-commonjs": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", - "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "version": "21.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.2.tgz", + "integrity": "sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -3901,24 +3941,18 @@ "dev": true }, "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", + "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001312", + "electron-to-chromium": "^1.4.71", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.2", "picocolors": "^1.0.0" } }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true - }, "caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -3938,21 +3972,22 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001286", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", - "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "version": "1.0.30001312", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", + "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", "dev": true }, "chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "dev": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", + "loupe": "^2.3.1", "pathval": "^1.1.1", "type-detect": "^4.0.5" } @@ -3994,9 +4029,9 @@ "dev": true }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -4081,9 +4116,9 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -4141,19 +4176,19 @@ "dev": true }, "dir-compare": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", - "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.0.0.tgz", + "integrity": "sha512-wC7thVKL3V656tO61rbEDE4LTeeYrUC2pAUL00AaXYghBhjjVNRyBlpH6POzb44ZuK23OSrqF6TbSC/QYeqfAg==", "dev": true, "requires": { - "buffer-equal": "^1.0.0", - "minimatch": "^3.0.4" + "minimatch": "^3.0.4", + "p-limit": "^3.1.0 " } }, "electron-to-chromium": { - "version": "1.4.19", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.19.tgz", - "integrity": "sha512-TeAjwsC/vhvxEtX/xN1JQUMkl+UrwKXlB4rwLyuLYVuBuRtqJJrU4Jy5pCVihMQg4m1ceZ3MEJ0yYuxHj8vC+w==", + "version": "1.4.73", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.73.tgz", + "integrity": "sha512-RlCffXkE/LliqfA5m29+dVDPB2r72y2D2egMMfIy3Le8ODrxjuZNVo4NIC2yPL01N4xb4nZQLwzi6Z5tGIGLnA==", "dev": true }, "emoji-regex": { @@ -4246,9 +4281,9 @@ } }, "fraction.js": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", - "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==" + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", + "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==" }, "fromentries": { "version": "1.3.2", @@ -4257,9 +4292,9 @@ "dev": true }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -4346,9 +4381,9 @@ } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, "graham_scan": { "version": "1.0.4", @@ -4436,9 +4471,9 @@ } }, "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, "requires": { "has": "^1.0.3" @@ -4540,14 +4575,6 @@ "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "istanbul-lib-processinfo": { @@ -4607,9 +4634,9 @@ } }, "istanbul-reports": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz", - "integrity": "sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -4708,6 +4735,15 @@ "is-unicode-supported": "^0.1.0" } }, + "loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -4724,14 +4760,6 @@ "dev": true, "requires": { "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "makerjs": { @@ -4750,15 +4778,15 @@ } }, "mathjs": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.0.0.tgz", - "integrity": "sha512-PZcQ73mVvVG2GZXvE47q+j7P3ALVxWUM51wTmlVX3F/3IJMLNziNIqStwyIDAO64ZGB8u3iFlQwxT7DIijtNlw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.1.1.tgz", + "integrity": "sha512-4QJP8a0Vy90ajFYESnITSluCrQBZnI+2XQhKJIRdo/6t95oupffS5qA4MTWnLGm5GsEZF179JSMjST7wCdZQkA==", "requires": { - "@babel/runtime": "^7.16.0", + "@babel/runtime": "^7.16.7", "complex.js": "^2.0.15", "decimal.js": "^10.3.1", "escape-latex": "^1.2.0", - "fraction.js": "^4.1.1", + "fraction.js": "^4.1.2", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", @@ -4766,9 +4794,9 @@ } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4780,32 +4808,32 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz", + "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", + "glob": "7.2.0", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "3.0.4", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.2.0", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -4817,20 +4845,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -4840,6 +4854,15 @@ "argparse": "^2.0.1" } }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -4883,9 +4906,9 @@ "dev": true }, "nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, "node-preload": { @@ -4898,9 +4921,9 @@ } }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", "dev": true }, "normalize-path": { @@ -5136,9 +5159,9 @@ "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pkg-dir": { @@ -5242,13 +5265,14 @@ "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-from": { @@ -5267,9 +5291,9 @@ } }, "rollup": { - "version": "2.61.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.61.1.tgz", - "integrity": "sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==", + "version": "2.68.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.68.0.tgz", + "integrity": "sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -5291,6 +5315,12 @@ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, "serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -5322,9 +5352,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "source-map": { @@ -5397,6 +5427,12 @@ "has-flag": "^4.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "sylvester": { "version": "git+ssh://git@github.com/kaosat-dev/node-sylvester.git#ce74d23a2092ae02a56b840ef70f5d61c54df409", "from": "sylvester@github:kaosat-dev/node-sylvester" @@ -5500,9 +5536,9 @@ "dev": true }, "workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", "dev": true }, "wrap-ansi": { @@ -5539,9 +5575,9 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yargs": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz", - "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -5553,9 +5589,9 @@ }, "dependencies": { "yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==" + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" } } }, @@ -5578,9 +5614,9 @@ }, "dependencies": { "camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "decamelize": { diff --git a/package.json b/package.json index e2c9a2b..5bac14a 100644 --- a/package.json +++ b/package.json @@ -16,23 +16,23 @@ }, "dependencies": { "@jscad/openjscad": "github:ergogen/oldjscad", - "fs-extra": "^10.0.0", - "js-yaml": "^3.14.0", + "fs-extra": "^10.0.1", + "js-yaml": "^3.14.1", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", - "mathjs": "^10.0.0", - "yargs": "^17.3.0" + "mathjs": "^10.1.1", + "yargs": "^17.3.1" }, "devDependencies": { - "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-commonjs": "^21.0.2", "@rollup/plugin-json": "^4.1.0", - "chai": "^4.3.4", + "chai": "^4.3.6", "chai-as-promised": "^7.1.1", - "dir-compare": "^3.3.0", + "dir-compare": "^4.0.0", "glob": "^7.2.0", - "mocha": "^9.1.3", + "mocha": "^9.2.1", "nyc": "^15.1.0", - "rollup": "^2.61.1" + "rollup": "^2.68.0" }, "nyc": { "all": true, diff --git a/roadmap.md b/roadmap.md index 547f0ad..a7c47d7 100644 --- a/roadmap.md +++ b/roadmap.md @@ -11,7 +11,6 @@ - Collapse params/nets/anchors into a single hierarchy from the user's POV - Add per-footprint mirror support - Add some way for footprints to be able to "resist" the mirroring-related special treatment of negative X shift, rotation, etc. -- Add auto-bind - Merge, generalize, uniform-ize and externalize footprints! - Separate npm package for dependency, onnx-like incremental opset versioning - Template for creating them, built-in variables they can use, documentation, external links, etc. @@ -49,6 +48,7 @@ ### Patch +- YAML lib v4 update - breaking changes in how undefined is handled! - Prevent double mirroring (see discord "mirror_mirror_") - Check unexpected keys at top level, too - Better error handling for the fillet option? From d505b19a0f330194187e0e489179b41938583566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 27 Feb 2022 20:45:53 +0100 Subject: [PATCH 031/120] Changelog started --- changelog.md | 195 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 changelog.md diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..5a6bc84 --- /dev/null +++ b/changelog.md @@ -0,0 +1,195 @@ +# 4.0.0 (2022-??-??) + +## :boom: Breaking Changes +## :seedling: Enhancements +## :skull: Bugfixes +## :wrench: Other + +* fdc2adf - Dependency and roadmap housecleaning (2022-02-27) +* e13927d - Make reference dumping easier during testing (2022-02-27) +* b928cbd - Implement a simple autobind (2022-02-27) +* d23bd71 - Support orient/rotate towards other points (2022-02-27) +* 6dc6b5d - Anchor recursivization (2022-02-27) +* b8c71be - Improve readme (2022-01-24) +* cff15dd - Add missing bbox test (2022-01-23) +* d512983 - More flexible semver handling (2022-01-23) +* e0f5c91 - Fix rollup build warning (2022-01-23) +* 06d2ae4 - Switch to handrolled semver implementation (2022-01-23) +* 2b98b50 - Support string templating for key-level attributes (2022-01-22) +* 6225013 - Indicate dev version in package.json (2022-01-20) +* 7f5e5e7 - Roadmap update (2022-01-18) +* 28d076e - Remove accidentally added folder (2022-01-16) +* d6f8323 - Outlines rewrite actually done (2022-01-16) +* 4844a04 - Outlines rewrite theoretically done (2022-01-11) +* df7b76c - Outlines rewrite, part 2 (2022-01-10) +* 6504b2b - Outlines rewrite in progress (2022-01-09) +* bd6b5a0 - Add filter tests (2022-01-08) +* a7f333c - Filter implementation progress (2022-01-03) +* 534ac4b - Filter implementation started (2021-12-26) +* e48631f - Add key-level orient (2021-12-25) +* f2bd0d2 - Roadmap update (2021-12-18) +* 2c18902 - Simplify the names in individual point "zones" (2021-12-18) +* 9ee099b - Minor test adjustments (2021-12-18) +* 0ed29e7 - Place rectangles by their centers (2021-12-18) +* 73045e4 - Move column-level attributes to key-level (2021-12-18) + + + + + + + +# 3.1.2 (2022-01-20) + +* 86c00eb - (tag: v3.1.2, origin/master, backup/master, master) Bump patch version (2022-01-20) +* 3570be2 - Delete old docs (2022-01-20) +* f326594 - De-dupe readme, point usage to docs (2022-01-20) + + + +# 3.1.1 (2022-01-14) + +* 47d15c0 - (tag: v3.1.1) Hotfix parameterization (2022-01-14) + + +# 3.1.0 (2021-12-15) + +* 488fba0 - (tag: v3.1.0) 3.1.0 (2021-12-15) +* f16ccd4 - Refresh roadmap (2021-12-15) +* 21cfc1f - Allow glue opt-out, even when bound (2021-12-15) +* c46a0bc - Add U for 19.05 spacing, closes #48 (2021-12-15) +* 3745cf3 - Parameterize PCB component reference hiding (2021-12-15) +* 13052cd - PCB metadata propagation (2021-12-15) +* 90db02f - Roadmap update (2021-12-15) +* 3e0dc84 - Support semver checks (2021-12-15) + + +# 3.0.3 (2021-12-13) + +* d5ebd70 - (tag: v3.0.3) 3.0.3 (2021-12-13) +* e45e563 - Further dependency restructure (2021-12-13) + + + +# 3.0.2 (2021-12-13) + +* 96c7caa - (tag: v3.0.2) 3.0.2 (2021-12-13) +* 16c9243 - Move custom dependencies to ergogen org + fix metadata (2021-12-13) +* 5046667 - Suppress npm warnings (2021-12-13) +* e2535da - Update dependencies (2021-12-13) +* d193af6 - Add fresh TODO items, change to gitflow (2021-12-12) + +# 3.0.1 (2021-12-12) + +* 9a1f9ec - (tag: v3.0.1) 3.0.1 (2021-12-12) +* 16f6b81 - Fillet all outline chains, closes #34 (2021-12-12) +* 8490f14 - Add const in scrollwheel footprint (2021-08-16) +* 21e173e - Make spread: 0 possible (2021-08-13) +* 38a8fc5 - Anchor affect bugfix, partially fixes #33 (2021-12-12) +* 483f214 - Array unnest bugfix, fixes #50 (2021-12-12) +* e58b80c - Redirect readme links to new domain (2021-11-27) +* e29613d - Dump accumulated TODOs (2021-11-27) +* 0ec16db - Minor fix for mirrored anchor rotations (2021-11-27) +* a593f61 - Fixed rotary encoder footprint (2021-11-07) +* 68102e8 - Fix ReferenceError: *_unit is not defined (2021-09-03) +* bf2dee6 - docs(readme): fix typo in web ui url link (2021-08-08) +* ad5ac9c - Visualization fix (2021-07-25) + +# 3.0.0 (2021-07-21) + +* 0658057 - (tag: v3.0.0) 3.0.0 (2021-07-21) +* fa850a6 - YAML-ification and minor output restructure (2021-07-21) +* 282e117 - Web release prep (2021-07-21) +* 67e01ed - Base key-level defaults around `u` (2021-07-18) +* 9bdcd36 - Some outline testing (2021-07-18) +* 26128f8 - Support full anchors in outline shapes (2021-07-18) +* 677fae0 - Add roadmap (2021-07-18) +* b159cfa - Further testing (2021-07-18) +* 4105718 - Complete CLI testing (2021-07-17) +* 4d88dac - End-to-end CLI tests (2021-07-17) +* 1f3ecb5 - Improved interface testing (2021-07-16) +* 7d841b2 - Dependency updates (2021-07-16) +* 98d7f66 - Make old jscad stuff audit friendly (2021-07-16) +* 58cadde - Minor case fix + test (2021-07-16) +* f955aac - Support KLE to PCB metadata and nets (2021-07-16) +* cd0ae6d - Smarter dump test switch (2021-07-16) +* b43b719 - Auto-debug when output would be empty (2021-07-16) +* bc75781 - Adjust tests for async interface (2021-07-15) +* 1cb9fdc - Basic KLE support (2021-07-15) +* d09b3fd - Smarter dump switch for the test runner, reference adjustments (2021-07-14) +* 42a3e2d - CLI and output restructure, SVG/DXF/STL integration (2021-07-14) +* c49881c - Remove leftover debug statements (2021-07-11) +* c12e8d2 - Update footprints to match new structure (2021-07-11) +* fe30b91 - PCB net and parameter overhaul (2021-07-11) +* 452d7c1 - Units separated to their own block, and properly tested (2021-07-11) +* 71efdbe - Test switch overhaul (2021-07-11) +* ea12df2 - Fix typo (2021-07-11) +* 2425b06 - Package audit (2021-07-06) +* 2f6b9ab - Added new footprints for OLEDs, jumpers, and Omron B3F-4055 switches (2021-07-06) +* a431bc4 - Added documentation for switch footprints (2021-07-06) +* ee43a93 - Added keycaps option to display mx or choc keycaps on Dwgs.User, and fixed mx footprint (2021-06-12) +* 1ff7e07 - Added new switch footprints, updated reversibility functionality, integrated hotswap footprints, added orientation to promicro, alphabetized index, and added net and paramter documentation (2021-05-23) +* 3e78e6e - Add files via upload (2021-04-26) +* 5a8a66b - Add files via upload (2021-04-26) +* 9baae15 - Add unit test for assertions (2021-05-22) +* c7b86c7 - Add unit test for anchors (2021-05-22) +* 76bb071 - Add footprints to coverage, streamline coverage script call (2021-05-22) +* 7f8b1c4 - Add basic interface tests (2021-05-16) +* 5cd8985 - Add unit test for operation parsing (2021-05-16) +* 2cae521 - Add unit test for utils (2021-05-16) +* 2d6ad02 - Add unit test for point class (2021-05-16) +* 806a7ec - Package audit (2021-05-16) +* de0f61b - Filleting, bevel fix, poly mirroring (2021-04-18) +* 18a76e5 - Added p.rot param to pads (#20) (2021-04-18) +* 5754824 - fixed net ref to pad (2021-03-22) +* c0eea2a - Fix makerjs dep and audit (2021-04-01) + + + + + +# 2.0.0 (2021-03-15) + +## :boom: Breaking Changes + +- Change indirection and preprocessing symbols +- Rename `reset` footprint to `button` + +## :seedling: Enhancements + +- Added support for variables and/or units + - String typed math formulas can now be used anywhere numbers are expected + - For example, `spread: 19` is the same as `spread: u` +- Added support for nested (a.k.a. deep) key notations + - So `zones: {columns: {key: {flag: true}}}` can now be simplified to `zones.columns.key.flag: true` +- Added support for parametric declarations + - ... +- Added MX and choc hotswap footprints +- Added rotary encoder footprint - [**@adt**](https://github.com/adt) + +## :skull: Bugfixes + +- Various footprint fixes - [**@adt**](https://github.com/adt) +- Documentation typos, fixes, examples - [**@Albert-IV**](https://github.com/Albert-IV) , [**@FanchGadjo**](https://github.com/FanchGadjo) + +## :wrench: Other + +- Lots and lots of structural refactoring, housecleaning, etc. +- Testing infrastructure improvements +- Better glue-related error messages +- Propagate point visualization to the webui +- Output SVG alongside DXF in debug mode - [**@brow**](https://github.com/brow) +- Added part no. and updated URL for `reset` footprint - [**@brow**](https://github.com/brow) + + + + + + + +# 1.0.0 (2020-10-18) + +## :sunglasses: Initial release! + +- Ergogen declares its independence from the [Absolem](https://github.com/mrzealot/absolem) project +- Thanks to [**Merlin04**](https://github.com/Merlin04) for an initial JSON schema \ No newline at end of file From 891f55ace1ce900bffabffb35faed69d412b26ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Tue, 5 Apr 2022 20:35:12 +0200 Subject: [PATCH 032/120] Roadmap update --- roadmap.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/roadmap.md b/roadmap.md index a7c47d7..25699b5 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,6 +6,10 @@ ### Major +- key-level access to full anchors + - this could provide extra variables `padding`, `spread`, `splay` for custom layout purposes + - make row anchors cumulative, too (like columns), so fingers arcs and other edits can happen +- remove `_default` suffix for only column keys (like for single point zones) - Restructure pcb point/footprint filtering - Use the same `what`/`where` infrastructure as outlines - Collapse params/nets/anchors into a single hierarchy from the user's POV @@ -14,6 +18,7 @@ - Merge, generalize, uniform-ize and externalize footprints! - Separate npm package for dependency, onnx-like incremental opset versioning - Template for creating them, built-in variables they can use, documentation, external links, etc. + - Add access to whole set of points + filtering logic, so they can implement their own connection logic as well maybe (see daisy chaining) - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. - Rename class to designator in this context (https://en.wikipedia.org/wiki/Reference_designator#Designators) - Include raw kicad footprint integrations @@ -44,6 +49,8 @@ - Look into kicad 5 vs. 6 output format - Update json schema and add syntax highlight to editors - Support different netclasses +- `round`, `pointy` and `beveled` symbolic constants for expand joint types + - also, string shorthands like `3)`, `5>` and `10]` ### Patch @@ -54,7 +61,7 @@ - Better error handling for the fillet option? - Integration and end2end tests to get coverage to 100% - Add custom fillet implementation that considers line-line connections only? - +- Empty nets should be allowed (to mean unconnected) ## WEBUI From 8748a37c041144ca906716253dd9e5ddaa814555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 10 Apr 2022 22:26:28 +0200 Subject: [PATCH 033/120] Yet another roadmap update --- roadmap.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/roadmap.md b/roadmap.md index 25699b5..ddc1433 100644 --- a/roadmap.md +++ b/roadmap.md @@ -27,6 +27,9 @@ ### Minor +- Shift/rotate/scale for outline elements before layout +- Allow footprints to publish outlines + - Make these usable in the `outlines` section through a new `what` - 3D orient for cases - Post-process anchor for global (post-mirror!) orient/shift/rotate for everything - Even more extreme anchor stuff @@ -61,6 +64,7 @@ - Better error handling for the fillet option? - Integration and end2end tests to get coverage to 100% - Add custom fillet implementation that considers line-line connections only? +- Add nicer filleting error messages when makerjs dies for some reason - Empty nets should be allowed (to mean unconnected) From c6f4832ee4f27ef55cbfee0b556a6297425f0e07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 16 Apr 2022 12:44:55 +0200 Subject: [PATCH 034/120] Single key column name simplification --- roadmap.md | 12 ++++---- src/points.js | 17 ++++++----- src/utils.js | 2 +- test/points/default.yaml | 6 +++- test/points/default___demo_dxf.dxf | 48 ++++++++++++++++++++++++++++++ test/points/default___points.json | 46 ++++++++++++++++++++++++++++ 6 files changed, 116 insertions(+), 15 deletions(-) diff --git a/roadmap.md b/roadmap.md index ddc1433..aa7d531 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,27 +6,27 @@ ### Major -- key-level access to full anchors +- Gut standalone 3d output, only different scripts for different integrations +- Key-level access to full anchors - this could provide extra variables `padding`, `spread`, `splay` for custom layout purposes - make row anchors cumulative, too (like columns), so fingers arcs and other edits can happen -- remove `_default` suffix for only column keys (like for single point zones) - Restructure pcb point/footprint filtering - Use the same `what`/`where` infrastructure as outlines - Collapse params/nets/anchors into a single hierarchy from the user's POV - Add per-footprint mirror support - Add some way for footprints to be able to "resist" the mirroring-related special treatment of negative X shift, rotation, etc. - Merge, generalize, uniform-ize and externalize footprints! - - Separate npm package for dependency, onnx-like incremental opset versioning + - onnx-like incremental opset versioning - Template for creating them, built-in variables they can use, documentation, external links, etc. - Add access to whole set of points + filtering logic, so they can implement their own connection logic as well maybe (see daisy chaining) - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. - Rename class to designator in this context (https://en.wikipedia.org/wiki/Reference_designator#Designators) - - Include raw kicad footprint integrations - - pull torik's script to be able to convert raw kicad footprints into positionable ergogen ones - - have a `dummy` footprint which can just be updated from schematic ### Minor +- Include raw kicad footprint integrations + - pull torik's script to be able to convert raw kicad footprints into positionable ergogen ones + - have a `dummy` footprint which can just be updated from schematic - Shift/rotate/scale for outline elements before layout - Allow footprints to publish outlines - Make these usable in the `outlines` section through a new `what` diff --git a/src/points.js b/src/points.js index 0d48cc8..def23a5 100644 --- a/src/points.js +++ b/src/points.js @@ -294,13 +294,16 @@ exports.parse = (config, units) => { // creating new points let new_points = render_zone(zone_name, zone, anchor, global_key, units) - // simplifying the names in individual point "zones" - const new_keys = Object.keys(new_points) - const individual_key = `${zone_name}_default_default` - if (new_keys.length == 1 && new_keys[0] == individual_key) { - new_points[zone_name] = new_points[individual_key] - new_points[zone_name].meta.name = zone_name - delete new_points[individual_key] + // simplifying the names in individual point "zones" and single-key columns + while (Object.keys(new_points).some(k => k.endsWith('_default'))) { + for (const key of Object.keys(new_points)) { + if (key.endsWith('_default')) { + const new_key = key.slice(0, -8) + new_points[new_key] = new_points[key] + new_points[new_key].meta.name = new_key + delete new_points[key] + } + } } // adjusting new points diff --git a/src/utils.js b/src/utils.js index 2acf1b0..de9cb5f 100644 --- a/src/utils.js +++ b/src/utils.js @@ -26,7 +26,7 @@ exports.template = (str, vals={}) => { const replacement = deep(vals, match[1]) || '' res = res.substring(0, match.index + shift) + replacement - + res.substring(match.index + match[0].length) + + res.substring(match.index + shift + match[0].length) shift += replacement.length - match[0].length } return res diff --git a/test/points/default.yaml b/test/points/default.yaml index f767592..71c99b6 100644 --- a/test/points/default.yaml +++ b/test/points/default.yaml @@ -1 +1,5 @@ -points.zones.matrix: \ No newline at end of file +points.zones: + matrix: + single_key_column: + columns: + named: \ No newline at end of file diff --git a/test/points/default___demo_dxf.dxf b/test/points/default___demo_dxf.dxf index 8082f61..d28ab98 100644 --- a/test/points/default___demo_dxf.dxf +++ b/test/points/default___demo_dxf.dxf @@ -93,6 +93,54 @@ LINE 21 9 0 +LINE +8 +0 +10 +-9 +20 +9 +11 +9 +21 +9 +0 +LINE +8 +0 +10 +9 +20 +9 +11 +9 +21 +-9 +0 +LINE +8 +0 +10 +9 +20 +-9 +11 +-9 +21 +-9 +0 +LINE +8 +0 +10 +-9 +20 +-9 +11 +-9 +21 +9 +0 ENDSEC 0 EOF \ No newline at end of file diff --git a/test/points/default___points.json b/test/points/default___points.json index 667bfc4..c4ad48d 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -41,5 +41,51 @@ 0 ] } + }, + "single_key_column_named": { + "x": 0, + "y": 0, + "r": 0, + "meta": { + "stagger": 0, + "spread": 0, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "named_default", + "name": "single_key_column_named", + "zone": { + "columns": { + "named": null + }, + "name": "single_key_column" + }, + "col": { + "rows": {}, + "key": {}, + "name": "named" + }, + "row": "default", + "bind": [ + 0, + 0, + 0, + 0 + ] + } } } From bbab2838505dd1cb3550fb358519d062957b892c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 16 Apr 2022 13:12:51 +0200 Subject: [PATCH 035/120] 3D de-standalone-ification --- package.json | 1 - rollup.config.js | 5 +- src/cli.js | 2 +- src/ergogen.js | 4 +- src/io.js | 16 ----- test/cases/cube___cases_cube_jscad.jscad | 36 ++++++++++ test/cases/cube___cases_cube_stl.stl | 86 ------------------------ test/cli/big/log | 2 +- test/cli/big/reference/cases/_export.stl | 86 ------------------------ test/cli/big/reference/cases/export.stl | 86 ------------------------ test/cli/medium/log | 2 +- test/cli/minimal/log | 2 +- 12 files changed, 44 insertions(+), 284 deletions(-) create mode 100644 test/cases/cube___cases_cube_jscad.jscad delete mode 100644 test/cases/cube___cases_cube_stl.stl delete mode 100644 test/cli/big/reference/cases/_export.stl delete mode 100644 test/cli/big/reference/cases/export.stl diff --git a/package.json b/package.json index 5bac14a..4e76399 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "coverage": "nyc --reporter=html --reporter=text npm test" }, "dependencies": { - "@jscad/openjscad": "github:ergogen/oldjscad", "fs-extra": "^10.0.1", "js-yaml": "^3.14.1", "kle-serial": "github:ergogen/kle-serial#ergogen", diff --git a/rollup.config.js b/rollup.config.js index 8a9817b..3e71d16 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -4,7 +4,7 @@ import commonjs from '@rollup/plugin-commonjs' export default { input: 'src/ergogen.js', - external: ['makerjs', 'js-yaml', 'mathjs', 'kle-serial', '@jscad/openjscad'], + external: ['makerjs', 'js-yaml', 'mathjs', 'kle-serial'], output: { name: 'ergogen', file: 'dist/ergogen.js', @@ -14,8 +14,7 @@ export default { 'makerjs': 'makerjs', 'js-yaml': 'jsyaml', 'mathjs': 'math', - 'kle-serial': 'kle', - '@jscad/openjscad': 'myjscad' + 'kle-serial': 'kle' } }, plugins: [ diff --git a/src/cli.js b/src/cli.js index a8f4db4..cff5116 100755 --- a/src/cli.js +++ b/src/cli.js @@ -81,7 +81,7 @@ const composite = (data, rel) => { fs.mkdirpSync(path.dirname(abs)) fs.writeFileSync(abs + '.yaml', yaml.dump(data.yaml, {indent: 4})) } - for (const format of ['svg', 'dxf', 'jscad', 'stl']) { + for (const format of ['svg', 'dxf', 'jscad']) { if (data[format]) { fs.mkdirpSync(path.dirname(abs)) fs.writeFileSync(abs + '.' + format, data[format]) diff --git a/src/ergogen.js b/src/ergogen.js index 8d548c7..bef7755 100644 --- a/src/ergogen.js +++ b/src/ergogen.js @@ -67,12 +67,12 @@ const process = async (raw, debug=false, logger=()=>{}) => { empty = false } - logger('Extruding cases...') + logger('Modeling cases...') const cases = cases_lib.parse(config.cases || {}, outlines, units) results.cases = {} for (const [case_name, case_script] of Object.entries(cases)) { if (!debug && case_name.startsWith('_')) continue - results.cases[case_name] = await io.threedee(case_script, debug) + results.cases[case_name] = {jscad: case_script} empty = false } diff --git a/src/io.js b/src/io.js index ea3e8fc..60e91fc 100644 --- a/src/io.js +++ b/src/io.js @@ -1,6 +1,5 @@ const yaml = require('js-yaml') const makerjs = require('makerjs') -const jscad = require('@jscad/openjscad') const u = require('./utils') const a = require('./assert') @@ -65,18 +64,3 @@ exports.twodee = (model, debug) => { } return result } - -exports.threedee = async (script, debug) => { - const compiled = await new Promise((resolve, reject) => { - jscad.compile(script, {}).then(compiled => { - resolve(compiled) - }) - }) - const result = { - stl: jscad.generateOutput('stla', compiled).asBuffer().toString() - } - if (debug) { - result.jscad = script - } - return result -} diff --git a/test/cases/cube___cases_cube_jscad.jscad b/test/cases/cube___cases_cube_jscad.jscad new file mode 100644 index 0000000..bb9cda8 --- /dev/null +++ b/test/cases/cube___cases_cube_jscad.jscad @@ -0,0 +1,36 @@ +function square_outline_fn(){ + return new CSG.Path2D([[-2.5,-2.5],[2.5,-2.5]]).appendPoint([2.5,2.5]).appendPoint([-2.5,2.5]).appendPoint([-2.5,-2.5]).close().innerToCAG() +.extrude({ offset: [0, 0, 5] }); +} + + + + + function cube_case_fn() { + + + // creating part 0 of case cube + let cube__part_0 = square_outline_fn(); + + // make sure that rotations are relative + let cube__part_0_bounds = cube__part_0.getBounds(); + let cube__part_0_x = cube__part_0_bounds[0].x + (cube__part_0_bounds[1].x - cube__part_0_bounds[0].x) / 2 + let cube__part_0_y = cube__part_0_bounds[0].y + (cube__part_0_bounds[1].y - cube__part_0_bounds[0].y) / 2 + cube__part_0 = translate([-cube__part_0_x, -cube__part_0_y, 0], cube__part_0); + cube__part_0 = rotate([0,0,0], cube__part_0); + cube__part_0 = translate([cube__part_0_x, cube__part_0_y, 0], cube__part_0); + + cube__part_0 = translate([0,0,0], cube__part_0); + let result = cube__part_0; + + + return result; + } + + + + function main() { + return cube_case_fn(); + } + + \ No newline at end of file diff --git a/test/cases/cube___cases_cube_stl.stl b/test/cases/cube___cases_cube_stl.stl deleted file mode 100644 index 08f24dd..0000000 --- a/test/cases/cube___cases_cube_stl.stl +++ /dev/null @@ -1,86 +0,0 @@ -solid csg.js -facet normal 0 0 -1 -outer loop -vertex -2.5 2.5 0 -vertex 2.5 2.5 0 -vertex 2.5 -2.5 0 -endloop -endfacet -facet normal 0 0 -1 -outer loop -vertex -2.5 2.5 0 -vertex 2.5 -2.5 0 -vertex -2.5 -2.5 0 -endloop -endfacet -facet normal 0 0 1 -outer loop -vertex -2.5 2.5 5 -vertex -2.5 -2.5 5 -vertex 2.5 -2.5 5 -endloop -endfacet -facet normal 0 0 1 -outer loop -vertex -2.5 2.5 5 -vertex 2.5 -2.5 5 -vertex 2.5 2.5 5 -endloop -endfacet -facet normal 0 -1 0 -outer loop -vertex 2.5 -2.5 0 -vertex 2.5 -2.5 5 -vertex -2.5 -2.5 5 -endloop -endfacet -facet normal 0 -1 0 -outer loop -vertex 2.5 -2.5 0 -vertex -2.5 -2.5 5 -vertex -2.5 -2.5 0 -endloop -endfacet -facet normal 1 0 0 -outer loop -vertex 2.5 2.5 0 -vertex 2.5 2.5 5 -vertex 2.5 -2.5 5 -endloop -endfacet -facet normal 1 0 0 -outer loop -vertex 2.5 2.5 0 -vertex 2.5 -2.5 5 -vertex 2.5 -2.5 0 -endloop -endfacet -facet normal 0 1 0 -outer loop -vertex 2.5 2.5 5 -vertex 2.5 2.5 0 -vertex -2.5 2.5 0 -endloop -endfacet -facet normal 0 1 0 -outer loop -vertex 2.5 2.5 5 -vertex -2.5 2.5 0 -vertex -2.5 2.5 5 -endloop -endfacet -facet normal -1 0 0 -outer loop -vertex -2.5 2.5 5 -vertex -2.5 2.5 0 -vertex -2.5 -2.5 0 -endloop -endfacet -facet normal -1 0 0 -outer loop -vertex -2.5 2.5 5 -vertex -2.5 -2.5 0 -vertex -2.5 -2.5 5 -endloop -endfacet -endsolid csg.js diff --git a/test/cli/big/log b/test/cli/big/log index a44a320..4c9a55a 100644 --- a/test/cli/big/log +++ b/test/cli/big/log @@ -5,7 +5,7 @@ Preprocessing input... Calculating variables... Parsing points... Generating outlines... -Extruding cases... +Modeling cases... Scaffolding PCBs... Cleaning output folder... Writing output to disk... diff --git a/test/cli/big/reference/cases/_export.stl b/test/cli/big/reference/cases/_export.stl deleted file mode 100644 index 0cdcee2..0000000 --- a/test/cli/big/reference/cases/_export.stl +++ /dev/null @@ -1,86 +0,0 @@ -solid csg.js -facet normal 0 0 -1 -outer loop -vertex -9 9 0 -vertex 9 9 0 -vertex 9 -9 0 -endloop -endfacet -facet normal 0 0 -1 -outer loop -vertex -9 9 0 -vertex 9 -9 0 -vertex -9 -9 0 -endloop -endfacet -facet normal 0 0 1 -outer loop -vertex -9 9 1 -vertex -9 -9 1 -vertex 9 -9 1 -endloop -endfacet -facet normal 0 0 1 -outer loop -vertex -9 9 1 -vertex 9 -9 1 -vertex 9 9 1 -endloop -endfacet -facet normal 0 -1 0 -outer loop -vertex 9 -9 0 -vertex 9 -9 1 -vertex -9 -9 1 -endloop -endfacet -facet normal 0 -1 0 -outer loop -vertex 9 -9 0 -vertex -9 -9 1 -vertex -9 -9 0 -endloop -endfacet -facet normal 1 0 0 -outer loop -vertex 9 9 0 -vertex 9 9 1 -vertex 9 -9 1 -endloop -endfacet -facet normal 1 0 0 -outer loop -vertex 9 9 0 -vertex 9 -9 1 -vertex 9 -9 0 -endloop -endfacet -facet normal 0 1 0 -outer loop -vertex 9 9 1 -vertex 9 9 0 -vertex -9 9 0 -endloop -endfacet -facet normal 0 1 0 -outer loop -vertex 9 9 1 -vertex -9 9 0 -vertex -9 9 1 -endloop -endfacet -facet normal -1 0 0 -outer loop -vertex -9 9 1 -vertex -9 9 0 -vertex -9 -9 0 -endloop -endfacet -facet normal -1 0 0 -outer loop -vertex -9 9 1 -vertex -9 -9 0 -vertex -9 -9 1 -endloop -endfacet -endsolid csg.js diff --git a/test/cli/big/reference/cases/export.stl b/test/cli/big/reference/cases/export.stl deleted file mode 100644 index 0cdcee2..0000000 --- a/test/cli/big/reference/cases/export.stl +++ /dev/null @@ -1,86 +0,0 @@ -solid csg.js -facet normal 0 0 -1 -outer loop -vertex -9 9 0 -vertex 9 9 0 -vertex 9 -9 0 -endloop -endfacet -facet normal 0 0 -1 -outer loop -vertex -9 9 0 -vertex 9 -9 0 -vertex -9 -9 0 -endloop -endfacet -facet normal 0 0 1 -outer loop -vertex -9 9 1 -vertex -9 -9 1 -vertex 9 -9 1 -endloop -endfacet -facet normal 0 0 1 -outer loop -vertex -9 9 1 -vertex 9 -9 1 -vertex 9 9 1 -endloop -endfacet -facet normal 0 -1 0 -outer loop -vertex 9 -9 0 -vertex 9 -9 1 -vertex -9 -9 1 -endloop -endfacet -facet normal 0 -1 0 -outer loop -vertex 9 -9 0 -vertex -9 -9 1 -vertex -9 -9 0 -endloop -endfacet -facet normal 1 0 0 -outer loop -vertex 9 9 0 -vertex 9 9 1 -vertex 9 -9 1 -endloop -endfacet -facet normal 1 0 0 -outer loop -vertex 9 9 0 -vertex 9 -9 1 -vertex 9 -9 0 -endloop -endfacet -facet normal 0 1 0 -outer loop -vertex 9 9 1 -vertex 9 9 0 -vertex -9 9 0 -endloop -endfacet -facet normal 0 1 0 -outer loop -vertex 9 9 1 -vertex -9 9 0 -vertex -9 9 1 -endloop -endfacet -facet normal -1 0 0 -outer loop -vertex -9 9 1 -vertex -9 9 0 -vertex -9 -9 0 -endloop -endfacet -facet normal -1 0 0 -outer loop -vertex -9 9 1 -vertex -9 -9 0 -vertex -9 -9 1 -endloop -endfacet -endsolid csg.js diff --git a/test/cli/medium/log b/test/cli/medium/log index ba78a5c..6e2de58 100644 --- a/test/cli/medium/log +++ b/test/cli/medium/log @@ -5,7 +5,7 @@ Preprocessing input... Calculating variables... Parsing points... Generating outlines... -Extruding cases... +Modeling cases... Scaffolding PCBs... Writing output to disk... Done. diff --git a/test/cli/minimal/log b/test/cli/minimal/log index 72c917f..f0d6488 100644 --- a/test/cli/minimal/log +++ b/test/cli/minimal/log @@ -5,7 +5,7 @@ Preprocessing input... Calculating variables... Parsing points... Generating outlines... -Extruding cases... +Modeling cases... Scaffolding PCBs... Output would be empty, rerunning in debug mode... Writing output to disk... From 5bfa3b593239e3e3913f4f56bc37dfa2de74ee79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 16 Apr 2022 13:13:16 +0200 Subject: [PATCH 036/120] Package lock update + vulnerability fix --- package-lock.json | 1048 +++++++++++---------------------------------- 1 file changed, 250 insertions(+), 798 deletions(-) diff --git a/package-lock.json b/package-lock.json index 82dff16..c52b1dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "4.0.0-develop", "license": "MIT", "dependencies": { - "@jscad/openjscad": "github:ergogen/oldjscad", "fs-extra": "^10.0.1", "js-yaml": "^3.14.1", "kle-serial": "github:ergogen/kle-serial#ergogen", @@ -57,34 +56,34 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", - "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.3", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "engines": { @@ -96,9 +95,9 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "dev": true, "dependencies": { "@babel/types": "^7.17.0", @@ -110,12 +109,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" @@ -140,26 +139,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -190,14 +176,14 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", - "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", @@ -209,12 +195,12 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -251,13 +237,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dev": true, "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0" }, "engines": { @@ -265,9 +251,9 @@ } }, "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", @@ -350,9 +336,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -362,9 +348,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", - "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -387,18 +373,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.9", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", + "@babel/parser": "^7.17.9", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" @@ -527,166 +513,10 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@jscad/csg": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.6.tgz", - "integrity": "sha512-GoUXhTwO0L+Cxba8VfFFLGm+ECd0xZKoIAPpeUYsDiCVsIZ6XK+3GLgBgn5waeumQNh+H6WsHjMMRKXBrDBreA==", - "deprecated": "See @jscad/modeling" - }, - "node_modules/@jscad/dxf-serializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/dxf-serializer/-/dxf-serializer-0.0.4.tgz", - "integrity": "sha1-P7O3a2HmqYfiUIJ8SWNPAHNvasg=" - }, - "node_modules/@jscad/gcode-deserializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/gcode-deserializer/-/gcode-deserializer-0.0.4.tgz", - "integrity": "sha1-pdk+zvhGvzCllvUCHXs26mKhOic=" - }, - "node_modules/@jscad/io": { - "version": "0.3.7", - "resolved": "git+ssh://git@github.com/ergogen/oldjscadio.git#692cf142062208b0097b2d4852c30d6cc51eea8d", - "license": "MIT", - "dependencies": { - "@jscad/dxf-serializer": "^0.0.4", - "@jscad/gcode-deserializer": "^0.0.4", - "@jscad/io-utils": "^0.1.2", - "@jscad/json-deserializer": "^0.0.4", - "@jscad/json-serializer": "^0.0.5", - "@jscad/obj-deserializer": "^0.0.4", - "@jscad/stl-deserializer": "^0.1.2", - "@jscad/stl-serializer": "^0.0.6", - "@jscad/svg-deserializer": "^0.2.3", - "@jscad/svg-serializer": "^0.0.4" - } - }, - "node_modules/@jscad/io-utils": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", - "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==" - }, - "node_modules/@jscad/json-deserializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/json-deserializer/-/json-deserializer-0.0.4.tgz", - "integrity": "sha1-ffpQCUUoh5LgTlcaDCTxXFXuurA=", - "dependencies": { - "@jscad/csg": "0.3.6" - } - }, - "node_modules/@jscad/json-serializer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@jscad/json-serializer/-/json-serializer-0.0.5.tgz", - "integrity": "sha1-DEAQz7ZyntspQnJycvlB0TAZR7g=", - "dependencies": { - "@jscad/csg": "0.3.6", - "@jscad/io-utils": "^0.1.2" - } - }, - "node_modules/@jscad/obj-deserializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/obj-deserializer/-/obj-deserializer-0.0.4.tgz", - "integrity": "sha1-3LPPXMRyeKfPejW3azLq0NBE38M=" - }, - "node_modules/@jscad/openjscad": { - "version": "1.6.1", - "resolved": "git+ssh://git@github.com/ergogen/oldjscad.git#040637f3d8d4da0ad0a9ffdfe1a33a791c8008f4", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@jscad/csg": "0.3.6", - "@jscad/io": "github:ergogen/oldjscadio", - "@jscad/openscad-openjscad-translator": "0.0.10", - "@jscad/scad-api": "^0.5.1", - "astring": "^1.0.2", - "brace": "0.10.0", - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "most-gestures": "^0.3.0", - "webworkify": "^1.4.0" - }, - "bin": { - "openjscad": "src/cli/cli.js" - } - }, - "node_modules/@jscad/openscad-openjscad-translator": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/@jscad/openscad-openjscad-translator/-/openscad-openjscad-translator-0.0.10.tgz", - "integrity": "sha1-b1o9wlL9ILr1I6sRwfwqPdqlfns=", - "deprecated": "See @jscad/scad-deserializer", - "dependencies": { - "lodash": "^4.17.4", - "sylvester": "github:kaosat-dev/node-sylvester" - } - }, - "node_modules/@jscad/scad-api": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@jscad/scad-api/-/scad-api-0.5.1.tgz", - "integrity": "sha512-1BlfqcAf0xIicbaKU1bCOxHh0+aHJ7fBRY6r+7/e+0uMrfoqHoULGqkAZCwnftt0cPj5uAP8JSlyOinHKaFIJw==", - "deprecated": "See @jscad/modeling", - "dependencies": { - "@jscad/csg": "0.3.7" - } - }, - "node_modules/@jscad/scad-api/node_modules/@jscad/csg": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.7.tgz", - "integrity": "sha512-CuqKgXEZDH1FzbwQTdMWQ0FiEGi+LrP32tP6nW6rdWEEBjL6w19F3OrShD7SP8mK9IcqiuhgN9JcbWaiBswWlQ==", - "deprecated": "See @jscad/modeling" - }, - "node_modules/@jscad/stl-deserializer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@jscad/stl-deserializer/-/stl-deserializer-0.1.2.tgz", - "integrity": "sha1-P05QMMjBgf6Xwniz5pdOojemM4M=", - "dependencies": { - "@jscad/csg": "0.3.6", - "@jscad/io-utils": "^0.1.2" - } - }, - "node_modules/@jscad/stl-serializer": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.0.6.tgz", - "integrity": "sha1-OIDuOw2YzeYhpVg92GDcN6kAZtQ=", - "dependencies": { - "@jscad/io-utils": "^0.1.2" - } - }, - "node_modules/@jscad/svg-deserializer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@jscad/svg-deserializer/-/svg-deserializer-0.2.3.tgz", - "integrity": "sha1-HbFVKSax7J7yXLjYE0ryZfYOTSI=", - "dependencies": { - "@jscad/csg": "0.3.6", - "sax": "1.2.4" - } - }, - "node_modules/@jscad/svg-serializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/svg-serializer/-/svg-serializer-0.0.4.tgz", - "integrity": "sha1-uqYjfTPtbg96AS8rtgYTopXiUdE=", - "dependencies": { - "@jscad/csg": "0.3.6" - } - }, - "node_modules/@most/multicast": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@most/multicast/-/multicast-1.3.0.tgz", - "integrity": "sha512-DWH8AShgp5bXn+auGzf5tzPxvpmEvQJd0CNsApOci1LDF4eAEcnw4HQOr2Jaa+L92NbDYFKBSXxll+i7r1ikvw==", - "dependencies": { - "@most/prelude": "^1.4.0" - }, - "peerDependencies": { - "most": "^1.0.1" - } - }, - "node_modules/@most/prelude": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@most/prelude/-/prelude-1.8.0.tgz", - "integrity": "sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==" - }, "node_modules/@rollup/plugin-commonjs": { - "version": "21.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.2.tgz", - "integrity": "sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==", + "version": "21.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz", + "integrity": "sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -866,14 +696,6 @@ "node": "*" } }, - "node_modules/astring": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.1.tgz", - "integrity": "sha512-Aj3mbwVzj7Vve4I/v2JYOPFkCGM2YS7OqQTNSxmUR+LECRpokuPgAYghePgr6SALDo5bD5DlfbSaYjOzGJZOLQ==", - "bin": { - "astring": "bin/astring" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -894,14 +716,6 @@ "node": ">=8" } }, - "node_modules/brace": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/brace/-/brace-0.10.0.tgz", - "integrity": "sha1-7e9OubCSi6HuX3F//BV3SabdXXY=", - "dependencies": { - "w3c-blob": "0.0.1" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -931,13 +745,23 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", - "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001312", - "electron-to-chromium": "^1.4.71", + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", "escalade": "^3.1.1", "node-releases": "^2.0.2", "picocolors": "^1.0.0" @@ -947,10 +771,6 @@ }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/caching-transform": { @@ -978,14 +798,20 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001312", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", - "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/chai": { "version": "4.3.6", @@ -1131,9 +957,9 @@ "dev": true }, "node_modules/complex.js": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.15.tgz", - "integrity": "sha512-gDBvQU8IG139ZBQTSo2qvDFP+lANMGluM779csXOr6ny1NUtA3wkUnCFjlDNH/moAVfXtvClYt6G0zarFbtz5w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", + "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", "engines": { "node": "*" }, @@ -1232,17 +1058,6 @@ "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -1263,9 +1078,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.73", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.73.tgz", - "integrity": "sha512-RlCffXkE/LliqfA5m29+dVDPB2r72y2D2egMMfIy3Le8ODrxjuZNVo4NIC2yPL01N4xb4nZQLwzi6Z5tGIGLnA==", + "version": "1.4.111", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.111.tgz", + "integrity": "sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==", "dev": true }, "node_modules/emoji-regex": { @@ -1305,9 +1120,9 @@ } }, "node_modules/esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1316,14 +1131,6 @@ "node": ">=4" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -1398,9 +1205,9 @@ } }, "node_modules/fraction.js": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", - "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "engines": { "node": "*" }, @@ -1544,24 +1351,10 @@ "node": ">=4" } }, - "node_modules/globalthis": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", - "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "node_modules/graham_scan": { "version": "1.0.4", @@ -1927,18 +1720,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/js-yaml/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -1952,12 +1733,9 @@ } }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "bin": { "json5": "lib/cli.js" }, @@ -2005,11 +1783,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -2042,12 +1815,12 @@ } }, "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "node_modules/make-dir": { @@ -2082,19 +1855,19 @@ } }, "node_modules/mathjs": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.1.1.tgz", - "integrity": "sha512-4QJP8a0Vy90ajFYESnITSluCrQBZnI+2XQhKJIRdo/6t95oupffS5qA4MTWnLGm5GsEZF179JSMjST7wCdZQkA==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.4.3.tgz", + "integrity": "sha512-C50lWorCOplBec9Ik5fzhHuOx4G4+mtdz3r1G2I1/r8yj+CpYFXLXNqTdg59oKmIF1tKcIzpxlC4s2dGL7f3pg==", "dependencies": { - "@babel/runtime": "^7.16.7", - "complex.js": "^2.0.15", + "@babel/runtime": "^7.17.8", + "complex.js": "^2.1.0", "decimal.js": "^10.3.1", "escape-latex": "^1.2.0", - "fraction.js": "^4.1.2", + "fraction.js": "^4.2.0", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", - "typed-function": "^2.0.0" + "typed-function": "^2.1.0" }, "bin": { "mathjs": "bin/cli.js" @@ -2115,15 +1888,10 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "node_modules/mocha": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz", - "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", "dev": true, "dependencies": { "@ungap/promise-all-settled": "1.1.2", @@ -2139,9 +1907,9 @@ "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "4.2.1", "ms": "2.1.3", - "nanoid": "3.2.0", + "nanoid": "3.3.1", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -2182,15 +1950,15 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, "engines": { - "node": "*" + "node": ">=10" } }, "node_modules/mocha/node_modules/yargs": { @@ -2211,25 +1979,6 @@ "node": ">=10" } }, - "node_modules/most": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/most/-/most-1.9.0.tgz", - "integrity": "sha512-M7yHMcMGaclzEL6eg8Yh8PlAsaWfL/oSThF4+ZuWKM5CKXcbzmLh+qESwgZFzMKHJ+iVJwb28yFvDEOobI653w==", - "dependencies": { - "@most/multicast": "^1.2.5", - "@most/prelude": "^1.4.0", - "globalthis": "^1.0.1", - "symbol-observable": "^2.0.3" - } - }, - "node_modules/most-gestures": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/most-gestures/-/most-gestures-0.3.0.tgz", - "integrity": "sha1-Y07mZK2vU9dA0BSKa0tNF0QDpHg=", - "dependencies": { - "most": "^1.7.2" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2237,9 +1986,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -2261,9 +2010,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "dev": true }, "node_modules/normalize-path": { @@ -2434,14 +2183,6 @@ "node": ">=6" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2747,9 +2488,9 @@ } }, "node_modules/rollup": { - "version": "2.68.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.68.0.tgz", - "integrity": "sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==", + "version": "2.70.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", + "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2767,11 +2508,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "node_modules/seedrandom": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", @@ -2937,23 +2673,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sylvester": { - "name": "@kaosat-dev/sylvester", - "version": "0.0.21", - "resolved": "git+ssh://git@github.com/kaosat-dev/node-sylvester.git#ce74d23a2092ae02a56b840ef70f5d61c54df409", - "license": "MIT", - "engines": { - "node": ">=0.2.6" - } - }, - "node_modules/symbol-observable": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", - "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -3013,11 +2732,11 @@ } }, "node_modules/typed-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.0.0.tgz", - "integrity": "sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.1.0.tgz", + "integrity": "sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==", "engines": { - "node": ">= 8" + "node": ">= 10" } }, "node_modules/typedarray-to-buffer": { @@ -3047,16 +2766,6 @@ "uuid": "bin/uuid" } }, - "node_modules/w3c-blob": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/w3c-blob/-/w3c-blob-0.0.1.tgz", - "integrity": "sha1-sM01KhpQ9RVWNCD/1YYflQ8dhbg=" - }, - "node_modules/webworkify": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz", - "integrity": "sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==" - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3127,9 +2836,9 @@ } }, "node_modules/yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", + "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -3232,38 +2941,38 @@ } }, "@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "dev": true }, "@babel/core": { - "version": "7.17.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", - "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.3", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" } }, "@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "dev": true, "requires": { "@babel/types": "^7.17.0", @@ -3272,12 +2981,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" @@ -3293,23 +3002,13 @@ } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { @@ -3331,14 +3030,14 @@ } }, "@babel/helper-module-transforms": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", - "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", @@ -3347,12 +3046,12 @@ } }, "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-split-export-declaration": { @@ -3377,20 +3076,20 @@ "dev": true }, "@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dev": true, "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0" } }, "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -3457,15 +3156,15 @@ } }, "@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", "dev": true }, "@babel/runtime": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", - "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -3482,18 +3181,18 @@ } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.9", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", + "@babel/parser": "^7.17.9", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" @@ -3594,155 +3293,10 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "@jscad/csg": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.6.tgz", - "integrity": "sha512-GoUXhTwO0L+Cxba8VfFFLGm+ECd0xZKoIAPpeUYsDiCVsIZ6XK+3GLgBgn5waeumQNh+H6WsHjMMRKXBrDBreA==" - }, - "@jscad/dxf-serializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/dxf-serializer/-/dxf-serializer-0.0.4.tgz", - "integrity": "sha1-P7O3a2HmqYfiUIJ8SWNPAHNvasg=" - }, - "@jscad/gcode-deserializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/gcode-deserializer/-/gcode-deserializer-0.0.4.tgz", - "integrity": "sha1-pdk+zvhGvzCllvUCHXs26mKhOic=" - }, - "@jscad/io": { - "version": "git+ssh://git@github.com/ergogen/oldjscadio.git#692cf142062208b0097b2d4852c30d6cc51eea8d", - "from": "@jscad/io@github:ergogen/oldjscadio", - "requires": { - "@jscad/dxf-serializer": "^0.0.4", - "@jscad/gcode-deserializer": "^0.0.4", - "@jscad/io-utils": "^0.1.2", - "@jscad/json-deserializer": "^0.0.4", - "@jscad/json-serializer": "^0.0.5", - "@jscad/obj-deserializer": "^0.0.4", - "@jscad/stl-deserializer": "^0.1.2", - "@jscad/stl-serializer": "^0.0.6", - "@jscad/svg-deserializer": "^0.2.3", - "@jscad/svg-serializer": "^0.0.4" - } - }, - "@jscad/io-utils": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", - "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==" - }, - "@jscad/json-deserializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/json-deserializer/-/json-deserializer-0.0.4.tgz", - "integrity": "sha1-ffpQCUUoh5LgTlcaDCTxXFXuurA=", - "requires": { - "@jscad/csg": "0.3.6" - } - }, - "@jscad/json-serializer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@jscad/json-serializer/-/json-serializer-0.0.5.tgz", - "integrity": "sha1-DEAQz7ZyntspQnJycvlB0TAZR7g=", - "requires": { - "@jscad/csg": "0.3.6", - "@jscad/io-utils": "^0.1.2" - } - }, - "@jscad/obj-deserializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/obj-deserializer/-/obj-deserializer-0.0.4.tgz", - "integrity": "sha1-3LPPXMRyeKfPejW3azLq0NBE38M=" - }, - "@jscad/openjscad": { - "version": "git+ssh://git@github.com/ergogen/oldjscad.git#040637f3d8d4da0ad0a9ffdfe1a33a791c8008f4", - "from": "@jscad/openjscad@github:ergogen/oldjscad", - "requires": { - "@jscad/csg": "0.3.6", - "@jscad/io": "github:ergogen/oldjscadio", - "@jscad/openscad-openjscad-translator": "0.0.10", - "@jscad/scad-api": "^0.5.1", - "astring": "^1.0.2", - "brace": "0.10.0", - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "most-gestures": "^0.3.0", - "webworkify": "^1.4.0" - } - }, - "@jscad/openscad-openjscad-translator": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/@jscad/openscad-openjscad-translator/-/openscad-openjscad-translator-0.0.10.tgz", - "integrity": "sha1-b1o9wlL9ILr1I6sRwfwqPdqlfns=", - "requires": { - "lodash": "^4.17.4", - "sylvester": "github:kaosat-dev/node-sylvester" - } - }, - "@jscad/scad-api": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@jscad/scad-api/-/scad-api-0.5.1.tgz", - "integrity": "sha512-1BlfqcAf0xIicbaKU1bCOxHh0+aHJ7fBRY6r+7/e+0uMrfoqHoULGqkAZCwnftt0cPj5uAP8JSlyOinHKaFIJw==", - "requires": { - "@jscad/csg": "0.3.7" - }, - "dependencies": { - "@jscad/csg": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.7.tgz", - "integrity": "sha512-CuqKgXEZDH1FzbwQTdMWQ0FiEGi+LrP32tP6nW6rdWEEBjL6w19F3OrShD7SP8mK9IcqiuhgN9JcbWaiBswWlQ==" - } - } - }, - "@jscad/stl-deserializer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@jscad/stl-deserializer/-/stl-deserializer-0.1.2.tgz", - "integrity": "sha1-P05QMMjBgf6Xwniz5pdOojemM4M=", - "requires": { - "@jscad/csg": "0.3.6", - "@jscad/io-utils": "^0.1.2" - } - }, - "@jscad/stl-serializer": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.0.6.tgz", - "integrity": "sha1-OIDuOw2YzeYhpVg92GDcN6kAZtQ=", - "requires": { - "@jscad/io-utils": "^0.1.2" - } - }, - "@jscad/svg-deserializer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@jscad/svg-deserializer/-/svg-deserializer-0.2.3.tgz", - "integrity": "sha1-HbFVKSax7J7yXLjYE0ryZfYOTSI=", - "requires": { - "@jscad/csg": "0.3.6", - "sax": "1.2.4" - } - }, - "@jscad/svg-serializer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@jscad/svg-serializer/-/svg-serializer-0.0.4.tgz", - "integrity": "sha1-uqYjfTPtbg96AS8rtgYTopXiUdE=", - "requires": { - "@jscad/csg": "0.3.6" - } - }, - "@most/multicast": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@most/multicast/-/multicast-1.3.0.tgz", - "integrity": "sha512-DWH8AShgp5bXn+auGzf5tzPxvpmEvQJd0CNsApOci1LDF4eAEcnw4HQOr2Jaa+L92NbDYFKBSXxll+i7r1ikvw==", - "requires": { - "@most/prelude": "^1.4.0" - } - }, - "@most/prelude": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@most/prelude/-/prelude-1.8.0.tgz", - "integrity": "sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==" - }, "@rollup/plugin-commonjs": { - "version": "21.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.2.tgz", - "integrity": "sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==", + "version": "21.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz", + "integrity": "sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -3885,11 +3439,6 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, - "astring": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.1.tgz", - "integrity": "sha512-Aj3mbwVzj7Vve4I/v2JYOPFkCGM2YS7OqQTNSxmUR+LECRpokuPgAYghePgr6SALDo5bD5DlfbSaYjOzGJZOLQ==" - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3907,14 +3456,6 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "brace": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/brace/-/brace-0.10.0.tgz", - "integrity": "sha1-7e9OubCSi6HuX3F//BV3SabdXXY=", - "requires": { - "w3c-blob": "0.0.1" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3941,13 +3482,13 @@ "dev": true }, "browserslist": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", - "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001312", - "electron-to-chromium": "^1.4.71", + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", "escalade": "^3.1.1", "node-releases": "^2.0.2", "picocolors": "^1.0.0" @@ -3972,9 +3513,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001312", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", - "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "dev": true }, "chai": { @@ -4085,9 +3626,9 @@ "dev": true }, "complex.js": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.15.tgz", - "integrity": "sha512-gDBvQU8IG139ZBQTSo2qvDFP+lANMGluM779csXOr6ny1NUtA3wkUnCFjlDNH/moAVfXtvClYt6G0zarFbtz5w==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", + "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==" }, "concat-map": { "version": "0.0.1", @@ -4161,14 +3702,6 @@ "strip-bom": "^4.0.0" } }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -4186,9 +3719,9 @@ } }, "electron-to-chromium": { - "version": "1.4.73", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.73.tgz", - "integrity": "sha512-RlCffXkE/LliqfA5m29+dVDPB2r72y2D2egMMfIy3Le8ODrxjuZNVo4NIC2yPL01N4xb4nZQLwzi6Z5tGIGLnA==", + "version": "1.4.111", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.111.tgz", + "integrity": "sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==", "dev": true }, "emoji-regex": { @@ -4219,14 +3752,9 @@ "dev": true }, "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estree-walker": { "version": "2.0.2", @@ -4281,9 +3809,9 @@ } }, "fraction.js": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.3.tgz", - "integrity": "sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" }, "fromentries": { "version": "1.3.2", @@ -4372,18 +3900,10 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, - "globalthis": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", - "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", - "requires": { - "define-properties": "^1.1.3" - } - }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "graham_scan": { "version": "1.0.4", @@ -4661,13 +4181,6 @@ "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - } } }, "jsesc": { @@ -4677,12 +4190,9 @@ "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, "jsonfile": { "version": "6.1.0", @@ -4714,11 +4224,6 @@ "p-locate": "^5.0.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -4745,12 +4250,12 @@ } }, "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "make-dir": { @@ -4778,19 +4283,19 @@ } }, "mathjs": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.1.1.tgz", - "integrity": "sha512-4QJP8a0Vy90ajFYESnITSluCrQBZnI+2XQhKJIRdo/6t95oupffS5qA4MTWnLGm5GsEZF179JSMjST7wCdZQkA==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.4.3.tgz", + "integrity": "sha512-C50lWorCOplBec9Ik5fzhHuOx4G4+mtdz3r1G2I1/r8yj+CpYFXLXNqTdg59oKmIF1tKcIzpxlC4s2dGL7f3pg==", "requires": { - "@babel/runtime": "^7.16.7", - "complex.js": "^2.0.15", + "@babel/runtime": "^7.17.8", + "complex.js": "^2.1.0", "decimal.js": "^10.3.1", "escape-latex": "^1.2.0", - "fraction.js": "^4.1.2", + "fraction.js": "^4.2.0", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", - "typed-function": "^2.0.0" + "typed-function": "^2.1.0" } }, "minimatch": { @@ -4802,15 +4307,10 @@ "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "mocha": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz", - "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", @@ -4826,9 +4326,9 @@ "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "4.2.1", "ms": "2.1.3", - "nanoid": "3.2.0", + "nanoid": "3.3.1", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -4855,9 +4355,9 @@ } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4880,25 +4380,6 @@ } } }, - "most": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/most/-/most-1.9.0.tgz", - "integrity": "sha512-M7yHMcMGaclzEL6eg8Yh8PlAsaWfL/oSThF4+ZuWKM5CKXcbzmLh+qESwgZFzMKHJ+iVJwb28yFvDEOobI653w==", - "requires": { - "@most/multicast": "^1.2.5", - "@most/prelude": "^1.4.0", - "globalthis": "^1.0.1", - "symbol-observable": "^2.0.3" - } - }, - "most-gestures": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/most-gestures/-/most-gestures-0.3.0.tgz", - "integrity": "sha1-Y07mZK2vU9dA0BSKa0tNF0QDpHg=", - "requires": { - "most": "^1.7.2" - } - }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -4906,9 +4387,9 @@ "dev": true }, "nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, "node-preload": { @@ -4921,9 +4402,9 @@ } }, "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "dev": true }, "normalize-path": { @@ -5063,11 +4544,6 @@ } } }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5291,9 +4767,9 @@ } }, "rollup": { - "version": "2.68.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.68.0.tgz", - "integrity": "sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==", + "version": "2.70.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", + "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -5305,11 +4781,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "seedrandom": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", @@ -5433,15 +4904,6 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "sylvester": { - "version": "git+ssh://git@github.com/kaosat-dev/node-sylvester.git#ce74d23a2092ae02a56b840ef70f5d61c54df409", - "from": "sylvester@github:kaosat-dev/node-sylvester" - }, - "symbol-observable": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", - "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==" - }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -5486,9 +4948,9 @@ "dev": true }, "typed-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.0.0.tgz", - "integrity": "sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.1.0.tgz", + "integrity": "sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -5510,16 +4972,6 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, - "w3c-blob": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/w3c-blob/-/w3c-blob-0.0.1.tgz", - "integrity": "sha1-sM01KhpQ9RVWNCD/1YYflQ8dhbg=" - }, - "webworkify": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz", - "integrity": "sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==" - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5575,9 +5027,9 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", + "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", From a586d9058c9cb8150a32400648557624bf8a33a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 16 Apr 2022 16:14:29 +0200 Subject: [PATCH 037/120] Outline scaling --- roadmap.md | 2 - src/outlines.js | 7 +- test/outlines/{fillet.yaml => outlines.yaml} | 6 +- ...dxf => outlines___outlines_fillet_dxf.dxf} | 0 .../outlines___outlines_scale_dxf.dxf | 258 ++++++++++++++++++ 5 files changed, 269 insertions(+), 4 deletions(-) rename test/outlines/{fillet.yaml => outlines.yaml} (78%) rename test/outlines/{fillet___outlines_fillet_dxf.dxf => outlines___outlines_fillet_dxf.dxf} (100%) create mode 100644 test/outlines/outlines___outlines_scale_dxf.dxf diff --git a/roadmap.md b/roadmap.md index aa7d531..9423c65 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,7 +6,6 @@ ### Major -- Gut standalone 3d output, only different scripts for different integrations - Key-level access to full anchors - this could provide extra variables `padding`, `spread`, `splay` for custom layout purposes - make row anchors cumulative, too (like columns), so fingers arcs and other edits can happen @@ -27,7 +26,6 @@ - Include raw kicad footprint integrations - pull torik's script to be able to convert raw kicad footprints into positionable ergogen ones - have a `dummy` footprint which can just be updated from schematic -- Shift/rotate/scale for outline elements before layout - Allow footprints to publish outlines - Make these usable in the `outlines` section through a new `what` - 3D orient for cases diff --git a/src/outlines.js b/src/outlines.js index ed1061f..d2e417f 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -128,18 +128,23 @@ const polygon = (config, name, points, outlines, units) => { const outline = (config, name, points, outlines, units) => { // prepare params - a.unexpected(config, `${name}`, ['name', 'fillet', 'expand', 'origin']) + a.unexpected(config, `${name}`, ['name', 'fillet', 'expand', 'origin', 'scale']) a.assert(outlines[config.name], `Field "${name}.name" does not name an existing outline!`) const fillet = a.sane(config.fillet || 0, `${name}.fillet`, 'number')(units) const expand = a.sane(config.expand || 0, `${name}.expand`, 'number')(units) const joints = a.in(a.sane(config.joints || 0, `${name}.joints`, 'number')(units), `${name}.joints`, [0, 1, 2]) const origin = anchor(config.origin || {}, `${name}.origin`, points)(units) + const scale = a.sane(config.scale || 1, `${name}.scale`, 'number')(units) // return shape function and its units return [(point, bound) => { let o = u.deepcopy(outlines[config.name]) o = origin.unposition(o) + if (scale !== 1) { + o = m.model.scale(o, scale) + } + if (fillet) { for (const [index, chain] of m.model.findChains(o).entries()) { o.models[`fillet_${index}`] = m.chain.fillet(chain, fillet) diff --git a/test/outlines/fillet.yaml b/test/outlines/outlines.yaml similarity index 78% rename from test/outlines/fillet.yaml rename to test/outlines/outlines.yaml index 5dc5e85..351fff7 100644 --- a/test/outlines/fillet.yaml +++ b/test/outlines/outlines.yaml @@ -19,4 +19,8 @@ outlines: fillet: - what: outline name: base - fillet: 2 \ No newline at end of file + fillet: 2 + scale: + - what: outline + name: fillet + scale: 0.5 \ No newline at end of file diff --git a/test/outlines/fillet___outlines_fillet_dxf.dxf b/test/outlines/outlines___outlines_fillet_dxf.dxf similarity index 100% rename from test/outlines/fillet___outlines_fillet_dxf.dxf rename to test/outlines/outlines___outlines_fillet_dxf.dxf diff --git a/test/outlines/outlines___outlines_scale_dxf.dxf b/test/outlines/outlines___outlines_scale_dxf.dxf new file mode 100644 index 0000000..1cd04be --- /dev/null +++ b/test/outlines/outlines___outlines_scale_dxf.dxf @@ -0,0 +1,258 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +4.3 +20 +-3.3 +11 +4.3 +21 +11.8 +0 +LINE +8 +0 +10 +-3.3 +20 +-4.3 +11 +3.3 +21 +-4.3 +0 +LINE +8 +0 +10 +-4.3 +20 +-3.3 +11 +-4.3 +21 +11.8 +0 +LINE +8 +0 +10 +-3.3 +20 +12.8 +11 +3.3 +21 +12.8 +0 +LINE +8 +0 +10 +13.8 +20 +-3.3 +11 +13.8 +21 +11.8 +0 +LINE +8 +0 +10 +6.2 +20 +-4.3 +11 +12.8 +21 +-4.3 +0 +LINE +8 +0 +10 +5.2 +20 +-3.3 +11 +5.2 +21 +11.8 +0 +LINE +8 +0 +10 +6.2 +20 +12.8 +11 +12.8 +21 +12.8 +0 +ARC +8 +0 +10 +3.3 +20 +11.8 +40 +1 +50 +0 +51 +90 +0 +ARC +8 +0 +10 +-3.3 +20 +11.8 +40 +1 +50 +90 +51 +180 +0 +ARC +8 +0 +10 +-3.3 +20 +-3.3 +40 +1 +50 +180 +51 +270 +0 +ARC +8 +0 +10 +3.3 +20 +-3.3 +40 +1 +50 +270 +51 +0 +0 +ARC +8 +0 +10 +12.8 +20 +11.8 +40 +1 +50 +0 +51 +90 +0 +ARC +8 +0 +10 +6.2 +20 +11.8 +40 +1 +50 +90 +51 +180 +0 +ARC +8 +0 +10 +6.2 +20 +-3.3 +40 +1 +50 +180 +51 +270 +0 +ARC +8 +0 +10 +12.8 +20 +-3.3 +40 +1 +50 +270 +51 +0 +0 +ENDSEC +0 +EOF \ No newline at end of file From 802a988705ac63c446b55c562f455b8ef44954d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 29 May 2022 14:09:47 +0200 Subject: [PATCH 038/120] Roadmap update --- roadmap.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/roadmap.md b/roadmap.md index 9423c65..4d90f7e 100644 --- a/roadmap.md +++ b/roadmap.md @@ -18,6 +18,7 @@ - onnx-like incremental opset versioning - Template for creating them, built-in variables they can use, documentation, external links, etc. - Add access to whole set of points + filtering logic, so they can implement their own connection logic as well maybe (see daisy chaining) + - footprint parameters inside the body should be `p.params.field` instead of `p.param.field` so it actually matches the options that you pass in - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. - Rename class to designator in this context (https://en.wikipedia.org/wiki/Reference_designator#Designators) @@ -29,6 +30,8 @@ - Allow footprints to publish outlines - Make these usable in the `outlines` section through a new `what` - 3D orient for cases +- Allow a generic `adjust` field for outlines that accepts an anchor + - This could swallow `origin` from `outline` - Post-process anchor for global (post-mirror!) orient/shift/rotate for everything - Even more extreme anchor stuff - Checkpoints, intersects, distances, weighted combinations? @@ -51,7 +54,10 @@ - Update json schema and add syntax highlight to editors - Support different netclasses - `round`, `pointy` and `beveled` symbolic constants for expand joint types - - also, string shorthands like `3)`, `5>` and `10]` + - Also, string shorthands like `3)`, `5>` and `10]` +- Allow a potential filter for filleting (only on angles =90°, <45°, left turn vs. right turn when going clockwise, etc.) +- Support cumulative handling of outline parts (i.e., add `fillet` as an generic option that applies to all the parts up to that point) + - Similar with adjust ### Patch From 5a25c1c423b84e2aad8b2fe80bf77fca11d2991d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 29 May 2022 14:12:11 +0200 Subject: [PATCH 039/120] Make within-column layout cumulative as well --- src/points.js | 22 +++++++++++-------- test/cli/big/reference/points/points.yaml | 2 +- test/cli/minimal/reference/points/points.yaml | 2 +- test/points/adjustments___demo_dxf.dxf | 16 +++++++------- test/points/adjustments___points.json | 6 ++--- test/points/basic_2x2___points.json | 4 ++-- test/points/default___points.json | 4 ++-- test/points/overrides___points.json | 4 ++-- 8 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/points.js b/src/points.js index def23a5..2fd72f7 100644 --- a/src/points.js +++ b/src/points.js @@ -86,7 +86,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, const keys = [] const default_key = { stagger: units.$default_stagger, - spread: first_col ? 0 : units.$default_spread, + spread: units.$default_spread, splay: units.$default_splay, origin: [0, 0], orient: 0, @@ -141,7 +141,9 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, } // setting up column-level anchor - zone_anchor.x += keys[0].spread + if (!first_col) { + zone_anchor.x += keys[0].spread + } zone_anchor.y += keys[0].stagger const col_anchor = zone_anchor.clone() @@ -156,16 +158,17 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, } // actually laying out keys + let running_anchor = col_anchor.clone() + for (const r of rotations) { + running_anchor.rotate(r.angle, r.origin) + } for (const key of keys) { // copy the current column anchor - let point = col_anchor.clone() + let point = running_anchor.clone() - // apply transformations - for (const r of rotations) { - point.rotate(r.angle, r.origin) - } + // apply per-key adjustments point.r += key.orient point.shift(key.shift) point.r += key.rotate @@ -178,8 +181,9 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, col_minmax[col_name].min = Math.min(col_minmax[col_name].min, point.y) col_minmax[col_name].max = Math.max(col_minmax[col_name].max, point.y) - // advance the column anchor to the next position - col_anchor.y += key.padding + // advance the running anchor to the next position + running_anchor = point.clone() + running_anchor.shift([0, key.padding]) } first_col = false diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index f744193..911c06d 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -4,7 +4,7 @@ matrix: r: 0 meta: stagger: 0 - spread: 0 + spread: 19 splay: 0 origin: - 0 diff --git a/test/cli/minimal/reference/points/points.yaml b/test/cli/minimal/reference/points/points.yaml index 0ec0976..63b3d11 100644 --- a/test/cli/minimal/reference/points/points.yaml +++ b/test/cli/minimal/reference/points/points.yaml @@ -4,7 +4,7 @@ matrix_col_row: r: 0 meta: stagger: 0 - spread: 0 + spread: 19 splay: 0 origin: - 0 diff --git a/test/points/adjustments___demo_dxf.dxf b/test/points/adjustments___demo_dxf.dxf index d953dbe..6f18f2b 100644 --- a/test/points/adjustments___demo_dxf.dxf +++ b/test/points/adjustments___demo_dxf.dxf @@ -195,11 +195,11 @@ LINE 10 22.7371845 20 -33.7307612 +33.7307613 11 40.6686891 21 -35.2995646 +35.2995647 0 LINE 8 @@ -207,11 +207,11 @@ LINE 10 40.6686891 20 -35.2995646 +35.2995647 11 42.2374925 21 -17.36806 +17.3680601 0 LINE 8 @@ -219,11 +219,11 @@ LINE 10 42.2374925 20 -17.36806 +17.3680601 11 24.3059879 21 -15.7992566 +15.7992567 0 LINE 8 @@ -231,11 +231,11 @@ LINE 10 24.3059879 20 -15.7992566 +15.7992567 11 22.7371845 21 -33.7307612 +33.7307613 0 ENDSEC 0 diff --git a/test/points/adjustments___points.json b/test/points/adjustments___points.json index ab5e160..92f7b09 100644 --- a/test/points/adjustments___points.json +++ b/test/points/adjustments___points.json @@ -5,7 +5,7 @@ "r": 0, "meta": { "stagger": 0, - "spread": 0, + "spread": 19, "splay": 0, "origin": [ 0, @@ -77,7 +77,7 @@ "r": 0, "meta": { "stagger": 0, - "spread": 0, + "spread": 19, "splay": 0, "origin": [ 0, @@ -234,7 +234,7 @@ }, "matrix_right_top": { "x": 32.4873385, - "y": 25.5494106, + "y": 25.549410700000003, "r": 5, "meta": { "stagger": 5, diff --git a/test/points/basic_2x2___points.json b/test/points/basic_2x2___points.json index ab42f3d..61d9968 100644 --- a/test/points/basic_2x2___points.json +++ b/test/points/basic_2x2___points.json @@ -5,7 +5,7 @@ "r": 0, "meta": { "stagger": 0, - "spread": 0, + "spread": 19, "splay": 0, "origin": [ 0, @@ -56,7 +56,7 @@ "r": 0, "meta": { "stagger": 0, - "spread": 0, + "spread": 19, "splay": 0, "origin": [ 0, diff --git a/test/points/default___points.json b/test/points/default___points.json index c4ad48d..60e486d 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -5,7 +5,7 @@ "r": 0, "meta": { "stagger": 0, - "spread": 0, + "spread": 19, "splay": 0, "origin": [ 0, @@ -48,7 +48,7 @@ "r": 0, "meta": { "stagger": 0, - "spread": 0, + "spread": 19, "splay": 0, "origin": [ 0, diff --git a/test/points/overrides___points.json b/test/points/overrides___points.json index 9094335..2a763b7 100644 --- a/test/points/overrides___points.json +++ b/test/points/overrides___points.json @@ -5,7 +5,7 @@ "r": 0, "meta": { "stagger": 0, - "spread": 0, + "spread": 19, "splay": 0, "origin": [ 0, @@ -73,7 +73,7 @@ "r": 0, "meta": { "stagger": 0, - "spread": 0, + "spread": 19, "splay": 0, "origin": [ 0, From 5e68bdb6307d61ec7c319d3c64d6f5fea98b13f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 29 May 2022 20:25:52 +0200 Subject: [PATCH 040/120] Outlining improvements --- roadmap.md | 12 ----- src/anchor.js | 11 +--- src/operation.js | 16 ++++-- src/outlines.js | 127 +++++++++++++++++++++++++++-------------------- src/point.js | 6 ++- 5 files changed, 92 insertions(+), 80 deletions(-) diff --git a/roadmap.md b/roadmap.md index 4d90f7e..a1af41b 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,9 +6,6 @@ ### Major -- Key-level access to full anchors - - this could provide extra variables `padding`, `spread`, `splay` for custom layout purposes - - make row anchors cumulative, too (like columns), so fingers arcs and other edits can happen - Restructure pcb point/footprint filtering - Use the same `what`/`where` infrastructure as outlines - Collapse params/nets/anchors into a single hierarchy from the user's POV @@ -30,12 +27,8 @@ - Allow footprints to publish outlines - Make these usable in the `outlines` section through a new `what` - 3D orient for cases -- Allow a generic `adjust` field for outlines that accepts an anchor - - This could swallow `origin` from `outline` -- Post-process anchor for global (post-mirror!) orient/shift/rotate for everything - Even more extreme anchor stuff - Checkpoints, intersects, distances, weighted combinations? -- Allow both object (as well as arrays) in multiple anchor refs - SVG input (for individual outlines, or even combinations parsed by line color, etc.) - And once that's done, possibly even STL or other input for cases or pcb renders - Support text silk output to PCBs (in configurable fonts, through SVG?) @@ -44,7 +37,6 @@ - Support curves (arcs as well as Béziers) in polygons - Add snappable line footprint - Figure out a manual, but still reasonably comfortable routing method directly from the config -- Add filleting syntax with `@`? - Eeschema support for pcbs - Generate ZMK shield from config - Export **to** KLE? @@ -53,11 +45,7 @@ - Look into kicad 5 vs. 6 output format - Update json schema and add syntax highlight to editors - Support different netclasses -- `round`, `pointy` and `beveled` symbolic constants for expand joint types - - Also, string shorthands like `3)`, `5>` and `10]` - Allow a potential filter for filleting (only on angles =90°, <45°, left turn vs. right turn when going clockwise, etc.) -- Support cumulative handling of outline parts (i.e., add `fillet` as an generic option that applies to all the parts up to that point) - - Similar with adjust ### Patch diff --git a/src/anchor.js b/src/anchor.js index 0d5ae4d..73fde64 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -69,7 +69,6 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), } else { point = anchor(raw.ref, `${name}.ref`, points, default_point, mirror)(units) } - } if (raw.aggregate !== undefined) { @@ -95,10 +94,7 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), // simple case: number gets added to point rotation if (a.type(config)(units) == 'number') { let angle = a.sane(config, name, 'number')(units) - if (point.meta.mirrored) { - angle = -angle - } - point.r += angle + point.rotate(angle, false) // recursive case: points turns "towards" target anchor } else { const target = anchor(config, name, points, default_point, mirror)(units) @@ -111,10 +107,7 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), } if (raw.shift !== undefined) { let xyval = a.wh(raw.shift, `${name}.shift`)(units) - if (point.meta.mirrored) { - xyval[0] = -xyval[0] - } - point.shift(xyval, true) + point.shift(xyval) } if (raw.rotate !== undefined) { rotator(raw.rotate, `${name}.rotate`, point) diff --git a/src/operation.js b/src/operation.js index c8edc36..fa210fb 100644 --- a/src/operation.js +++ b/src/operation.js @@ -1,10 +1,16 @@ const op_prefix = exports.op_prefix = str => { + + const prefix = str[0] const suffix = str.slice(1) - if (str.startsWith('+')) return {name: suffix, operation: 'add'} - if (str.startsWith('-')) return {name: suffix, operation: 'subtract'} - if (str.startsWith('~')) return {name: suffix, operation: 'intersect'} - if (str.startsWith('^')) return {name: suffix, operation: 'stack'} - return {name: str, operation: 'add'} + const result = {name: suffix, operation: 'add'} + + if (prefix == '+') ; // noop + else if (prefix == '-') result.operation = 'subtract' + else if (prefix == '~') result.operation = 'intersect' + else if (prefix == '^') result.operation = 'stack' + else result.name = str // no prefix, so the name was the whole string + + return result } exports.operation = (str, choices={}, order=Object.keys(choices)) => { diff --git a/src/outlines.js b/src/outlines.js index d2e417f..8afcd9b 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -41,7 +41,7 @@ const rectangle = (config, name, points, outlines, units) => { const bevel = a.sane(config.bevel || 0, `${name}.bevel`, 'number')(rec_units) // return shape function and its units - return [(point, bound) => { + return [() => { const error = (dim, val) => `Rectangle for "${name}" isn't ${dim} enough for its corner and bevel (${val} - 2 * ${corner} - 2 * ${bevel} <= 0)!` const [w, h] = size @@ -66,13 +66,9 @@ const rectangle = (config, name, points, outlines, units) => { } if (corner > 0) rect = m.model.outline(rect, corner, 0) rect = m.model.moveRelative(rect, [-cw/2, -ch/2]) - if (bound) { - const bbox = {high: [w/2, h/2], low: [-w/2, -h/2]} - rect = binding(rect, bbox, point, rec_units) - } - rect = point.position(rect) + const bbox = {high: [w/2, h/2], low: [-w/2, -h/2]} - return rect + return [rect, bbox] }, rec_units] } @@ -86,14 +82,10 @@ const circle = (config, name, points, outlines, units) => { }, units) // return shape function and its units - return [(point, bound) => { + return [() => { let circle = u.circle([0, 0], radius) - if (bound) { - const bbox = {high: [radius, radius], low: [-radius, -radius]} - circle = binding(circle, bbox, point, circ_units) - } - circle = point.position(circle) - return circle + const bbox = {high: [radius, radius], low: [-radius, -radius]} + return [circle, bbox] }, circ_units] } @@ -104,10 +96,10 @@ const polygon = (config, name, points, outlines, units) => { const poly_points = a.sane(config.points, `${name}.points`, 'array')() // return shape function and its units - return [(point, bound) => { + return [point => { const parsed_points = [] - // the point starts at [0, 0] as it will be positioned later - // but we keep the metadata for potential mirroring purposes + // the poly starts at [0, 0] as it will be positioned later + // but we keep the point metadata for potential mirroring purposes let last_anchor = new Point(0, 0, 0, point.meta) let poly_index = -1 for (const poly_point of poly_points) { @@ -116,52 +108,24 @@ const polygon = (config, name, points, outlines, units) => { parsed_points.push(last_anchor.p) } let poly = u.poly(parsed_points) - if (bound) { - const bbox = u.bbox(parsed_points) - poly = binding(poly, bbox, point, units) - } - poly = point.position(poly) - return poly + const bbox = u.bbox(parsed_points) + return [poly, bbox] }, units] } const outline = (config, name, points, outlines, units) => { // prepare params - a.unexpected(config, `${name}`, ['name', 'fillet', 'expand', 'origin', 'scale']) + a.unexpected(config, `${name}`, ['name', 'origin']) a.assert(outlines[config.name], `Field "${name}.name" does not name an existing outline!`) - const fillet = a.sane(config.fillet || 0, `${name}.fillet`, 'number')(units) - const expand = a.sane(config.expand || 0, `${name}.expand`, 'number')(units) - const joints = a.in(a.sane(config.joints || 0, `${name}.joints`, 'number')(units), `${name}.joints`, [0, 1, 2]) const origin = anchor(config.origin || {}, `${name}.origin`, points)(units) - const scale = a.sane(config.scale || 1, `${name}.scale`, 'number')(units) - + // return shape function and its units - return [(point, bound) => { + return [() => { let o = u.deepcopy(outlines[config.name]) o = origin.unposition(o) - - if (scale !== 1) { - o = m.model.scale(o, scale) - } - - if (fillet) { - for (const [index, chain] of m.model.findChains(o).entries()) { - o.models[`fillet_${index}`] = m.chain.fillet(chain, fillet) - } - } - - if (expand) { - o = m.model.outline(o, Math.abs(expand), joints, (expand < 0), {farPoint: u.farPoint}) - } - - if (bound) { - const bbox = m.measure.modelExtents(o) - o = binding(o, bbox, point, units) - } - - o = point.position(o) - return o + const bbox = m.measure.modelExtents(o) + return [o, bbox] }, units] } @@ -172,6 +136,29 @@ const whats = { outline } +const expand_shorthand = (config, units) => { + if (a.type(config.expand)(units) == 'string') { + const prefix = config.expand.slice(0, -1) + const suffix = config.expand.slice(-1) + let expand = suffix + let joints = 0 + + if (suffix == ')') ; // noop + else if (suffix == '>') joints = 1 + else if (suffix == ']') joints = 2 + else expand = config.expand + + config.expand = parseFloat(expand) + config.joints = config.joints || joints + } + + if (a.type(config.joints)(units) == 'string') { + if (config.joints == 'round') config.joints = 0 + if (config.joints == 'pointy') config.joints = 1 + if (config.joints == 'beveled') config.joints = 2 + } +} + exports.parse = (config = {}, points = {}, units = {}) => { // output outlines will be collected here @@ -205,10 +192,18 @@ exports.parse = (config = {}, points = {}, units = {}) => { const what = a.in(part.what || 'outline', `${name}.what`, ['rectangle', 'circle', 'polygon', 'outline']) const bound = !!part.bound const mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() + // `where` is delayed until we have all, potentially what-dependent units // default where is [0, 0], as per filter parsing const original_where = part.where // need to save, so the delete's don't get rid of it below const where = units => filter(original_where, `${name}.where`, points, units, mirror) + + const adjust = anchor(part.adjust || {}, `${name}.adjust`, points)(units) + const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) + expand_shorthand(part, units) + const expand = a.sane(part.expand || 0, `${name}.expand`, 'number')(units) + const joints = a.in(a.sane(part.joints || 0, `${name}.joints`, 'number')(units), `${name}.joints`, [0, 1, 2]) + const scale = a.sane(part.scale || 1, `${name}.scale`, 'number')(units) // these keys are then removed, so ops can check their own unexpected keys without interference delete part.operation @@ -216,15 +211,41 @@ exports.parse = (config = {}, points = {}, units = {}) => { delete part.bound delete part.mirror delete part.where + delete part.adjust + delete part.fillet + delete part.expand + delete part.joints + delete part.scale // a prototype "shape" maker (and its units) are computed const [shape_maker, shape_units] = whats[what](part, name, points, outlines, units) // and then the shape is repeated for all where positions for (const w of where(shape_units)) { - const shape = shape_maker(w, bound) + const point = w.clone().shift(adjust.p).rotate(adjust.r, false) + let [shape, bbox] = shape_maker(point) // point is passed for mirroring metadata only... + if (bound) { + shape = binding(shape, bbox, point, shape_units) + } + shape = point.position(shape) // ...actual positioning happens here outlines[outline_name] = operation(outlines[outline_name], shape) } + + if (scale !== 1) { + outlines[outline_name] = m.model.scale(outlines[outline_name], scale) + } + + if (expand) { + outlines[outline_name] = m.model.outline( + outlines[outline_name], Math.abs(expand), joints, (expand < 0), {farPoint: u.farPoint} + ) + } + + if (fillet) { + for (const [index, chain] of m.model.findChains(outlines[outline_name]).entries()) { + outlines[outline_name].models[`fillet_${part_name}_${index}`] = m.chain.fillet(chain, fillet) + } + } } // final adjustments diff --git a/src/point.js b/src/point.js index 9e32b7c..d6d5e12 100644 --- a/src/point.js +++ b/src/point.js @@ -25,6 +25,7 @@ module.exports = class Point { } shift(s, relative=true) { + s[0] *= this.meta.mirrored ? -1 : 1 if (relative) { s = m.point.rotate(s, this.r) } @@ -34,7 +35,10 @@ module.exports = class Point { } rotate(angle, origin=[0, 0]) { - this.p = m.point.rotate(this.p, angle, origin) + angle *= this.meta.mirrored ? -1 : 1 + if (origin) { + this.p = m.point.rotate(this.p, angle, origin) + } this.r += angle return this } From 4446a603801024d0e4e971b0f8186981d0b793c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 30 Oct 2022 21:50:36 +0100 Subject: [PATCH 041/120] Roadmap update --- roadmap.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/roadmap.md b/roadmap.md index a1af41b..55b4408 100644 --- a/roadmap.md +++ b/roadmap.md @@ -46,6 +46,8 @@ - Update json schema and add syntax highlight to editors - Support different netclasses - Allow a potential filter for filleting (only on angles =90°, <45°, left turn vs. right turn when going clockwise, etc.) +- Add `operation: skip` to allow easily "commenting out" whole outline parts +- Better error message for negative rectangle (it may not only be because of corner/bevel) ### Patch @@ -58,6 +60,7 @@ - Add custom fillet implementation that considers line-line connections only? - Add nicer filleting error messages when makerjs dies for some reason - Empty nets should be allowed (to mean unconnected) +- Debug point (orient+shift) differences in circles vs. polygons (see Discord) ## WEBUI From 24466eb01d5461060c1e77332bfb60d954b06a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 14 Nov 2022 00:40:05 +0100 Subject: [PATCH 042/120] Footprint sideloading progress --- package-lock.json | 165 +++++++++++++++++++++++++++++-- package.json | 1 + rollup.config.js | 5 +- src/cli.js | 88 ++++++++++++++--- src/ergogen.js | 16 ++- src/io.js | 21 ++++ test/cli/nonexistent_input/error | 2 +- test/helpers/mock_footprints.js | 10 +- 8 files changed, 279 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index c52b1dd..2e3177e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "fs-extra": "^10.0.1", "js-yaml": "^3.14.1", + "jszip": "^3.10.1", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", "mathjs": "^10.1.1", @@ -983,6 +984,11 @@ "safe-buffer": "~5.1.1" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1422,6 +1428,11 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -1453,8 +1464,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -1575,6 +1585,11 @@ "node": ">=0.10.0" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1754,6 +1769,17 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/kdbush": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", @@ -1768,6 +1794,14 @@ "json5": "^2.1.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2258,6 +2292,11 @@ "node": ">=8" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -2382,6 +2421,11 @@ "node": ">=8" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/process-on-spawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", @@ -2403,6 +2447,20 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -2505,8 +2563,7 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/seedrandom": { "version": "3.0.5", @@ -2537,6 +2594,11 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2601,6 +2663,14 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -2756,6 +2826,11 @@ "node": ">= 10.0.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -3645,6 +3720,11 @@ "safe-buffer": "~5.1.1" } }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3953,6 +4033,11 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3978,8 +4063,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "is-binary-path": { "version": "2.1.0", @@ -4064,6 +4148,11 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4203,6 +4292,17 @@ "universalify": "^2.0.0" } }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "kdbush": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", @@ -4215,6 +4315,14 @@ "json5": "^2.1.0" } }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4598,6 +4706,11 @@ "release-zalgo": "^1.0.0" } }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4688,6 +4801,11 @@ } } }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "process-on-spawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", @@ -4706,6 +4824,20 @@ "safe-buffer": "^5.1.0" } }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4778,8 +4910,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "seedrandom": { "version": "3.0.5", @@ -4807,6 +4938,11 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4859,6 +4995,14 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -4966,6 +5110,11 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", diff --git a/package.json b/package.json index 4e76399..dfcbca5 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "dependencies": { "fs-extra": "^10.0.1", "js-yaml": "^3.14.1", + "jszip": "^3.10.1", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", "mathjs": "^10.1.1", diff --git a/rollup.config.js b/rollup.config.js index 3e71d16..95bc171 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -4,7 +4,7 @@ import commonjs from '@rollup/plugin-commonjs' export default { input: 'src/ergogen.js', - external: ['makerjs', 'js-yaml', 'mathjs', 'kle-serial'], + external: ['makerjs', 'js-yaml', 'mathjs', 'kle-serial', 'jszip'], output: { name: 'ergogen', file: 'dist/ergogen.js', @@ -14,7 +14,8 @@ export default { 'makerjs': 'makerjs', 'js-yaml': 'jsyaml', 'mathjs': 'math', - 'kle-serial': 'kle' + 'kle-serial': 'kle', + 'jszip': 'jszip' } }, plugins: [ diff --git a/src/cli.js b/src/cli.js index cff5116..397a5e5 100755 --- a/src/cli.js +++ b/src/cli.js @@ -1,11 +1,17 @@ #!/usr/bin/env node const fs = require('fs-extra') +const fsp = require('fs/promises') const path = require('path') const yaml = require('js-yaml') const yargs = require('yargs') -const ergogen = require('./ergogen') +const jszip = require('jszip') + +const io = require('./io') const pkg = require('../package.json') +const ergogen = require('./ergogen') + +;(async () => { // command line args @@ -29,7 +35,52 @@ const args = yargs }) .argv -// config reading +// greetings + +const title_suffix = args.debug ? ' (Debug Mode)' : '' +console.log(`Ergogen v${pkg.version} CLI${title_suffix}`) +console.log() + +// input helpers + +// zip handling is baked in at the io level, so that both the cli and the webui can use it +// if, for local development, we want to use a folder as input, we temporarily zip it in +// memory so that it can be handled the exact same way +// functions shamelessly repurposed from https://github.com/Stuk/jszip/issues/386 + +// return a flat array of absolute paths of all files recursively contained in the dir +const list_files_in_dir = async (dir) => { + const list = await fsp.readdir(dir) + const statPromises = list.map(async (file) => { + const fullPath = path.resolve(dir, file) + const stat = await fsp.stat(fullPath) + if (stat && stat.isDirectory()) { + return list_files_in_dir(fullPath) + } + return fullPath + }) + + return (await Promise.all(statPromises)).flat(Infinity) +} + +// create an in-memory zip stream from a folder in the file system +const zip_from_dir = async (dir) => { + const absRoot = path.resolve(dir) + const filePaths = await list_files_in_dir(dir) + return filePaths.reduce((z, filePath) => { + const relative = filePath.replace(absRoot, '') + // create folder trees manually :( + const zipFolder = path + .dirname(relative) + .split(path.sep) + .reduce((zf, dirName) => zf.folder(dirName), z) + + zipFolder.file(path.basename(filePath), fs.createReadStream(filePath)) + return z + }, new jszip()) +} + +// input reading const config_file = args._[0] if (!config_file) { @@ -37,20 +88,33 @@ if (!config_file) { process.exit(1) } -let config_text +if (!fs.existsSync(config_file)) { + console.error(`Could not read config file "${config_file}": File does not exist!`) + process.exit(2) +} + +let config_text = '' +let injections = [] + try { - config_text = fs.readFileSync(config_file).toString() + if (config_file.endsWith('.zip') || config_file.endsWith('.ekb')) { + [config_text, injections] = await io.unpack( + (new jszip()).loadAsync(fs.readFileSync(config_file)) + ) + } else if (fs.statSync(config_file).isDirectory()) { + [config_text, injections] = await io.unpack(zip_from_dir(config_file)) + } else { + config_text = fs.readFileSync(config_file).toString() + // no injections... + } + for (const [type, value] of injections) { + ergogen.inject(type, value) + } } catch (err) { console.error(`Could not read config file "${config_file}": ${err}`) process.exit(2) } -const title_suffix = args.debug ? ' (Debug Mode)' : '' -console.log(`Ergogen v${pkg.version} CLI${title_suffix}`) -console.log() - -;(async () => { - // processing let results @@ -61,7 +125,7 @@ try { process.exit(3) } -// helpers +// output helpers const single = (data, rel) => { if (!data) return @@ -89,7 +153,7 @@ const composite = (data, rel) => { } } -// output +// output generation if (args.clean) { console.log('Cleaning output folder...') diff --git a/src/ergogen.js b/src/ergogen.js index bef7755..62afa0d 100644 --- a/src/ergogen.js +++ b/src/ergogen.js @@ -92,8 +92,22 @@ const process = async (raw, debug=false, logger=()=>{}) => { return results } +const inject = (type, name, value) => { + if (value === undefined) { + value = name + name = type + type = 'footprint' + } + switch (type) { + case 'footprint': + return pcbs_lib.inject_footprint(name, value) + default: + throw new Error(`Unknown injection type "${type}" with name "${name}" and value "${value}"!`) + } +} + module.exports = { version, process, - inject_footprint: pcbs_lib.inject_footprint + inject } \ No newline at end of file diff --git a/src/io.js b/src/io.js index 60e91fc..ce42cc4 100644 --- a/src/io.js +++ b/src/io.js @@ -1,10 +1,31 @@ const yaml = require('js-yaml') +const jszip = require('jszip') const makerjs = require('makerjs') const u = require('./utils') const a = require('./assert') const kle = require('./kle') +exports.unpack = async (zip) => { + + // main config text (has to be called "config.ext" where ext is one of yaml/json/js) + const config_text = await zip.file(/^config\.(yaml|json|js)$/).async('string') + const injections = [] + + // bundled footprints + const fps = zip.folder('footprints') + const module_prefix = 'const module = {};\n\n' + const module_suffix = '\n\nreturn module.exports;' + for (const fp in fps.file(/.*\.js$/)) { + const name = fp.name.split('.')[0] + const text = await fp.async('string') + const parsed = new Function(module_prefix + text + module_suffix)() + injections.push(['footprint', name, parsed]) + } + + return [config_text, injections] +} + exports.interpret = (raw, logger) => { let config = raw let format = 'OBJ' diff --git a/test/cli/nonexistent_input/error b/test/cli/nonexistent_input/error index 4207ee3..15be3d3 100644 --- a/test/cli/nonexistent_input/error +++ b/test/cli/nonexistent_input/error @@ -1 +1 @@ -Could not read config file "nonexistent.yaml": Error: ENOENT: no such file or directory, open 'nonexistent.yaml' \ No newline at end of file +Could not read config file "nonexistent.yaml": File does not exist! \ No newline at end of file diff --git a/test/helpers/mock_footprints.js b/test/helpers/mock_footprints.js index 80bea95..ddb0e82 100644 --- a/test/helpers/mock_footprints.js +++ b/test/helpers/mock_footprints.js @@ -1,5 +1,5 @@ exports.inject = (ergogen) => { - ergogen.inject_footprint('trace_test', { + ergogen.inject('footprint', 'trace_test', { nets: { P1: 'P1' }, @@ -28,7 +28,7 @@ exports.inject = (ergogen) => { } }) - ergogen.inject_footprint('zone_test', { + ergogen.inject('footprint', 'zone_test', { nets: { P1: 'P1' }, @@ -62,7 +62,7 @@ exports.inject = (ergogen) => { } }) - ergogen.inject_footprint('dynamic_net_test', { + ergogen.inject('footprint', 'dynamic_net_test', { nets: {}, params: { class: 'T', @@ -90,7 +90,7 @@ exports.inject = (ergogen) => { } }) - ergogen.inject_footprint('anchor_test', { + ergogen.inject('footprint', 'anchor_test', { nets: {}, params: { class: 'T', @@ -114,7 +114,7 @@ exports.inject = (ergogen) => { } }) - ergogen.inject_footprint('references_test', { + ergogen.inject('footprint', 'references_test', { nets: {}, params: {}, body: p => { From 0d73c59538b390778dd67921f9802edfaf41412e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 14 Nov 2022 22:24:07 +0100 Subject: [PATCH 043/120] Footprint sideloading tests --- src/cli.js | 15 ++- src/io.js | 11 +- test/cli/bad_bundle/command | 1 + test/cli/bad_bundle/error | 1 + test/cli/bundle/command | 1 + test/cli/bundle/log | 14 +++ test/cli/bundle/reference/outlines/box.dxf | 98 +++++++++++++++ test/cli/bundle/reference/pcbs/pcb.kicad_pcb | 122 +++++++++++++++++++ test/cli/zip/command | 1 + test/cli/zip/log | 14 +++ test/cli/zip/reference | 1 + test/fixtures/bundle.zip | Bin 0 -> 927 bytes test/fixtures/bundle/config.yaml | 13 ++ test/fixtures/bundle/footprints/injected.js | 13 ++ test/index.js | 24 +++- 15 files changed, 315 insertions(+), 14 deletions(-) create mode 100644 test/cli/bad_bundle/command create mode 100644 test/cli/bad_bundle/error create mode 100644 test/cli/bundle/command create mode 100644 test/cli/bundle/log create mode 100644 test/cli/bundle/reference/outlines/box.dxf create mode 100644 test/cli/bundle/reference/pcbs/pcb.kicad_pcb create mode 100644 test/cli/zip/command create mode 100644 test/cli/zip/log create mode 100644 test/cli/zip/reference create mode 100644 test/fixtures/bundle.zip create mode 100644 test/fixtures/bundle/config.yaml create mode 100644 test/fixtures/bundle/footprints/injected.js diff --git a/src/cli.js b/src/cli.js index 397a5e5..bdaeac0 100755 --- a/src/cli.js +++ b/src/cli.js @@ -98,20 +98,25 @@ let injections = [] try { if (config_file.endsWith('.zip') || config_file.endsWith('.ekb')) { + console.log('Analyzing bundle...'); [config_text, injections] = await io.unpack( - (new jszip()).loadAsync(fs.readFileSync(config_file)) + await (new jszip()).loadAsync(fs.readFileSync(config_file)) ) } else if (fs.statSync(config_file).isDirectory()) { - [config_text, injections] = await io.unpack(zip_from_dir(config_file)) + console.log('Analyzing folder...'); + [config_text, injections] = await io.unpack( + await zip_from_dir(config_file) + ) } else { config_text = fs.readFileSync(config_file).toString() // no injections... } - for (const [type, value] of injections) { - ergogen.inject(type, value) + for (const [type, name, value] of injections) { + ergogen.inject(type, name, value) } } catch (err) { - console.error(`Could not read config file "${config_file}": ${err}`) + console.error(`Could not read config file "${config_file}"!`) + console.error(err) process.exit(2) } diff --git a/src/io.js b/src/io.js index ce42cc4..4b28c1a 100644 --- a/src/io.js +++ b/src/io.js @@ -9,17 +9,22 @@ const kle = require('./kle') exports.unpack = async (zip) => { // main config text (has to be called "config.ext" where ext is one of yaml/json/js) - const config_text = await zip.file(/^config\.(yaml|json|js)$/).async('string') + const candidates = zip.file(/^config\.(yaml|json|js)$/) + if (candidates.length != 1) { + throw new Error('Ambiguous config in bundle!') + } + const config_text = await candidates[0].async('string') const injections = [] // bundled footprints const fps = zip.folder('footprints') const module_prefix = 'const module = {};\n\n' const module_suffix = '\n\nreturn module.exports;' - for (const fp in fps.file(/.*\.js$/)) { - const name = fp.name.split('.')[0] + for (const fp of fps.file(/.*\.js$/)) { + const name = fp.name.slice('footprints/'.length).split('.')[0] const text = await fp.async('string') const parsed = new Function(module_prefix + text + module_suffix)() + // TODO: some sort of footprint validation? injections.push(['footprint', name, parsed]) } diff --git a/test/cli/bad_bundle/command b/test/cli/bad_bundle/command new file mode 100644 index 0000000..28a5b7a --- /dev/null +++ b/test/cli/bad_bundle/command @@ -0,0 +1 @@ +node src/cli.js test/ diff --git a/test/cli/bad_bundle/error b/test/cli/bad_bundle/error new file mode 100644 index 0000000..0b991c8 --- /dev/null +++ b/test/cli/bad_bundle/error @@ -0,0 +1 @@ +Could not read config file "test/"! \ No newline at end of file diff --git a/test/cli/bundle/command b/test/cli/bundle/command new file mode 100644 index 0000000..ac2196e --- /dev/null +++ b/test/cli/bundle/command @@ -0,0 +1 @@ +node src/cli.js test/fixtures/bundle --clean diff --git a/test/cli/bundle/log b/test/cli/bundle/log new file mode 100644 index 0000000..40aaf03 --- /dev/null +++ b/test/cli/bundle/log @@ -0,0 +1,14 @@ +Ergogen CLI + +Analyzing folder... +Interpreting format: YAML +Preprocessing input... +Calculating variables... +Parsing points... +Generating outlines... +Modeling cases... +Scaffolding PCBs... +Cleaning output folder... +Writing output to disk... +Done. + diff --git a/test/cli/bundle/reference/outlines/box.dxf b/test/cli/bundle/reference/outlines/box.dxf new file mode 100644 index 0000000..0d161b6 --- /dev/null +++ b/test/cli/bundle/reference/outlines/box.dxf @@ -0,0 +1,98 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-9 +20 +-9 +11 +9 +21 +-9 +0 +LINE +8 +0 +10 +9 +20 +-9 +11 +9 +21 +9 +0 +LINE +8 +0 +10 +9 +20 +9 +11 +-9 +21 +9 +0 +LINE +8 +0 +10 +-9 +20 +9 +11 +-9 +21 +-9 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/cli/bundle/reference/pcbs/pcb.kicad_pcb b/test/cli/bundle/reference/pcbs/pcb.kicad_pcb new file mode 100644 index 0000000..c2ab692 --- /dev/null +++ b/test/cli/bundle/reference/pcbs/pcb.kicad_pcb @@ -0,0 +1,122 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") + ) + + + (module injected_test_footprint (layer F.Cu) (tedit 5E1ADAC2) + (at 0 0 0) + + + (fp_text reference "I1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + ) + + (gr_line (start -9 9) (end 9 9) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 9 9) (end 9 -9) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 9 -9) (end -9 -9) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start -9 -9) (end -9 9) (angle 90) (layer Edge.Cuts) (width 0.15)) + +) + + \ No newline at end of file diff --git a/test/cli/zip/command b/test/cli/zip/command new file mode 100644 index 0000000..0a7fcd7 --- /dev/null +++ b/test/cli/zip/command @@ -0,0 +1 @@ +node src/cli.js test/fixtures/bundle.zip --clean diff --git a/test/cli/zip/log b/test/cli/zip/log new file mode 100644 index 0000000..17f636b --- /dev/null +++ b/test/cli/zip/log @@ -0,0 +1,14 @@ +Ergogen CLI + +Analyzing bundle... +Interpreting format: YAML +Preprocessing input... +Calculating variables... +Parsing points... +Generating outlines... +Modeling cases... +Scaffolding PCBs... +Cleaning output folder... +Writing output to disk... +Done. + diff --git a/test/cli/zip/reference b/test/cli/zip/reference new file mode 100644 index 0000000..50be577 --- /dev/null +++ b/test/cli/zip/reference @@ -0,0 +1 @@ +../bundle/reference diff --git a/test/fixtures/bundle.zip b/test/fixtures/bundle.zip new file mode 100644 index 0000000000000000000000000000000000000000..50aeedead64a46b709f319a443b43539a18be5d8 GIT binary patch literal 927 zcmWIWW@Zs#-~d9?<$0kDP;ebcb2BI~Bu?bZG@Q z10%}|W(Ec@VcYM>ci4b~<$WEi{EDUbwCWyPm=sQx>J~6P`?`DXj^$VRlEk@|uUTzx zarxDKN7c74DlV%^IGZ3NH*ya9kD6Kie>~ywnWln$59$KE**Q7_J-;^r z9S`zA0N86FAGt3@cn!n{c`YqJzoeijGq0prAM7=;Sw+d>Kn$YMyaq7{6h`k>APh=k zWMB|OH7GMLD>bYqM5yua<^+FiHVq;8wb2p?%nVX^!tP=3XMgPqI%%FHVe)SIfYhcKO0xiIskx7IZk?4@)3=}gku%!{iA|VOF z3`mLfRX?VY-v;h`VYxq5)wp!H!B;+9A+RC1DaCI H1mXbzI3+jV literal 0 HcmV?d00001 diff --git a/test/fixtures/bundle/config.yaml b/test/fixtures/bundle/config.yaml new file mode 100644 index 0000000..e264ba3 --- /dev/null +++ b/test/fixtures/bundle/config.yaml @@ -0,0 +1,13 @@ +points.zones.matrix: +outlines: + box: + - what: rectangle + where: true + size: 18 +pcbs: + pcb: + outlines.edge.outline: box + footprints: + injected: + type: injected + anchor: matrix diff --git a/test/fixtures/bundle/footprints/injected.js b/test/fixtures/bundle/footprints/injected.js new file mode 100644 index 0000000..9ef0ad5 --- /dev/null +++ b/test/fixtures/bundle/footprints/injected.js @@ -0,0 +1,13 @@ +module.exports = { + params: { + class: 'I' + }, + body: p => ` + (module injected_test_footprint (layer F.Cu) (tedit 5E1ADAC2) + ${p.at /* parametric position */} + + ${'' /* footprint reference */} + (fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) + ) + ` +} \ No newline at end of file diff --git a/test/index.js b/test/index.js index d81f740..9fbf57f 100644 --- a/test/index.js +++ b/test/index.js @@ -94,8 +94,9 @@ if (what) { // --what is the same as above ('cli', or 'cli/prefix') // --dump automatically overrides the old reference -const read = (d, p) => fs.readFileSync(path.join(d, p)).toString() -const exists = (d, p) => fs.existsSync(path.join(d, p)) +const joiner = (a, b) => path.join(a, b) +const read = (...args) => fs.readFileSync(args.reduce(joiner, '')).toString() +const exists = (...args) => fs.existsSync(args.reduce(joiner, '')) const { execSync } = require('child_process') const dircompare = require('dir-compare') @@ -114,22 +115,33 @@ for (let w of cli_what) { fs.removeSync(output_path) const version_regex = /\bv\d+\.\d+\.\d+(\-develop)?\b/ // correct execution - if (exists(t, 'log')) { - const ref_log = read(t, 'log').replace(version_regex, '') + if (!exists(t, 'error')) { + let ref_log = '' + if (exists(t, 'log')) { + ref_log = read(t, 'log').replace(version_regex, '') + } const actual_log = execSync(command).toString().replace(version_regex, '') if (dump) { fs.writeFileSync(path.join(t, 'log'), actual_log) } - const comp_res = dircompare.compareSync(output_path, path.join(t, 'reference'), { + let ref_path = path.join(t, 'reference') + if (!exists(ref_path)) { + fs.mkdirpSync(ref_path) + } + if (fs.statSync(ref_path).isFile()) { + ref_path = path.resolve(path.join(t, read(ref_path).trim())) + } + const comp_res = dircompare.compareSync(output_path, ref_path, { compareContent: true }) if (dump) { - fs.moveSync(output_path, path.join(t, 'reference'), {overwrite: true}) + fs.moveSync(output_path, ref_path, {overwrite: true}) } else { fs.removeSync(output_path) } actual_log.should.equal(ref_log) comp_res.same.should.be.true + // deliberately incorrect execution } else { const ref_error = read(t, 'error') try { From 40406fbc0396a99efbe15a6fbe0295a36c59c6c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Tue, 22 Nov 2022 21:26:48 +0100 Subject: [PATCH 044/120] Filtering applied to PCBs as well --- roadmap.md | 1 + src/pcbs.js | 44 +++++++++++++++---------------- test/fixtures/bundle.zip | Bin 927 -> 923 bytes test/fixtures/bundle/config.yaml | 4 +-- test/pcbs/mock_footprints.yaml | 12 ++++----- test/pcbs/references.yaml | 4 +-- 6 files changed, 33 insertions(+), 32 deletions(-) diff --git a/roadmap.md b/roadmap.md index 55b4408..727e87a 100644 --- a/roadmap.md +++ b/roadmap.md @@ -72,6 +72,7 @@ - Create browserified version of semver lib - Or at least a shim with a console warning - Visualizing multiple outlines at once, with different colors +- Add snapping/measurement capabilities for quicker iteration ### Minor diff --git a/src/pcbs.js b/src/pcbs.js index 5eb0714..bf07401 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -2,6 +2,7 @@ const m = require('makerjs') const a = require('./assert') const prep = require('./prepare') const anchor_lib = require('./anchor') +const filter = require('./filter').parse const kicad_prefix = ` (kicad_pcb (version 20171130) (host pcbnew 5.1.6) @@ -149,20 +150,17 @@ exports.inject_footprint = (name, fp) => { footprint_types[name] = fp } -const footprint = exports._footprint = (config, name, points, point, net_indexer, component_indexer, units, extra) => { - - if (config === false) return '' +const footprint = exports._footprint = (points, net_indexer, component_indexer, units, extra) => (config, name, point) => { // config sanitization - a.unexpected(config, name, ['type', 'anchor', 'nets', 'anchors', 'params']) - const type = a.in(config.type, `${name}.type`, Object.keys(footprint_types)) - let anchor = anchor_lib.parse(config.anchor || {}, `${name}.anchor`, points, point)(units) + a.unexpected(config, name, ['what', 'nets', 'anchors', 'params']) + const what = a.in(config.what, `${name}.what`, Object.keys(footprint_types)) const nets = a.sane(config.nets || {}, `${name}.nets`, 'object')() const anchors = a.sane(config.anchors || {}, `${name}.anchors`, 'object')() const params = a.sane(config.params || {}, `${name}.params`, 'object')() // basic setup - const fp = footprint_types[type] + const fp = footprint_types[what] const parsed_params = {} // connecting other, non-net, non-anchor parameters @@ -184,12 +182,12 @@ const footprint = exports._footprint = (config, name, points, point, net_indexer parsed_params.ref_hide = extra.references ? '' : 'hide' // footprint positioning - parsed_params.at = `(at ${anchor.x} ${-anchor.y} ${anchor.r})` - parsed_params.rot = anchor.r + parsed_params.at = `(at ${point.x} ${-point.y} ${point.r})` + parsed_params.rot = point.r parsed_params.xy = (x, y) => { const new_anchor = anchor_lib.parse({ shift: [x, -y] - }, '_internal_footprint_xy', points, anchor)(units) + }, '_internal_footprint_xy', points, point)(units) return `${new_anchor.x} ${-new_anchor.y}` } @@ -224,7 +222,7 @@ const footprint = exports._footprint = (config, name, points, point, net_indexer // parsing anchor-type parameters parsed_params.anchors = {} for (const [anchor_name, anchor_config] of Object.entries(prep.extend(fp.anchors || {}, anchors))) { - let parsed_anchor = anchor_lib.parse(anchor_config || {}, `${name}.anchors.${anchor_name}`, points, anchor)(units) + let parsed_anchor = anchor_lib.parse(anchor_config || {}, `${name}.anchors.${anchor_name}`, points, point)(units) parsed_anchor.y = -parsed_anchor.y parsed_params.anchors[anchor_name] = parsed_anchor } @@ -273,21 +271,23 @@ exports.parse = (config, points, outlines, units) => { } const footprints = [] + const footprint_factory = footprint(points, net_indexer, component_indexer, units, {references}) - // key-level footprints - for (const [p_name, point] of Object.entries(points)) { - for (const [f_name, f] of Object.entries(point.meta.footprints || {})) { - footprints.push(footprint(f, `${p_name}.footprints.${f_name}`, points, point, net_indexer, component_indexer, units, {references})) - } - } - - // global one-off footprints + // generate footprints if (a.type(pcb_config.footprints)() == 'array') { pcb_config.footprints = {...pcb_config.footprints} } - const global_footprints = a.sane(pcb_config.footprints || {}, `pcbs.${pcb_name}.footprints`, 'object')() - for (const [gf_name, gf] of Object.entries(global_footprints)) { - footprints.push(footprint(gf, `pcbs.${pcb_name}.footprints.${gf_name}`, points, undefined, net_indexer, component_indexer, units, {references})) + const footprints_config = a.sane(pcb_config.footprints || {}, `pcbs.${pcb_name}.footprints`, 'object')() + for (const [f_name, f] of Object.entries(footprints_config)) { + const name = `pcbs.${pcb_name}.footprints.${f_name}` + a.sane(f, name, 'object')() + const mirror = a.sane(f.mirror || false, `${name}.mirror`, 'boolean')() + const where = filter(f.where, `${name}.where`, points, units, mirror) + delete f.mirror + delete f.where + for (const w of where) { + footprints.push(footprint_factory(f, name, w)) + } } // finalizing nets diff --git a/test/fixtures/bundle.zip b/test/fixtures/bundle.zip index 50aeedead64a46b709f319a443b43539a18be5d8..5314848e346b93eae8345d228321863abe20b335 100644 GIT binary patch delta 329 zcmbQwKAXKhz?+#xgn*_+~RKMN1HBPKJO`fWBLVSk0PPI zs6Uz$yZ*DBtywTR*4(TilrLe@Vy*+c`_?bun3={~cy~phf!9m{llRRccD#4w_09&L zHrQ+Awqbdy>V4U3ePwlB8K+7GzG?L3uU?#5@j{vH|KZ%DUmJfj26(e`JP(UnT?cge zwTU-OneR&1P8MVqo2_$$OZrq^|?@r{(9D n6clCVl@#lPeJwVtC>dg$9izhJ0A?kSfs;#_RoL>GKmi5-t=D!@ delta 347 zcmbQuKA*ilz?+#xgnu7umzJ5XSDBcb6B@$Hz`lKMQSxpe z2GOMz+zgB?FPIq^z=UnTBi~^I4wmDt+cBz4_F-0nnybQA%mh@< F008Hreu4l1 diff --git a/test/fixtures/bundle/config.yaml b/test/fixtures/bundle/config.yaml index e264ba3..87bf1ae 100644 --- a/test/fixtures/bundle/config.yaml +++ b/test/fixtures/bundle/config.yaml @@ -9,5 +9,5 @@ pcbs: outlines.edge.outline: box footprints: injected: - type: injected - anchor: matrix + what: injected + where: matrix diff --git a/test/pcbs/mock_footprints.yaml b/test/pcbs/mock_footprints.yaml index 03e07e9..6444a04 100644 --- a/test/pcbs/mock_footprints.yaml +++ b/test/pcbs/mock_footprints.yaml @@ -11,19 +11,19 @@ pcbs: outline: edge footprints: trace: - type: trace_test - anchor: + what: trace_test + where: shift: [1, 1] rotate: 30 zone: - type: zone_test - anchor: + what: zone_test + where: shift: [1, 1] rotate: 30 dyn: - type: dynamic_net_test + what: dynamic_net_test anc: - type: anchor_test + what: anchor_test anchors: end: ref: matrix diff --git a/test/pcbs/references.yaml b/test/pcbs/references.yaml index 1947118..49beda1 100644 --- a/test/pcbs/references.yaml +++ b/test/pcbs/references.yaml @@ -5,7 +5,7 @@ pcbs: shown: references: true footprints: - - type: references_test + - what: references_test hidden: footprints: - - type: references_test \ No newline at end of file + - what: references_test \ No newline at end of file From cf9007aa50e07660dd77c8961153fb20ea6135ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 3 Dec 2022 12:38:07 +0100 Subject: [PATCH 045/120] Generalize `asym` usage --- roadmap.md | 1 + src/assert.js | 11 +++++++++++ src/filter.js | 19 ++++++++++++------- src/outlines.js | 6 +++--- src/pcbs.js | 6 +++--- src/points.js | 6 +++--- test/outlines/circles.yaml | 2 +- test/outlines/polygons.yaml | 2 +- test/outlines/rectangles.yaml | 2 +- 9 files changed, 36 insertions(+), 19 deletions(-) diff --git a/roadmap.md b/roadmap.md index 727e87a..2a7acfe 100644 --- a/roadmap.md +++ b/roadmap.md @@ -35,6 +35,7 @@ - Maybe a partial markdown preprocess to support bold and italic? - Look into gr_curve to possibly add beziers to the kicad conversion - Support curves (arcs as well as Béziers) in polygons + - Also, three point arcs, tangents, earier "circle tools" in general - Add snappable line footprint - Figure out a manual, but still reasonably comfortable routing method directly from the config - Eeschema support for pcbs diff --git a/src/assert.js b/src/assert.js index 916fa81..ad55436 100644 --- a/src/assert.js +++ b/src/assert.js @@ -67,3 +67,14 @@ exports.trbl = (raw, name, _default=0) => units => { if (raw.length == 2) raw = [raw[1], raw[0], raw[1], raw[0]] return arr(raw, name, 4, 'number', _default)(units) } + +exports.asym = (raw, name) => { + // allow different aliases + source_aliases = ['source', 'origin', 'base', 'primary', 'left'] + clone_aliases = ['clone', 'image', 'derived', 'secondary', 'right'] + _in(raw, name, ['both'].concat(source_aliases, clone_aliases)) + // return aliases to canonical names + if (source_aliases.includes(raw)) return 'source' + if (clone_aliases.includes(raw)) return 'clone' + return raw +} diff --git a/src/filter.js b/src/filter.js index cbece43..ba7f5e7 100644 --- a/src/filter.js +++ b/src/filter.js @@ -108,7 +108,7 @@ const contains_object = (val) => { return false } -exports.parse = (config, name, points={}, units={}, include_mirrors=false) => { +exports.parse = (config, name, points={}, units={}, asym='source') => { let result = [] @@ -118,18 +118,23 @@ exports.parse = (config, name, points={}, units={}, include_mirrors=false) => { // if a filter decl is an object, or an array that contains an object at any depth, it is an anchor } else if (contains_object(config)) { - result.push(anchor(config, name, points)(units)) - if (include_mirrors) { + if (['source', 'both'].includes(asym)) { + result.push(anchor(config, name, points)(units)) + } + if (['clone', 'both'].includes(asym)) { // this is strict: if the ref of the anchor doesn't have a mirror pair, it will error out result.push(anchor(config, name, points, undefined, true)(units)) } - // otherwise, it is treated as a condition to filter all available points + // otherwise, it is treated as a condition to filter all available points } else { - result = Object.values(points).filter(complex(config, name, units)) - if (include_mirrors) { + source = Object.values(points).filter(complex(config, name, units)) + if (['source', 'both'].includes(asym)) { + result = result.concat(source) + } + if (['source', 'both'].includes(asym)) { // this is permissive: we only include mirrored versions if they exist, and don't fuss if they don't - result = result.concat(result.map(p => points[anchor_lib.mirror(p.meta.name)]).filter(p => !!p)) + result = result.concat(source.map(p => points[anchor_lib.mirror(p.meta.name)]).filter(p => !!p)) } } diff --git a/src/outlines.js b/src/outlines.js index 8afcd9b..fe08c04 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -191,12 +191,12 @@ exports.parse = (config = {}, points = {}, units = {}) => { const operation = u[a.in(part.operation || 'add', `${name}.operation`, ['add', 'subtract', 'intersect', 'stack'])] const what = a.in(part.what || 'outline', `${name}.what`, ['rectangle', 'circle', 'polygon', 'outline']) const bound = !!part.bound - const mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() + const asym = a.asym(part.asym || 'source', `${name}.asym`) // `where` is delayed until we have all, potentially what-dependent units // default where is [0, 0], as per filter parsing const original_where = part.where // need to save, so the delete's don't get rid of it below - const where = units => filter(original_where, `${name}.where`, points, units, mirror) + const where = units => filter(original_where, `${name}.where`, points, units, asym) const adjust = anchor(part.adjust || {}, `${name}.adjust`, points)(units) const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) @@ -209,7 +209,7 @@ exports.parse = (config = {}, points = {}, units = {}) => { delete part.operation delete part.what delete part.bound - delete part.mirror + delete part.asym delete part.where delete part.adjust delete part.fillet diff --git a/src/pcbs.js b/src/pcbs.js index bf07401..bb49ce6 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -281,9 +281,9 @@ exports.parse = (config, points, outlines, units) => { for (const [f_name, f] of Object.entries(footprints_config)) { const name = `pcbs.${pcb_name}.footprints.${f_name}` a.sane(f, name, 'object')() - const mirror = a.sane(f.mirror || false, `${name}.mirror`, 'boolean')() - const where = filter(f.where, `${name}.where`, points, units, mirror) - delete f.mirror + const asym = a.asym(f.asym || 'source', `${name}.asym`) + const where = filter(f.where, `${name}.where`, points, units, asym) + delete f.asym delete f.where for (const w of where) { footprints.push(footprint_factory(f, name, w)) diff --git a/src/points.js b/src/points.js index 2fd72f7..10ba6ed 100644 --- a/src/points.js +++ b/src/points.js @@ -128,7 +128,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, key.height = a.sane(key.height, `${key.name}.height`, 'number')(units) key.padding = a.sane(key.padding, `${key.name}.padding`, 'number')(units) key.skip = a.sane(key.skip, `${key.name}.skip`, 'boolean')() - key.asym = a.in(key.asym, `${key.name}.asym`, ['left', 'right', 'both']) + key.asym = a.asym(key.asym, `${key.name}.asym`) // templating support for (const [k, v] of Object.entries(key)) { @@ -256,14 +256,14 @@ const parse_axis = exports._parse_axis = (config, name, points, units) => { const perform_mirror = exports._perform_mirror = (point, axis) => { if (axis !== undefined) { point.meta.mirrored = false - if (point.meta.asym == 'left') return ['', null] + if (point.meta.asym == 'source') return ['', null] const mp = point.clone().mirror(axis) const mirrored_name = `mirror_${point.meta.name}` mp.meta = prep.extend(mp.meta, mp.meta.mirror || {}) mp.meta.name = mirrored_name mp.meta.colrow = `mirror_${mp.meta.colrow}` mp.meta.mirrored = true - if (point.meta.asym == 'right') { + if (point.meta.asym == 'clone') { point.meta.skip = true } return [mirrored_name, mp] diff --git a/test/outlines/circles.yaml b/test/outlines/circles.yaml index f1aaa51..e83e4e7 100644 --- a/test/outlines/circles.yaml +++ b/test/outlines/circles.yaml @@ -22,4 +22,4 @@ outlines: ref: matrix shift: [-10, 10] radius: 5 - mirror: true \ No newline at end of file + asym: both \ No newline at end of file diff --git a/test/outlines/polygons.yaml b/test/outlines/polygons.yaml index 09bf345..7dfc88e 100644 --- a/test/outlines/polygons.yaml +++ b/test/outlines/polygons.yaml @@ -25,4 +25,4 @@ outlines: - shift: [-10, 15] - shift: [5, -10] - shift: [-10, 0] - mirror: true \ No newline at end of file + asym: both \ No newline at end of file diff --git a/test/outlines/rectangles.yaml b/test/outlines/rectangles.yaml index df2cab0..2982e5e 100644 --- a/test/outlines/rectangles.yaml +++ b/test/outlines/rectangles.yaml @@ -23,4 +23,4 @@ outlines: ref: matrix shift: [-10, 10] size: 10 - mirror: true \ No newline at end of file + asym: both \ No newline at end of file From 1da986e60952dbda96c6ef53a5514157c0cd528d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 3 Dec 2022 17:19:51 +0100 Subject: [PATCH 046/120] Minor comment fixes --- src/ergogen.js | 2 ++ test/index.js | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ergogen.js b/src/ergogen.js index 62afa0d..1281258 100644 --- a/src/ergogen.js +++ b/src/ergogen.js @@ -15,6 +15,8 @@ const process = async (raw, debug=false, logger=()=>{}) => { let empty = true let [config, format] = io.interpret(raw, logger) let suffix = format + // KLE conversion warrants automaticly engaging debug mode + // as, usually, we're only interested in the points anyway if (format == 'KLE') { suffix = `${format} (Auto-debug)` debug = true diff --git a/test/index.js b/test/index.js index 9fbf57f..34d4f9c 100644 --- a/test/index.js +++ b/test/index.js @@ -27,7 +27,7 @@ for (const unit of glob.sync(path.join(__dirname, 'unit', '*.js'))) { // Integration tests // the --what switch supports categories (like `points` and `outlines`) -// as well as individual tests using slash-notation (like `points/000`) +// as well as individual tests using slash-notation (like `points/default`) // the --dump switch can output the new results, overriding the old reference const cap = s => s.charAt(0).toUpperCase() + s.slice(1) From 17dc5ab169a4542159509cf6907ff80eee4bcaa5 Mon Sep 17 00:00:00 2001 From: torik42 <77811180+torik42@users.noreply.github.com> Date: Thu, 13 Jan 2022 00:25:49 +0100 Subject: [PATCH 047/120] (fix) allow mirroring around origin --- src/points.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/points.js b/src/points.js index 10ba6ed..d20bf40 100644 --- a/src/points.js +++ b/src/points.js @@ -329,7 +329,7 @@ exports.parse = (config, units) => { // per-zone mirroring for the new keys const axis = parse_axis(mirror, `points.zones.${zone_name}.mirror`, points, units) - if (axis) { + if (axis !== undefined) { const mirrored_points = {} for (const new_point of Object.values(new_points)) { const [mname, mp] = perform_mirror(new_point, axis) @@ -352,7 +352,7 @@ exports.parse = (config, units) => { const global_axis = parse_axis(global_mirror, `points.mirror`, points, units) const global_mirrored_points = {} for (const point of Object.values(points)) { - if (global_axis && point.mirrored === undefined) { + if (global_axis !== undefined && point.mirrored === undefined) { const [mname, mp] = perform_mirror(point, global_axis) if (mp) { global_mirrored_points[mname] = mp From 53b6a98edc3393f62555a9eb9913b67fac09ef4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 3 Dec 2022 17:40:01 +0100 Subject: [PATCH 048/120] De-python-ization --- src/assert.js | 4 ++-- src/filter.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/assert.js b/src/assert.js index ad55436..de74169 100644 --- a/src/assert.js +++ b/src/assert.js @@ -70,8 +70,8 @@ exports.trbl = (raw, name, _default=0) => units => { exports.asym = (raw, name) => { // allow different aliases - source_aliases = ['source', 'origin', 'base', 'primary', 'left'] - clone_aliases = ['clone', 'image', 'derived', 'secondary', 'right'] + const source_aliases = ['source', 'origin', 'base', 'primary', 'left'] + const clone_aliases = ['clone', 'image', 'derived', 'secondary', 'right'] _in(raw, name, ['both'].concat(source_aliases, clone_aliases)) // return aliases to canonical names if (source_aliases.includes(raw)) return 'source' diff --git a/src/filter.js b/src/filter.js index ba7f5e7..f97a761 100644 --- a/src/filter.js +++ b/src/filter.js @@ -128,7 +128,7 @@ exports.parse = (config, name, points={}, units={}, asym='source') => { // otherwise, it is treated as a condition to filter all available points } else { - source = Object.values(points).filter(complex(config, name, units)) + const source = Object.values(points).filter(complex(config, name, units)) if (['source', 'both'].includes(asym)) { result = result.concat(source) } From 71419145ad7de2fd107fa887c982b822c7ff0583 Mon Sep 17 00:00:00 2001 From: Michael van Eerd Date: Mon, 3 Jan 2022 22:42:43 +0100 Subject: [PATCH 049/120] fix (mx): Rotate hotswap pads along with point --- src/footprints/mx.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/footprints/mx.js b/src/footprints/mx.js index 4bfb859..33ed5dd 100644 --- a/src/footprints/mx.js +++ b/src/footprints/mx.js @@ -64,8 +64,8 @@ module.exports = { (pad "" np_thru_hole circle (at ${def_neg}3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}7.085 -2.54 180) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from.str}) - (pad 2 smd rect (at ${def_pos}5.842 -5.08 180) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to.str}) + (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.rot+180}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from.str}) + (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.rot+180}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to.str}) ` } else { return ` From 8a57891b24a58b1f186878639531207fedb52f4a Mon Sep 17 00:00:00 2001 From: Michael van Eerd Date: Sun, 27 Mar 2022 00:21:48 +0100 Subject: [PATCH 050/120] fix: Remove superfluous rotation of 180 on a rectangular pad --- src/footprints/mx.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/footprints/mx.js b/src/footprints/mx.js index 33ed5dd..5866661 100644 --- a/src/footprints/mx.js +++ b/src/footprints/mx.js @@ -64,8 +64,8 @@ module.exports = { (pad "" np_thru_hole circle (at ${def_neg}3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.rot+180}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from.str}) - (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.rot+180}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to.str}) + (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from.str}) + (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to.str}) ` } else { return ` From 07d6fcfb34d955ceeed1f92f6064aa88443e327b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 3 Dec 2022 18:11:11 +0100 Subject: [PATCH 051/120] Improve PCB test readability --- test/index.js | 5 +- test/pcbs/mock_footprints___pcbs.json | 3 - .../mock_footprints___pcbs_main.kicad_pcb | 190 ++++++++++++++++++ test/pcbs/references___pcbs.json | 4 - test/pcbs/references___pcbs_hidden.kicad_pcb | 112 +++++++++++ test/pcbs/references___pcbs_shown.kicad_pcb | 112 +++++++++++ 6 files changed, 417 insertions(+), 9 deletions(-) delete mode 100644 test/pcbs/mock_footprints___pcbs.json create mode 100644 test/pcbs/mock_footprints___pcbs_main.kicad_pcb delete mode 100644 test/pcbs/references___pcbs.json create mode 100644 test/pcbs/references___pcbs_hidden.kicad_pcb create mode 100644 test/pcbs/references___pcbs_shown.kicad_pcb diff --git a/test/index.js b/test/index.js index 34d4f9c..e1fc995 100644 --- a/test/index.js +++ b/test/index.js @@ -55,8 +55,9 @@ const test = function(input_path) { } else { fs.writeJSONSync(expected_path, output_part, {spaces: 4}) } + } else { + output_part.should.deep.equal(expected) } - output_part.should.deep.equal(expected) } }) } @@ -79,7 +80,7 @@ if (what) { }) } } else { - for (const part of ['points', 'outlines', 'cases', 'pcbs']) { + for (const part of ['points', 'outlines', 'cases', 'pcbs', 'footprints']) { describe(cap(part), function() { for (const i of glob.sync(path.join(__dirname, part, '*.yaml'))) { test.call(this, i) diff --git a/test/pcbs/mock_footprints___pcbs.json b/test/pcbs/mock_footprints___pcbs.json deleted file mode 100644 index c4083c7..0000000 --- a/test/pcbs/mock_footprints___pcbs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "\n \n(kicad_pcb (version 20171130) (host pcbnew 5.1.6)\n\n (page A3)\n (title_block\n (title main)\n (rev v1.0.0)\n (company Unknown)\n )\n\n (general\n (thickness 1.6)\n )\n\n (layers\n (0 F.Cu signal)\n (31 B.Cu signal)\n (32 B.Adhes user)\n (33 F.Adhes user)\n (34 B.Paste user)\n (35 F.Paste user)\n (36 B.SilkS user)\n (37 F.SilkS user)\n (38 B.Mask user)\n (39 F.Mask user)\n (40 Dwgs.User user)\n (41 Cmts.User user)\n (42 Eco1.User user)\n (43 Eco2.User user)\n (44 Edge.Cuts user)\n (45 Margin user)\n (46 B.CrtYd user)\n (47 F.CrtYd user)\n (48 B.Fab user)\n (49 F.Fab user)\n )\n\n (setup\n (last_trace_width 0.25)\n (trace_clearance 0.2)\n (zone_clearance 0.508)\n (zone_45_only no)\n (trace_min 0.2)\n (via_size 0.8)\n (via_drill 0.4)\n (via_min_size 0.4)\n (via_min_drill 0.3)\n (uvia_size 0.3)\n (uvia_drill 0.1)\n (uvias_allowed no)\n (uvia_min_size 0.2)\n (uvia_min_drill 0.1)\n (edge_width 0.05)\n (segment_width 0.2)\n (pcb_text_width 0.3)\n (pcb_text_size 1.5 1.5)\n (mod_edge_width 0.12)\n (mod_text_size 1 1)\n (mod_text_width 0.15)\n (pad_size 1.524 1.524)\n (pad_drill 0.762)\n (pad_to_mask_clearance 0.05)\n (aux_axis_origin 0 0)\n (visible_elements FFFFFF7F)\n (pcbplotparams\n (layerselection 0x010fc_ffffffff)\n (usegerberextensions false)\n (usegerberattributes true)\n (usegerberadvancedattributes true)\n (creategerberjobfile true)\n (excludeedgelayer true)\n (linewidth 0.100000)\n (plotframeref false)\n (viasonmask false)\n (mode 1)\n (useauxorigin false)\n (hpglpennumber 1)\n (hpglpenspeed 20)\n (hpglpendiameter 15.000000)\n (psnegative false)\n (psa4output false)\n (plotreference true)\n (plotvalue true)\n (plotinvisibletext false)\n (padsonsilk false)\n (subtractmaskfromsilk false)\n (outputformat 1)\n (mirror false)\n (drillshape 1)\n (scaleselection 1)\n (outputdirectory \"\"))\n )\n\n (net 0 \"\")\n(net 1 \"P1\")\n(net 2 \"T3_1\")\n(net 3 \"T3_2\")\n(net 4 \"T3_3\")\n \n (net_class Default \"This is the default net class.\"\n (clearance 0.2)\n (trace_width 0.25)\n (via_dia 0.8)\n (via_drill 0.4)\n (uvia_dia 0.3)\n (uvia_drill 0.1)\n (add_net \"\")\n(add_net \"P1\")\n(add_net \"T3_1\")\n(add_net \"T3_2\")\n(add_net \"T3_3\")\n )\n\n \n\n (module trace_test (layer F.Cu) (tedit 5CF31DEF)\n\n (at 1 -1 30)\n\n (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 1 \"P1\") (solder_mask_margin 0.2))\n\n (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 1 \"P1\") (solder_mask_margin 0.2))\n\n )\n\n (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.25) (layer F.Cu) (net 1))\n\n \n\n\n (module zone_test (layer F.Cu) (tedit 5CF31DEF)\n\n (at 1 -1 30)\n\n (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 1 \"P1\") (solder_mask_margin 0.2))\n\n (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 1 \"P1\") (solder_mask_margin 0.2))\n\n )\n\n (zone (net 1) (net_name P1) (layer F.Cu) (tstamp 0) (hatch full 0.508)\n (connect_pads (clearance 0.508))\n (min_thickness 0.254)\n (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))\n (polygon (pts (xy 7.830127 0.8301270000000001) (xy 2.830127 -7.830127) (xy -5.830127 -2.830127) (xy -0.8301270000000001 5.830127)))\n )\n\n \n \n\n (module dynamic_net_test (layer F.Cu) (tedit 5CF31DEF)\n\n (at 0 0 0)\n\n (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 2 \"T3_1\") (solder_mask_margin 0.2))\n\n (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 3 \"T3_2\") (solder_mask_margin 0.2))\n\n (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 4 \"T3_3\") (solder_mask_margin 0.2))\n\n )\n\n \n \n\n (module anchor_test (layer F.Cu) (tedit 5CF31DEF)\n\n (at 0 0 0)\n\n (fp_line (start 0 0) (end 10 -10) (layer Dwgs.User) (width 0.05))\n\n )\n\n \n (gr_line (start -9.5 9.5) (end 9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15))\n(gr_line (start 9.5 9.5) (end 9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15))\n(gr_line (start 9.5 -9.5) (end -9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15))\n(gr_line (start -9.5 -9.5) (end -9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15))\n \n)\n\n " -} \ No newline at end of file diff --git a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb new file mode 100644 index 0000000..f3a1b49 --- /dev/null +++ b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb @@ -0,0 +1,190 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title main) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "P1") +(net 2 "T3_1") +(net 3 "T3_2") +(net 4 "T3_3") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "P1") +(add_net "T3_1") +(add_net "T3_2") +(add_net "T3_3") + ) + + + + (module trace_test (layer F.Cu) (tedit 5CF31DEF) + + (at 1 -1 30) + + (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + ) + + (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.25) (layer F.Cu) (net 1)) + + + + + (module zone_test (layer F.Cu) (tedit 5CF31DEF) + + (at 1 -1 30) + + (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + ) + + (zone (net 1) (net_name P1) (layer F.Cu) (tstamp 0) (hatch full 0.508) + (connect_pads (clearance 0.508)) + (min_thickness 0.254) + (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon (pts (xy 7.830127 0.8301270000000001) (xy 2.830127 -7.830127) (xy -5.830127 -2.830127) (xy -0.8301270000000001 5.830127))) + ) + + + + + (module dynamic_net_test (layer F.Cu) (tedit 5CF31DEF) + + (at 0 0 0) + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 2 "T3_1") (solder_mask_margin 0.2)) + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 3 "T3_2") (solder_mask_margin 0.2)) + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 4 "T3_3") (solder_mask_margin 0.2)) + + ) + + + + + (module anchor_test (layer F.Cu) (tedit 5CF31DEF) + + (at 0 0 0) + + (fp_line (start 0 0) (end 10 -10) (layer Dwgs.User) (width 0.05)) + + ) + + + (gr_line (start -9.5 9.5) (end 9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 9.5 9.5) (end 9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 9.5 -9.5) (end -9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start -9.5 -9.5) (end -9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) + +) + + \ No newline at end of file diff --git a/test/pcbs/references___pcbs.json b/test/pcbs/references___pcbs.json deleted file mode 100644 index 0a24f58..0000000 --- a/test/pcbs/references___pcbs.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "shown": "\n \n(kicad_pcb (version 20171130) (host pcbnew 5.1.6)\n\n (page A3)\n (title_block\n (title shown)\n (rev v1.0.0)\n (company Unknown)\n )\n\n (general\n (thickness 1.6)\n )\n\n (layers\n (0 F.Cu signal)\n (31 B.Cu signal)\n (32 B.Adhes user)\n (33 F.Adhes user)\n (34 B.Paste user)\n (35 F.Paste user)\n (36 B.SilkS user)\n (37 F.SilkS user)\n (38 B.Mask user)\n (39 F.Mask user)\n (40 Dwgs.User user)\n (41 Cmts.User user)\n (42 Eco1.User user)\n (43 Eco2.User user)\n (44 Edge.Cuts user)\n (45 Margin user)\n (46 B.CrtYd user)\n (47 F.CrtYd user)\n (48 B.Fab user)\n (49 F.Fab user)\n )\n\n (setup\n (last_trace_width 0.25)\n (trace_clearance 0.2)\n (zone_clearance 0.508)\n (zone_45_only no)\n (trace_min 0.2)\n (via_size 0.8)\n (via_drill 0.4)\n (via_min_size 0.4)\n (via_min_drill 0.3)\n (uvia_size 0.3)\n (uvia_drill 0.1)\n (uvias_allowed no)\n (uvia_min_size 0.2)\n (uvia_min_drill 0.1)\n (edge_width 0.05)\n (segment_width 0.2)\n (pcb_text_width 0.3)\n (pcb_text_size 1.5 1.5)\n (mod_edge_width 0.12)\n (mod_text_size 1 1)\n (mod_text_width 0.15)\n (pad_size 1.524 1.524)\n (pad_drill 0.762)\n (pad_to_mask_clearance 0.05)\n (aux_axis_origin 0 0)\n (visible_elements FFFFFF7F)\n (pcbplotparams\n (layerselection 0x010fc_ffffffff)\n (usegerberextensions false)\n (usegerberattributes true)\n (usegerberadvancedattributes true)\n (creategerberjobfile true)\n (excludeedgelayer true)\n (linewidth 0.100000)\n (plotframeref false)\n (viasonmask false)\n (mode 1)\n (useauxorigin false)\n (hpglpennumber 1)\n (hpglpenspeed 20)\n (hpglpendiameter 15.000000)\n (psnegative false)\n (psa4output false)\n (plotreference true)\n (plotvalue true)\n (plotinvisibletext false)\n (padsonsilk false)\n (subtractmaskfromsilk false)\n (outputformat 1)\n (mirror false)\n (drillshape 1)\n (scaleselection 1)\n (outputdirectory \"\"))\n )\n\n (net 0 \"\")\n \n (net_class Default \"This is the default net class.\"\n (clearance 0.2)\n (trace_width 0.25)\n (via_dia 0.8)\n (via_drill 0.4)\n (uvia_dia 0.3)\n (uvia_drill 0.1)\n (add_net \"\")\n )\n\n references shown\n \n \n)\n\n ", - "hidden": "\n \n(kicad_pcb (version 20171130) (host pcbnew 5.1.6)\n\n (page A3)\n (title_block\n (title hidden)\n (rev v1.0.0)\n (company Unknown)\n )\n\n (general\n (thickness 1.6)\n )\n\n (layers\n (0 F.Cu signal)\n (31 B.Cu signal)\n (32 B.Adhes user)\n (33 F.Adhes user)\n (34 B.Paste user)\n (35 F.Paste user)\n (36 B.SilkS user)\n (37 F.SilkS user)\n (38 B.Mask user)\n (39 F.Mask user)\n (40 Dwgs.User user)\n (41 Cmts.User user)\n (42 Eco1.User user)\n (43 Eco2.User user)\n (44 Edge.Cuts user)\n (45 Margin user)\n (46 B.CrtYd user)\n (47 F.CrtYd user)\n (48 B.Fab user)\n (49 F.Fab user)\n )\n\n (setup\n (last_trace_width 0.25)\n (trace_clearance 0.2)\n (zone_clearance 0.508)\n (zone_45_only no)\n (trace_min 0.2)\n (via_size 0.8)\n (via_drill 0.4)\n (via_min_size 0.4)\n (via_min_drill 0.3)\n (uvia_size 0.3)\n (uvia_drill 0.1)\n (uvias_allowed no)\n (uvia_min_size 0.2)\n (uvia_min_drill 0.1)\n (edge_width 0.05)\n (segment_width 0.2)\n (pcb_text_width 0.3)\n (pcb_text_size 1.5 1.5)\n (mod_edge_width 0.12)\n (mod_text_size 1 1)\n (mod_text_width 0.15)\n (pad_size 1.524 1.524)\n (pad_drill 0.762)\n (pad_to_mask_clearance 0.05)\n (aux_axis_origin 0 0)\n (visible_elements FFFFFF7F)\n (pcbplotparams\n (layerselection 0x010fc_ffffffff)\n (usegerberextensions false)\n (usegerberattributes true)\n (usegerberadvancedattributes true)\n (creategerberjobfile true)\n (excludeedgelayer true)\n (linewidth 0.100000)\n (plotframeref false)\n (viasonmask false)\n (mode 1)\n (useauxorigin false)\n (hpglpennumber 1)\n (hpglpenspeed 20)\n (hpglpendiameter 15.000000)\n (psnegative false)\n (psa4output false)\n (plotreference true)\n (plotvalue true)\n (plotinvisibletext false)\n (padsonsilk false)\n (subtractmaskfromsilk false)\n (outputformat 1)\n (mirror false)\n (drillshape 1)\n (scaleselection 1)\n (outputdirectory \"\"))\n )\n\n (net 0 \"\")\n \n (net_class Default \"This is the default net class.\"\n (clearance 0.2)\n (trace_width 0.25)\n (via_dia 0.8)\n (via_drill 0.4)\n (uvia_dia 0.3)\n (uvia_drill 0.1)\n (add_net \"\")\n )\n\n references hidden\n \n \n)\n\n " -} diff --git a/test/pcbs/references___pcbs_hidden.kicad_pcb b/test/pcbs/references___pcbs_hidden.kicad_pcb new file mode 100644 index 0000000..9938111 --- /dev/null +++ b/test/pcbs/references___pcbs_hidden.kicad_pcb @@ -0,0 +1,112 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title hidden) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") + ) + + references hidden + + +) + + \ No newline at end of file diff --git a/test/pcbs/references___pcbs_shown.kicad_pcb b/test/pcbs/references___pcbs_shown.kicad_pcb new file mode 100644 index 0000000..c5f0994 --- /dev/null +++ b/test/pcbs/references___pcbs_shown.kicad_pcb @@ -0,0 +1,112 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title shown) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") + ) + + references shown + + +) + + \ No newline at end of file From 820a1a28884808563b5a75925ce77f14a7e92fc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 3 Dec 2022 20:41:55 +0100 Subject: [PATCH 052/120] Add support for footprint adjustment --- src/filter.js | 2 +- src/pcbs.js | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/filter.js b/src/filter.js index f97a761..ca1ef01 100644 --- a/src/filter.js +++ b/src/filter.js @@ -126,7 +126,7 @@ exports.parse = (config, name, points={}, units={}, asym='source') => { result.push(anchor(config, name, points, undefined, true)(units)) } - // otherwise, it is treated as a condition to filter all available points + // otherwise, it is treated as a condition to filter all available points } else { const source = Object.values(points).filter(complex(config, name, units)) if (['source', 'both'].includes(asym)) { diff --git a/src/pcbs.js b/src/pcbs.js index bb49ce6..05a03e5 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -1,7 +1,7 @@ const m = require('makerjs') const a = require('./assert') const prep = require('./prepare') -const anchor_lib = require('./anchor') +const anchor = require('./anchor').parse const filter = require('./filter').parse const kicad_prefix = ` @@ -185,7 +185,7 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, parsed_params.at = `(at ${point.x} ${-point.y} ${point.r})` parsed_params.rot = point.r parsed_params.xy = (x, y) => { - const new_anchor = anchor_lib.parse({ + const new_anchor = anchor({ shift: [x, -y] }, '_internal_footprint_xy', points, point)(units) return `${new_anchor.x} ${-new_anchor.y}` @@ -222,7 +222,7 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, // parsing anchor-type parameters parsed_params.anchors = {} for (const [anchor_name, anchor_config] of Object.entries(prep.extend(fp.anchors || {}, anchors))) { - let parsed_anchor = anchor_lib.parse(anchor_config || {}, `${name}.anchors.${anchor_name}`, points, point)(units) + let parsed_anchor = anchor(anchor_config || {}, `${name}.anchors.${anchor_name}`, points, point)(units) parsed_anchor.y = -parsed_anchor.y parsed_params.anchors[anchor_name] = parsed_anchor } @@ -283,10 +283,13 @@ exports.parse = (config, points, outlines, units) => { a.sane(f, name, 'object')() const asym = a.asym(f.asym || 'source', `${name}.asym`) const where = filter(f.where, `${name}.where`, points, units, asym) + const adjust = anchor(f.adjust || {}, `${name}.adjust`, points)(units) delete f.asym delete f.where + delete f.adjust for (const w of where) { - footprints.push(footprint_factory(f, name, w)) + const aw = w.clone().shift(adjust.p).rotate(adjust.r, false) + footprints.push(footprint_factory(f, name, aw)) } } From f5f787edce94431798ff47d528f5acf1e2e9863e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 3 Dec 2022 20:42:19 +0100 Subject: [PATCH 053/120] Fix diode THT pad order --- src/footprints/diode.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/footprints/diode.js b/src/footprints/diode.js index 5208103..63f6e84 100644 --- a/src/footprints/diode.js +++ b/src/footprints/diode.js @@ -40,8 +40,8 @@ module.exports = { (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.net.from.str}) ${''/* THT terminals */} - (pad 1 thru_hole circle (at 3.81 0 ${p.rot}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.net.from.str}) - (pad 2 thru_hole rect (at -3.81 0 ${p.rot}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.net.to.str}) + (pad 1 thru_hole rect (at -3.81 0 ${p.rot}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.net.to.str}) + (pad 2 thru_hole circle (at 3.81 0 ${p.rot}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.net.from.str}) ) ` From 02dac3316b9acaf268f45eee110409afedf90007 Mon Sep 17 00:00:00 2001 From: Miigon Date: Tue, 3 May 2022 07:14:46 +0800 Subject: [PATCH 054/120] TRRS: add missing stabilizer hole for reverse footprint --- src/footprints/trrs.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/footprints/trrs.js b/src/footprints/trrs.js index 7ec90ce..09863f5 100644 --- a/src/footprints/trrs.js +++ b/src/footprints/trrs.js @@ -48,10 +48,13 @@ module.exports = { (fp_line (start 0.75 12.1) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) (fp_line (start 0.75 0) (end -5.35 0) (layer Dwgs.User) (width 0.15)) - ${''/* stabilizers */} - (pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) ` + function stabilizers(def_pos) { + return ` + (pad "" np_thru_hole circle (at ${def_pos} 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at ${def_pos} 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + ` + } function pins(def_neg, def_pos) { return ` (pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.A.str}) @@ -63,18 +66,22 @@ module.exports = { if(p.param.reverse & p.param.symmetric) { return ` ${standard} + ${stabilizers('-2.3')} ${pins('0', '-4.6')} ${pins('-4.6', '0')}) ` } else if(p.param.reverse) { return ` ${standard} + ${stabilizers('-2.3')} + ${stabilizers('2.3')} ${pins('-4.6', '0')} ${pins('4.6', '0')}) ` } else { return ` ${standard} + ${stabilizers('-2.3')} ${pins('-4.6', '0')}) ` } From 561309139ac7e9296745a9c8610bca4336c5ef2f Mon Sep 17 00:00:00 2001 From: Miigon Date: Tue, 3 May 2022 07:39:43 +0800 Subject: [PATCH 055/120] TRRS: properly showing p.ref instead of 'REF**' --- src/footprints/trrs.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/footprints/trrs.js b/src/footprints/trrs.js index 09863f5..e26e842 100644 --- a/src/footprints/trrs.js +++ b/src/footprints/trrs.js @@ -1,8 +1,8 @@ // TRRS-PJ-320A-dual // _________________ -// | (1) (3) (4)| +// | (2) (3) (4)| // | | -// |___(2)__________| +// |_(1)____________| // // Nets // A: corresponds to pin 1 @@ -36,7 +36,7 @@ module.exports = { ${p.at /* parametric position */} ${'' /* footprint reference */} - (fp_text reference REF** (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text reference "${p.ref}" (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) (fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${''/* corner marks */} From 05a489fa6da15ebd3a84af232810e45f316d194e Mon Sep 17 00:00:00 2001 From: Miigon Date: Tue, 3 May 2022 15:10:53 +0800 Subject: [PATCH 056/120] more compact trrs footprint --- src/footprints/trrs.js | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/src/footprints/trrs.js b/src/footprints/trrs.js index e26e842..7b30569 100644 --- a/src/footprints/trrs.js +++ b/src/footprints/trrs.js @@ -1,8 +1,24 @@ // TRRS-PJ-320A-dual +// +// Normal footprint: // _________________ -// | (2) (3) (4)| +// | (2) (3) (4)| // | | -// |_(1)____________| +// | (1) | +// |________________| +// +// Reverse footprint: +// _________________ +// | (2) (3) (4)| +// | (1) | +// | (1) | +// |___(2)___(3)_(4)| +// +// Reverse & symmetric footprint: +// _________________ +// | (1|2) (3) (4)| +// | | +// |_(1|2)___(3)_(4)| // // Nets // A: corresponds to pin 1 @@ -74,16 +90,16 @@ module.exports = { return ` ${standard} ${stabilizers('-2.3')} - ${stabilizers('2.3')} - ${pins('-4.6', '0')} - ${pins('4.6', '0')}) + ${stabilizers('0')} + ${pins('-2.3', '2.3')} + ${pins('0', '-4.6')}) ` - } else { - return ` - ${standard} - ${stabilizers('-2.3')} - ${pins('-4.6', '0')}) - ` - } + } else { + return ` + ${standard} + ${stabilizers('-2.3')} + ${pins('-4.6', '0')}) + ` + } } } From 158dc332121935912a34596dafa1114ae77a7679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 3 Dec 2022 21:23:45 +0100 Subject: [PATCH 057/120] Basic footprint tests --- test/footprints/button.yaml | 17 + test/footprints/button___pcbs_pcb.kicad_pcb | 175 ++++++++++ test/footprints/choc.yaml | 45 +++ test/footprints/choc___pcbs_pcb.kicad_pcb | 308 +++++++++++++++++ test/footprints/diode.yaml | 6 + test/footprints/diode___pcbs_pcb.kicad_pcb | 154 +++++++++ test/footprints/mx.yaml | 45 +++ test/footprints/mx___pcbs_pcb.kicad_pcb | 308 +++++++++++++++++ test/footprints/promicro.yaml | 11 + test/footprints/promicro___pcbs_pcb.kicad_pcb | 319 ++++++++++++++++++ test/footprints/trrs.yaml | 33 ++ test/footprints/trrs___pcbs_pcb.kicad_pcb | 228 +++++++++++++ 12 files changed, 1649 insertions(+) create mode 100644 test/footprints/button.yaml create mode 100644 test/footprints/button___pcbs_pcb.kicad_pcb create mode 100644 test/footprints/choc.yaml create mode 100644 test/footprints/choc___pcbs_pcb.kicad_pcb create mode 100644 test/footprints/diode.yaml create mode 100644 test/footprints/diode___pcbs_pcb.kicad_pcb create mode 100644 test/footprints/mx.yaml create mode 100644 test/footprints/mx___pcbs_pcb.kicad_pcb create mode 100644 test/footprints/promicro.yaml create mode 100644 test/footprints/promicro___pcbs_pcb.kicad_pcb create mode 100644 test/footprints/trrs.yaml create mode 100644 test/footprints/trrs___pcbs_pcb.kicad_pcb diff --git a/test/footprints/button.yaml b/test/footprints/button.yaml new file mode 100644 index 0000000..bcb66f0 --- /dev/null +++ b/test/footprints/button.yaml @@ -0,0 +1,17 @@ +points.zones.matrix: +pcbs.pcb.footprints: + + # front + - what: button + nets: + from: from + to: to + + # back + - what: button + nets: + from: from + to: to + params: + side: B + adjust.shift: [50, 0] \ No newline at end of file diff --git a/test/footprints/button___pcbs_pcb.kicad_pcb b/test/footprints/button___pcbs_pcb.kicad_pcb new file mode 100644 index 0000000..ffd8b1a --- /dev/null +++ b/test/footprints/button___pcbs_pcb.kicad_pcb @@ -0,0 +1,175 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "from") +(net 2 "to") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "from") +(add_net "to") + ) + + + + (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) + + (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") + (tags "SPST Tactile Switch") + + (at 0 0 0) + + (fp_text reference "B1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer F.SilkS) (width 0.15)) + + + (pad 1 smd rect (at -3.1 -1.85 0) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 1 "from")) + (pad 1 smd rect (at 3.1 -1.85 0) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 1 "from")) + (pad 2 smd rect (at -3.1 1.85 0) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 2 "to")) + (pad 2 smd rect (at 3.1 1.85 0) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 2 "to")) + ) + + + + + (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) + + (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") + (tags "SPST Tactile Switch") + + (at 50 0 0) + + (fp_text reference "B2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer B.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer B.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer B.SilkS) (width 0.15)) + (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer B.SilkS) (width 0.15)) + (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer B.SilkS) (width 0.15)) + (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer B.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer B.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer B.SilkS) (width 0.15)) + + + (pad 1 smd rect (at -3.1 -1.85 0) (size 1.8 1.1) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 1 smd rect (at 3.1 -1.85 0) (size 1.8 1.1) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 2 smd rect (at -3.1 1.85 0) (size 1.8 1.1) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + (pad 2 smd rect (at 3.1 1.85 0) (size 1.8 1.1) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + ) + + + + +) + + \ No newline at end of file diff --git a/test/footprints/choc.yaml b/test/footprints/choc.yaml new file mode 100644 index 0000000..303b117 --- /dev/null +++ b/test/footprints/choc.yaml @@ -0,0 +1,45 @@ +points.zones.matrix: +pcbs.pcb.footprints: + + # base + - what: choc + nets: + from: from + to: to + + # keycap visualization + - what: choc + nets: + from: from + to: to + params: + keycaps: true + adjust.shift: [50, 0] + + # reverse + - what: choc + nets: + from: from + to: to + params: + reverse: true + adjust.shift: [100, 0] + + # hotswap + - what: choc + nets: + from: from + to: to + params: + hotswap: true + adjust.shift: [150, 0] + + # both reverse and hotswap + - what: choc + nets: + from: from + to: to + params: + reverse: true + hotswap: true + adjust.shift: [200, 0] \ No newline at end of file diff --git a/test/footprints/choc___pcbs_pcb.kicad_pcb b/test/footprints/choc___pcbs_pcb.kicad_pcb new file mode 100644 index 0000000..3fabc5e --- /dev/null +++ b/test/footprints/choc___pcbs_pcb.kicad_pcb @@ -0,0 +1,308 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "from") +(net 2 "to") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "from") +(add_net "to") + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 0 0 0) + + + (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + + (pad 1 thru_hole circle (at 5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at 0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 2 "to")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 50 0 0) + + + (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad 1 thru_hole circle (at 5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at 0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 2 "to")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 100 0 0) + + + (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + + (pad 1 thru_hole circle (at 5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at 0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 2 "to")) + + + + (pad 1 thru_hole circle (at -5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at -0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 2 "to")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 150 0 0) + + + (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 2 smd rect (at 8.275 -3.75 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 200 0 0) + + + (fp_text reference "S5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 2 smd rect (at 8.275 -3.75 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + + + + (pad "" np_thru_hole circle (at -5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at 3.275 -5.95 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 1 "from")) + (pad 2 smd rect (at -8.275 -3.75 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 2 "to")) + ) + + + +) + + \ No newline at end of file diff --git a/test/footprints/diode.yaml b/test/footprints/diode.yaml new file mode 100644 index 0000000..bb465a3 --- /dev/null +++ b/test/footprints/diode.yaml @@ -0,0 +1,6 @@ +points.zones.matrix: +pcbs.pcb.footprints: + - what: diode + nets: + from: from + to: to \ No newline at end of file diff --git a/test/footprints/diode___pcbs_pcb.kicad_pcb b/test/footprints/diode___pcbs_pcb.kicad_pcb new file mode 100644 index 0000000..04e3966 --- /dev/null +++ b/test/footprints/diode___pcbs_pcb.kicad_pcb @@ -0,0 +1,154 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "from") +(net 2 "to") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "from") +(add_net "to") + ) + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 0 0 0) + + + (fp_text reference "D1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 0) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 2 "to")) + (pad 2 smd rect (at 1.65 0 0) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 1 smd rect (at -1.65 0 0) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + (pad 2 smd rect (at 1.65 0 0) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "from")) + + + (pad 1 thru_hole rect (at -3.81 0 0) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 2 "to")) + (pad 2 thru_hole circle (at 3.81 0 0) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "from")) + ) + + + + +) + + \ No newline at end of file diff --git a/test/footprints/mx.yaml b/test/footprints/mx.yaml new file mode 100644 index 0000000..fccbd2c --- /dev/null +++ b/test/footprints/mx.yaml @@ -0,0 +1,45 @@ +points.zones.matrix: +pcbs.pcb.footprints: + + # base + - what: mx + nets: + from: from + to: to + + # keycap visualization + - what: mx + nets: + from: from + to: to + params: + keycaps: true + adjust.shift: [50, 0] + + # reverse + - what: mx + nets: + from: from + to: to + params: + reverse: true + adjust.shift: [100, 0] + + # hotswap + - what: mx + nets: + from: from + to: to + params: + hotswap: true + adjust.shift: [150, 0] + + # both reverse and hotswap + - what: mx + nets: + from: from + to: to + params: + reverse: true + hotswap: true + adjust.shift: [200, 0] \ No newline at end of file diff --git a/test/footprints/mx___pcbs_pcb.kicad_pcb b/test/footprints/mx___pcbs_pcb.kicad_pcb new file mode 100644 index 0000000..dbb3d65 --- /dev/null +++ b/test/footprints/mx___pcbs_pcb.kicad_pcb @@ -0,0 +1,308 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "from") +(net 2 "to") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "from") +(add_net "to") + ) + + + + (module MX (layer F.Cu) (tedit 5DD4F656) + (at 0 0 0) + + + (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + + (pad 1 thru_hole circle (at 2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at -3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 2 "to")) + ) + + + + (module MX (layer F.Cu) (tedit 5DD4F656) + (at 50 0 0) + + + (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + + + + (pad 1 thru_hole circle (at 2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at -3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 2 "to")) + ) + + + + (module MX (layer F.Cu) (tedit 5DD4F656) + (at 100 0 0) + + + (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + + (pad 1 thru_hole circle (at 2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at -3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 2 "to")) + + + + (pad 1 thru_hole circle (at -2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at 3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 2 "to")) + ) + + + + (module MX (layer F.Cu) (tedit 5DD4F656) + (at 150 0 0) + + + (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -7.085 -2.54 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 2 smd rect (at 5.842 -5.08 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + ) + + + + (module MX (layer F.Cu) (tedit 5DD4F656) + (at 200 0 0) + + + (fp_text reference "S5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -7.085 -2.54 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 2 smd rect (at 5.842 -5.08 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + + + + (pad "" np_thru_hole circle (at -2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at 7.085 -2.54 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 1 "from")) + (pad 2 smd rect (at -5.842 -5.08 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 2 "to")) + ) + + + +) + + \ No newline at end of file diff --git a/test/footprints/promicro.yaml b/test/footprints/promicro.yaml new file mode 100644 index 0000000..f075b90 --- /dev/null +++ b/test/footprints/promicro.yaml @@ -0,0 +1,11 @@ +points.zones.matrix: +pcbs.pcb.footprints: + + # downward + - what: promicro + + # upward + - what: promicro + params: + orientation: up + adjust.shift: [50, 0] diff --git a/test/footprints/promicro___pcbs_pcb.kicad_pcb b/test/footprints/promicro___pcbs_pcb.kicad_pcb new file mode 100644 index 0000000..371f673 --- /dev/null +++ b/test/footprints/promicro___pcbs_pcb.kicad_pcb @@ -0,0 +1,319 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "RAW") +(net 2 "GND") +(net 3 "RST") +(net 4 "VCC") +(net 5 "P21") +(net 6 "P20") +(net 7 "P19") +(net 8 "P18") +(net 9 "P15") +(net 10 "P14") +(net 11 "P16") +(net 12 "P10") +(net 13 "P1") +(net 14 "P0") +(net 15 "P2") +(net 16 "P3") +(net 17 "P4") +(net 18 "P5") +(net 19 "P6") +(net 20 "P7") +(net 21 "P8") +(net 22 "P9") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "RAW") +(add_net "GND") +(add_net "RST") +(add_net "VCC") +(add_net "P21") +(add_net "P20") +(add_net "P19") +(add_net "P18") +(add_net "P15") +(add_net "P14") +(add_net "P16") +(add_net "P10") +(add_net "P1") +(add_net "P0") +(add_net "P2") +(add_net "P3") +(add_net "P4") +(add_net "P5") +(add_net "P6") +(add_net "P7") +(add_net "P8") +(add_net "P9") + ) + + + + (module ProMicro (layer F.Cu) (tedit 5B307E4C) + (at 0 0 0) + + + (fp_text reference "MCU1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) + + + + (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) + + + (fp_text user RAW (at -13.97 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -11.43 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RST (at -8.89 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user VCC (at -6.35 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P21 (at -3.81 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P20 (at -1.27 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P19 (at 1.27 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P18 (at 3.81 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P15 (at 6.35 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P14 (at 8.89 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P16 (at 11.43 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P10 (at 13.97 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + + (fp_text user P01 (at -13.97 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P00 (at -11.43 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -8.89 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -6.35 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P02 (at -3.81 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P03 (at -1.27 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P04 (at 1.27 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P05 (at 3.81 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P06 (at 6.35 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P07 (at 8.89 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P08 (at 11.43 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P09 (at 13.97 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + + + (pad 1 thru_hole rect (at -13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 1 "RAW")) + (pad 2 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) + (pad 3 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 3 "RST")) + (pad 4 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 4 "VCC")) + (pad 5 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 5 "P21")) + (pad 6 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 6 "P20")) + (pad 7 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 7 "P19")) + (pad 8 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 8 "P18")) + (pad 9 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 9 "P15")) + (pad 10 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 10 "P14")) + (pad 11 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 11 "P16")) + (pad 12 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 12 "P10")) + + (pad 13 thru_hole circle (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 13 "P1")) + (pad 14 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 14 "P0")) + (pad 15 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) + (pad 16 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) + (pad 17 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 15 "P2")) + (pad 18 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 16 "P3")) + (pad 19 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 17 "P4")) + (pad 20 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 18 "P5")) + (pad 21 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 19 "P6")) + (pad 22 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 20 "P7")) + (pad 23 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 21 "P8")) + (pad 24 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 22 "P9")) + ) + + + + (module ProMicro (layer F.Cu) (tedit 5B307E4C) + (at 50 0 0) + + + (fp_text reference "MCU2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) + + + + (fp_line (start -15.24 -6.35) (end -12.7 -6.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 -6.35) (end -15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -12.7 -6.35) (end -12.7 -8.89) (layer F.SilkS) (width 0.15)) + + + (fp_text user RAW (at -13.97 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -11.43 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RST (at -8.89 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user VCC (at -6.35 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P21 (at -3.81 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P20 (at -1.27 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P19 (at 1.27 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P18 (at 3.81 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P15 (at 6.35 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P14 (at 8.89 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P16 (at 11.43 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P10 (at 13.97 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + + (fp_text user P01 (at -13.97 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P00 (at -11.43 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -8.89 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -6.35 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P02 (at -3.81 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P03 (at -1.27 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P04 (at 1.27 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P05 (at 3.81 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P06 (at 6.35 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P07 (at 8.89 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P08 (at 11.43 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P09 (at 13.97 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + + + (pad 1 thru_hole rect (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 1 "RAW")) + (pad 2 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) + (pad 3 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 3 "RST")) + (pad 4 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 4 "VCC")) + (pad 5 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 5 "P21")) + (pad 6 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 6 "P20")) + (pad 7 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 7 "P19")) + (pad 8 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 8 "P18")) + (pad 9 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 9 "P15")) + (pad 10 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 10 "P14")) + (pad 11 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 11 "P16")) + (pad 12 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 12 "P10")) + + (pad 13 thru_hole circle (at -13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 13 "P1")) + (pad 14 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 14 "P0")) + (pad 15 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) + (pad 16 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) + (pad 17 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 15 "P2")) + (pad 18 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 16 "P3")) + (pad 19 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 17 "P4")) + (pad 20 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 18 "P5")) + (pad 21 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 19 "P6")) + (pad 22 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 20 "P7")) + (pad 23 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 21 "P8")) + (pad 24 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 22 "P9")) + ) + + + +) + + \ No newline at end of file diff --git a/test/footprints/trrs.yaml b/test/footprints/trrs.yaml new file mode 100644 index 0000000..c2f39db --- /dev/null +++ b/test/footprints/trrs.yaml @@ -0,0 +1,33 @@ +points.zones.matrix: +pcbs.pcb.footprints: + + # basic + - what: trrs + nets: + A: A + B: B + C: C + D: D + + # reversible + - what: trrs + nets: + A: A + B: B + C: C + D: D + params: + reverse: true + adjust.shift: [50, 0] + + # reversible + symmetric + - what: trrs + nets: + A: A + B: B + C: C + D: D + params: + reverse: true + symmetric: true + adjust.shift: [100, 0] \ No newline at end of file diff --git a/test/footprints/trrs___pcbs_pcb.kicad_pcb b/test/footprints/trrs___pcbs_pcb.kicad_pcb new file mode 100644 index 0000000..c549080 --- /dev/null +++ b/test/footprints/trrs___pcbs_pcb.kicad_pcb @@ -0,0 +1,228 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "A") +(net 2 "B") +(net 3 "C") +(net 4 "D") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "A") +(add_net "B") +(add_net "C") +(add_net "D") + ) + + + + (module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5) + + (at 0 0 0) + + + (fp_text reference "TRRS1" (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start 0.5 -2) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) + (fp_line (start -5.1 0) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.5 0) (end 0.5 -2) (layer Dwgs.User) (width 0.15)) + (fp_line (start -5.35 0) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.75 0) (end 0.75 12.1) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.75 12.1) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.75 0) (end -5.35 0) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + + + (pad 1 thru_hole oval (at -4.6 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) + (pad 2 thru_hole oval (at 0 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) + (pad 3 thru_hole oval (at 0 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) + (pad 4 thru_hole oval (at 0 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) + ) + + + + (module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5) + + (at 50 0 0) + + + (fp_text reference "TRRS2" (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start 0.5 -2) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) + (fp_line (start -5.1 0) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.5 0) (end 0.5 -2) (layer Dwgs.User) (width 0.15)) + (fp_line (start -5.35 0) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.75 0) (end 0.75 12.1) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.75 12.1) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.75 0) (end -5.35 0) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 0 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + + + (pad 1 thru_hole oval (at -2.3 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) + (pad 2 thru_hole oval (at 2.3 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) + (pad 3 thru_hole oval (at 2.3 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) + (pad 4 thru_hole oval (at 2.3 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) + + + (pad 1 thru_hole oval (at 0 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) + (pad 2 thru_hole oval (at -4.6 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) + (pad 3 thru_hole oval (at -4.6 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) + (pad 4 thru_hole oval (at -4.6 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) + ) + + + + (module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5) + + (at 100 0 0) + + + (fp_text reference "TRRS3" (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start 0.5 -2) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) + (fp_line (start -5.1 0) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.5 0) (end 0.5 -2) (layer Dwgs.User) (width 0.15)) + (fp_line (start -5.35 0) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.75 0) (end 0.75 12.1) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.75 12.1) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) + (fp_line (start 0.75 0) (end -5.35 0) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + + + (pad 1 thru_hole oval (at 0 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) + (pad 2 thru_hole oval (at -4.6 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) + (pad 3 thru_hole oval (at -4.6 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) + (pad 4 thru_hole oval (at -4.6 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) + + + (pad 1 thru_hole oval (at -4.6 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) + (pad 2 thru_hole oval (at 0 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) + (pad 3 thru_hole oval (at 0 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) + (pad 4 thru_hole oval (at 0 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) + ) + + + +) + + \ No newline at end of file From 2cfdf10327356dfd1c657221a0c8db7d778cbede Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 4 Dec 2022 12:22:17 +0100 Subject: [PATCH 058/120] Make outline/pcb anchor adjustments more generic --- src/outlines.js | 5 +++-- src/pcbs.js | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/outlines.js b/src/outlines.js index fe08c04..c1e675e 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -198,7 +198,8 @@ exports.parse = (config = {}, points = {}, units = {}) => { const original_where = part.where // need to save, so the delete's don't get rid of it below const where = units => filter(original_where, `${name}.where`, points, units, asym) - const adjust = anchor(part.adjust || {}, `${name}.adjust`, points)(units) + const original_adjust = part.adjust // same as above + const adjust = start => anchor(original_adjust || {}, `${name}.adjust`, points, start)(units) const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) expand_shorthand(part, units) const expand = a.sane(part.expand || 0, `${name}.expand`, 'number')(units) @@ -222,7 +223,7 @@ exports.parse = (config = {}, points = {}, units = {}) => { // and then the shape is repeated for all where positions for (const w of where(shape_units)) { - const point = w.clone().shift(adjust.p).rotate(adjust.r, false) + const point = adjust(w.clone()) let [shape, bbox] = shape_maker(point) // point is passed for mirroring metadata only... if (bound) { shape = binding(shape, bbox, point, shape_units) diff --git a/src/pcbs.js b/src/pcbs.js index 05a03e5..cc29176 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -283,12 +283,13 @@ exports.parse = (config, points, outlines, units) => { a.sane(f, name, 'object')() const asym = a.asym(f.asym || 'source', `${name}.asym`) const where = filter(f.where, `${name}.where`, points, units, asym) - const adjust = anchor(f.adjust || {}, `${name}.adjust`, points)(units) + const original_adjust = f.adjust // need to save, so the delete's don't get rid of it below + const adjust = start => anchor(original_adjust || {}, `${name}.adjust`, points, start)(units) delete f.asym delete f.where delete f.adjust for (const w of where) { - const aw = w.clone().shift(adjust.p).rotate(adjust.r, false) + const aw = adjust(w.clone()) footprints.push(footprint_factory(f, name, aw)) } } From 3aef7294658be5b1942f88db31fdce27beb80a36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 4 Dec 2022 12:24:17 +0100 Subject: [PATCH 059/120] Allow points/anchors to `resist` special mirror treatment --- src/anchor.js | 23 ++++++++++++----------- src/point.js | 8 ++++---- test/unit/anchor.js | 24 ++++++++++++++++++++++++ test/unit/point.js | 15 ++++++++++++++- 4 files changed, 54 insertions(+), 16 deletions(-) diff --git a/src/anchor.js b/src/anchor.js index 73fde64..0a06d96 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -28,7 +28,7 @@ const aggregators = { } } -const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), mirror=false) => units => { +const anchor = exports.parse = (raw, name, points={}, start=new Point(), mirror=false) => units => { // // Anchor type handling @@ -39,8 +39,8 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), } else if (a.type(raw)() == 'array') { - // recursive call with incremental default_point mods, according to `affect`s - let current = default_point.clone() + // recursive call with incremental start mods, according to `affect`s + let current = start.clone() let index = 1 for (const step of raw) { current = anchor(step, `${name}[${index++}]`, points, current, mirror)(units) @@ -48,13 +48,13 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), return current } - a.unexpected(raw, name, ['ref', 'aggregate', 'orient', 'shift', 'rotate', 'affect']) + a.unexpected(raw, name, ['ref', 'aggregate', 'orient', 'shift', 'rotate', 'affect', 'resist']) // // Reference or aggregate handling // - let point = default_point.clone() + let point = start.clone() if (raw.ref !== undefined && raw.aggregate !== undefined) { throw new Error(`Fields "ref" and "aggregate" cannot appear together in anchor "${name}"!`) } @@ -67,7 +67,7 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), point = points[parsed_ref].clone() // recursive case } else { - point = anchor(raw.ref, `${name}.ref`, points, default_point, mirror)(units) + point = anchor(raw.ref, `${name}.ref`, points, start, mirror)(units) } } @@ -80,7 +80,7 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), const parts = [] let index = 1 for (const part of raw.aggregate.parts) { - parts.push(anchor(part, `${name}.aggregate.parts[${index++}]`, points, default_point, mirror)(units)) + parts.push(anchor(part, `${name}.aggregate.parts[${index++}]`, points, start, mirror)(units)) } point = aggregators[raw.aggregate.method](raw.aggregate, `${name}.aggregate`, parts) @@ -90,14 +90,15 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), // Actual orient/shift/rotate/affect handling // + resist = a.sane(raw.resist || false, `${name}.resist`, 'boolean')() const rotator = (config, name, point) => { // simple case: number gets added to point rotation if (a.type(config)(units) == 'number') { let angle = a.sane(config, name, 'number')(units) - point.rotate(angle, false) + point.rotate(angle, false, resist) // recursive case: points turns "towards" target anchor } else { - const target = anchor(config, name, points, default_point, mirror)(units) + const target = anchor(config, name, points, start, mirror)(units) point.r = point.angle(target) } } @@ -107,14 +108,14 @@ const anchor = exports.parse = (raw, name, points={}, default_point=new Point(), } if (raw.shift !== undefined) { let xyval = a.wh(raw.shift, `${name}.shift`)(units) - point.shift(xyval) + point.shift(xyval, true, resist) } if (raw.rotate !== undefined) { rotator(raw.rotate, `${name}.rotate`, point) } if (raw.affect !== undefined) { const candidate = point.clone() - point = default_point.clone() + point = start.clone() point.meta = candidate.meta let affect = raw.affect if (a.type(affect)() == 'string') affect = affect.split('') diff --git a/src/point.js b/src/point.js index d6d5e12..160e1fa 100644 --- a/src/point.js +++ b/src/point.js @@ -24,8 +24,8 @@ module.exports = class Point { [this.x, this.y] = val } - shift(s, relative=true) { - s[0] *= this.meta.mirrored ? -1 : 1 + shift(s, relative=true, resist=false) { + s[0] *= (!resist && this.meta.mirrored) ? -1 : 1 if (relative) { s = m.point.rotate(s, this.r) } @@ -34,8 +34,8 @@ module.exports = class Point { return this } - rotate(angle, origin=[0, 0]) { - angle *= this.meta.mirrored ? -1 : 1 + rotate(angle, origin=[0, 0], resist=false) { + angle *= (!resist && this.meta.mirrored) ? -1 : 1 if (origin) { this.p = m.point.rotate(this.p, angle, origin) } diff --git a/test/unit/anchor.js b/test/unit/anchor.js index 135ad2a..c9b3dd1 100644 --- a/test/unit/anchor.js +++ b/test/unit/anchor.js @@ -126,6 +126,30 @@ describe('Anchor', function() { ) }) + it('resist', function() { + const p = new Point(0, 0, 0, {mirrored: true}) // origin, but mirrored + + // resistance should be correctly propagated for shifts + check( + parse({shift: [1, 1]}, 'name', {}, p)(), + [-1, 1, 0, {mirrored: true}] + ) + check( + parse({shift: [1, 1], resist: true}, 'name', {}, p)(), + [1, 1, 0, {mirrored: true}] + ) + + // ...and orients/rotations too + check( + parse({rotate: 10}, 'name', {}, p)(), + [0, 0, -10, {mirrored: true}] + ) + check( + parse({rotate: 10, resist: true}, 'name', {}, p)(), + [0, 0, 10, {mirrored: true}] + ) + }) + it('string', function() { // basic string form check( diff --git a/test/unit/point.js b/test/unit/point.js index 5f4b03f..33ef530 100644 --- a/test/unit/point.js +++ b/test/unit/point.js @@ -36,7 +36,7 @@ describe('Point', function() { it('shifting', function() { const p = new Point(0, 0, -90) // at origin, "looking right" - // absolute shift up and left, should be up and left + // non-relative shift up and left, should be up and left check(p.clone().shift([-1, 1], false), [-1, 1, -90, {}]) // relative shift up and left, should be up and right check(p.clone().shift([-1, 1]), [1, 1, -90, {}]) @@ -50,6 +50,19 @@ describe('Point', function() { check(p.clone().rotate(-90, [1, 1]), [1, 2, -90, {}]) }) + it('resistance', function() { + const p = new Point(0, 0, 0, {mirrored: true}) // origin, but mirrored + // non-relative shift up and left, mirroring changes it to up and right + check(p.clone().shift([-1, 1], false), [1, 1, 0, {mirrored: true}]) + // ...but resistance keeps it up and left + check(p.clone().shift([-1, 1], false, true), [-1, 1, 0, {mirrored: true}]) + + // mirroring changes rotation direction, too + check(p.clone().rotate(-90), [0, 0, 90, {mirrored: true}]) + // ...but not when resistance is applied + check(p.clone().rotate(-90, false, true), [0, 0, -90, {mirrored: true}]) + }) + it('mirroring', function() { const p = new Point(0, 1, 0) // make sure mirroring inverts rotation, as well as positions correctly From 1de68843ce71e7f747ae36a64477f96761dbf535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 4 Dec 2022 16:32:14 +0100 Subject: [PATCH 060/120] Extend footprint test coverage --- src/footprints/pad.js | 5 +- src/pcbs.js | 6 +- test/footprints/chocmini.yaml | 26 ++ test/footprints/chocmini___pcbs_pcb.kicad_pcb | 274 +++++++++++ test/footprints/pad.yaml | 30 ++ test/footprints/pad___pcbs_pcb.kicad_pcb | 188 ++++++++ test/footprints/rest.yaml | 67 +++ test/footprints/rest___pcbs_pcb.kicad_pcb | 431 ++++++++++++++++++ 8 files changed, 1023 insertions(+), 4 deletions(-) create mode 100644 test/footprints/chocmini.yaml create mode 100644 test/footprints/chocmini___pcbs_pcb.kicad_pcb create mode 100644 test/footprints/pad.yaml create mode 100644 test/footprints/pad___pcbs_pcb.kicad_pcb create mode 100644 test/footprints/rest.yaml create mode 100644 test/footprints/rest___pcbs_pcb.kicad_pcb diff --git a/src/footprints/pad.js b/src/footprints/pad.js index b1a566d..7238435 100644 --- a/src/footprints/pad.js +++ b/src/footprints/pad.js @@ -28,7 +28,10 @@ module.exports = { if (align == 'right') x += p.param.width / 2 + plus if (align == 'up') y += p.param.height / 2 + plus if (align == 'down') y -= p.param.height / 2 + plus - const text = `(fp_text user ${p.param.text} (at ${x} ${y} ${p.rot}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` + let text = '' + if (p.param.text.length) { + text = `(fp_text user ${p.param.text} (at ${x} ${y} ${p.rot}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` + } return `(pad 1 smd rect (at 0 0 ${p.rot}) (size ${p.param.width} ${p.param.height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net.net.str})\n${text}` } diff --git a/src/pcbs.js b/src/pcbs.js index cc29176..36f8d82 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -170,9 +170,9 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, if (a.type(value)() == 'string' && value.startsWith('=') && point) { const indirect = value.substring(1) value = point.meta[indirect] - if (value === undefined) { - throw new Error(`Indirection "${name}.params.${param}" --> "${point.meta.name}.${indirect}" to undefined value!`) - } + // if (value === undefined) { + // throw new Error(`Indirection "${name}.params.${param_name}" --> "${point.meta.name}.${indirect}" to undefined value!`) + // } } parsed_params.param[param_name] = value } diff --git a/test/footprints/chocmini.yaml b/test/footprints/chocmini.yaml new file mode 100644 index 0000000..32311b4 --- /dev/null +++ b/test/footprints/chocmini.yaml @@ -0,0 +1,26 @@ +points.zones.matrix: +pcbs.pcb.footprints: + + # base + - what: chocmini + nets: + from: from + to: to + + # keycap visualization + - what: chocmini + nets: + from: from + to: to + params: + keycaps: true + adjust.shift: [50, 0] + + # reverse + - what: chocmini + nets: + from: from + to: to + params: + reverse: true + adjust.shift: [100, 0] diff --git a/test/footprints/chocmini___pcbs_pcb.kicad_pcb b/test/footprints/chocmini___pcbs_pcb.kicad_pcb new file mode 100644 index 0000000..650ceb0 --- /dev/null +++ b/test/footprints/chocmini___pcbs_pcb.kicad_pcb @@ -0,0 +1,274 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "from") +(net 2 "to") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "from") +(add_net "to") + ) + + + + (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) + (at 0 0 0) + + + (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start -7.25 -6.75) (end -6.25 -6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7.25 -6.75) (end -7.25 -5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start -7.25 6.75) (end -6.25 6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7.25 6.75) (end -7.25 5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start 7.25 -6.75) (end 6.25 -6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7.25 -6.75) (end 7.25 -5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start 7.25 6.75) (end 6.25 6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7.25 6.75) (end 7.25 5.75) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start 2.8 -5.35) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -2.8 -3.2) (end 2.8 -3.2) (layer Dwgs.User) (width 0.15)) + (fp_line (start 2.8 -3.2) (end 2.8 -5.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -2.8 -3.2) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start 2.25 2.6) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 2.6) (end -5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start 2.25 3.6) (end 2.25 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 3.6) (end 2.25 3.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 2.6) (end -2.25 3.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -5.8 2.6) (end -5.8 -2.95) (layer Edge.Cuts) (width 0.12)) + (fp_line (start 5.8 -2.95) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -5.8 -2.95) (end 5.8 -2.95) (layer Edge.Cuts) (width 0.12)) + + + (pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) + (pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) + + + + + (pad 1 thru_hole circle (at -4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) + (pad 2 thru_hole circle (at 2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) + ) + + + + (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) + (at 50 0 0) + + + (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start -7.25 -6.75) (end -6.25 -6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7.25 -6.75) (end -7.25 -5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start -7.25 6.75) (end -6.25 6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7.25 6.75) (end -7.25 5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start 7.25 -6.75) (end 6.25 -6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7.25 -6.75) (end 7.25 -5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start 7.25 6.75) (end 6.25 6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7.25 6.75) (end 7.25 5.75) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start 2.8 -5.35) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -2.8 -3.2) (end 2.8 -3.2) (layer Dwgs.User) (width 0.15)) + (fp_line (start 2.8 -3.2) (end 2.8 -5.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -2.8 -3.2) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start 2.25 2.6) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 2.6) (end -5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start 2.25 3.6) (end 2.25 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 3.6) (end 2.25 3.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 2.6) (end -2.25 3.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -5.8 2.6) (end -5.8 -2.95) (layer Edge.Cuts) (width 0.12)) + (fp_line (start 5.8 -2.95) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -5.8 -2.95) (end 5.8 -2.95) (layer Edge.Cuts) (width 0.12)) + + + (pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) + (pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad 1 thru_hole circle (at -4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) + (pad 2 thru_hole circle (at 2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) + ) + + + + (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) + (at 100 0 0) + + + (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start -7.25 -6.75) (end -6.25 -6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7.25 -6.75) (end -7.25 -5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start -7.25 6.75) (end -6.25 6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7.25 6.75) (end -7.25 5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start 7.25 -6.75) (end 6.25 -6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7.25 -6.75) (end 7.25 -5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start 7.25 6.75) (end 6.25 6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7.25 6.75) (end 7.25 5.75) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start 2.8 -5.35) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -2.8 -3.2) (end 2.8 -3.2) (layer Dwgs.User) (width 0.15)) + (fp_line (start 2.8 -3.2) (end 2.8 -5.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -2.8 -3.2) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start 2.25 2.6) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 2.6) (end -5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start 2.25 3.6) (end 2.25 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 3.6) (end 2.25 3.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 2.6) (end -2.25 3.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -5.8 2.6) (end -5.8 -2.95) (layer Edge.Cuts) (width 0.12)) + (fp_line (start 5.8 -2.95) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -5.8 -2.95) (end 5.8 -2.95) (layer Edge.Cuts) (width 0.12)) + + + (pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) + (pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) + + + + + (pad 1 thru_hole circle (at -4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) + (pad 2 thru_hole circle (at 2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) + + + + (pad 1 thru_hole circle (at 4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) + (pad 2 thru_hole circle (at -2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) + ) + + + + +) + + \ No newline at end of file diff --git a/test/footprints/pad.yaml b/test/footprints/pad.yaml new file mode 100644 index 0000000..00c605d --- /dev/null +++ b/test/footprints/pad.yaml @@ -0,0 +1,30 @@ +points.zones.matrix: +pcbs.pcb.footprints: + + - what: pad + nets: + net: net + + - what: pad + nets: + net: net + params: + align: right + text: text + adjust.shift: [50, 0] + + - what: pad + nets: + net: net + params: + align: up + front: false + adjust.shift: [0, 50] + + - what: pad + nets: + net: net + params: + align: down + mirrored: true + adjust.shift: [50, 50] diff --git a/test/footprints/pad___pcbs_pcb.kicad_pcb b/test/footprints/pad___pcbs_pcb.kicad_pcb new file mode 100644 index 0000000..d34827d --- /dev/null +++ b/test/footprints/pad___pcbs_pcb.kicad_pcb @@ -0,0 +1,188 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "net") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "net") + ) + + + + (module SMDPad (layer F.Cu) (tedit 5B24D78E) + + (at 0 0 0) + + + (fp_text reference "PAD1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) + + + ) + + + + + (module SMDPad (layer F.Cu) (tedit 5B24D78E) + + (at 50 0 0) + + + (fp_text reference "PAD2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) +(fp_text user text (at 3 0 0) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) )) + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) +(fp_text user text (at 3 0 0) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify mirror))) + + ) + + + + + (module SMDPad (layer F.Cu) (tedit 5B24D78E) + + (at 0 -50 0) + + + (fp_text reference "PAD3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) + + + ) + + + + + (module SMDPad (layer F.Cu) (tedit 5B24D78E) + + (at 50 -50 0) + + + (fp_text reference "PAD4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) + + + ) + + + + +) + + \ No newline at end of file diff --git a/test/footprints/rest.yaml b/test/footprints/rest.yaml new file mode 100644 index 0000000..afea689 --- /dev/null +++ b/test/footprints/rest.yaml @@ -0,0 +1,67 @@ +points.zones.matrix: +pcbs.pcb.footprints: + + - what: alps + nets: + from: from + to: to + + - what: jstph + nets: + pos: pos + neg: neg + adjust.shift: [50, 0] + + - what: jumper + nets: + from: from + to: to + adjust.shift: [100, 0] + + - what: oled + nets: + SDA: SDA + SCL: SCL + adjust.shift: [0, 50] + + - what: omron + nets: + from: from + to: to + adjust.shift: [50, 50] + + - what: rgb + nets: + din: din + dout: dout + adjust.shift: [100, 50] + + - what: rotary + nets: + from: from + to: to + A: A + B: B + C: C + adjust.shift: [0, 100] + + - what: scrollwheel + nets: + from: from + to: to + A: A + B: B + C: C + D: D + adjust.shift: [50, 100] + + - what: slider + nets: + from: from + to: to + adjust.shift: [100, 100] + + - what: via + nets: + net: net + adjust.shift: [0, 150] \ No newline at end of file diff --git a/test/footprints/rest___pcbs_pcb.kicad_pcb b/test/footprints/rest___pcbs_pcb.kicad_pcb new file mode 100644 index 0000000..db1fbf7 --- /dev/null +++ b/test/footprints/rest___pcbs_pcb.kicad_pcb @@ -0,0 +1,431 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title pcb) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "from") +(net 2 "to") +(net 3 "pos") +(net 4 "neg") +(net 5 "VCC") +(net 6 "GND") +(net 7 "SDA") +(net 8 "SCL") +(net 9 "din") +(net 10 "dout") +(net 11 "A") +(net 12 "B") +(net 13 "C") +(net 14 "D") +(net 15 "net") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "from") +(add_net "to") +(add_net "pos") +(add_net "neg") +(add_net "VCC") +(add_net "GND") +(add_net "SDA") +(add_net "SCL") +(add_net "din") +(add_net "dout") +(add_net "A") +(add_net "B") +(add_net "C") +(add_net "D") +(add_net "net") + ) + + + + (module ALPS (layer F.Cu) (tedit 5CF31DEF) + + (at 0 0 0) + + + (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) (net 2 "to")) + ) + + + + + (module JST_PH_S2B-PH-K_02x2.00mm_Angled (layer F.Cu) (tedit 58D3FE32) + + (descr "JST PH series connector, S2B-PH-K, side entry type, through hole, Datasheet: http://www.jst-mfg.com/product/pdf/eng/ePH.pdf") + (tags "connector jst ph") + + (at 50 0 0) + + + (fp_text reference "JST1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + (fp_line (start -2.25 0.25) (end -2.25 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.25 -1.35) (end -2.95 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.95 -1.35) (end -2.95 6.25) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.95 6.25) (end 2.95 6.25) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.95 6.25) (end 2.95 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.95 -1.35) (end 2.25 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.25 -1.35) (end 2.25 0.25) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.25 0.25) (end -2.25 0.25) (layer F.SilkS) (width 0.15)) + + (fp_line (start -1 1.5) (end -1 2.0) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 1.75) (end -0.75 1.75) (layer F.SilkS) (width 0.15)) + + (pad 1 thru_hole rect (at -1 0 0) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) (net 3 "pos")) + (pad 2 thru_hole oval (at 1 0 0) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) (net 4 "neg")) + + ) + + + + (module lib:Jumper (layer F.Cu) (tedit 5E1ADAC2) + (at 100 0 0) + + + (fp_text reference "J1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value Jumper (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (pad 1 smd rect (at -0.50038 0 0) (size 0.635 1.143) (layers F.Cu F.Paste F.Mask) + (clearance 0.1905) (net 1 "from")) + (pad 2 smd rect (at 0.50038 0 0) (size 0.635 1.143) (layers F.Cu F.Paste F.Mask) + (clearance 0.1905) (net 2 "to"))) + + + (module lib:OLED_headers (layer F.Cu) (tedit 5E1ADAC2) + (at 0 -50 0) + + + (fp_text reference "OLED1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value OLED (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (pad 4 thru_hole oval (at 1.6 2.18 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 7 "SDA")) + (pad 3 thru_hole oval (at 1.6 4.72 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 8 "SCL")) + (pad 2 thru_hole oval (at 1.6 7.26 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 5 "VCC")) + (pad 1 thru_hole rect (at 1.6 9.8 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 6 "GND")) + ) + + + + (module OMRON_B3F-4055 (layer F.Cu) (tstamp 5BF2CC94) + + (at 50 -50 0) + + (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (pad "" np_thru_hole circle (at 0 -4.5) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 4.5) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) + + + (fp_line (start -6 -6) (end 6 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 -6) (end 6 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 6) (end -6 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 6) (end -6 -6) (layer Dwgs.User) (width 0.15)) + + + (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) (net 1 "from")) + (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) (net 2 "to")) + (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) (net 2 "to")) + ) + + + + + (module WS2812B (layer F.Cu) (tedit 53BEE615) + + (at 100 -50 0) + + + (fp_text reference "LED1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + (fp_line (start -1.75 -1.75) (end -1.75 1.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.75 1.75) (end 1.75 1.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 1.75 1.75) (end 1.75 -1.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 1.75 -1.75) (end -1.75 -1.75) (layer F.SilkS) (width 0.15)) + + (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.SilkS) (width 0.15)) + + (fp_poly (pts (xy 4 2.2) (xy 4 0.375) (xy 5 1.2875)) (layer F.SilkS) (width 0.1)) + + (pad 1 smd rect (at -2.2 -0.875 0) (size 2.6 1) (layers F.Cu F.Paste F.Mask) (net 5 "VCC")) + (pad 2 smd rect (at -2.2 0.875 0) (size 2.6 1) (layers F.Cu F.Paste F.Mask) (net 10 "dout")) + (pad 3 smd rect (at 2.2 0.875 0) (size 2.6 1) (layers F.Cu F.Paste F.Mask) (net 6 "GND")) + (pad 4 smd rect (at 2.2 -0.875 0) (size 2.6 1) (layers F.Cu F.Paste F.Mask) (net 9 "din")) + + (pad 11 smd rect (at -2.5 -1.6 0) (size 2 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "VCC")) + (pad 22 smd rect (at -2.5 1.6 0) (size 2 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "dout")) + (pad 33 smd rect (at 2.5 1.6 0) (size 2 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "GND")) + (pad 44 smd rect (at 2.5 -1.6 0) (size 2 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "din")) + + ) + + + + (module rotary_encoder (layer F.Cu) (tedit 603326DE) + + (at 0 -100 0) + + + (fp_text reference "ROT1" (at 0 0.5) (layer F.SilkS) + hide (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value "" (at 0 8.89) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start -0.62 -0.04) (end 0.38 -0.04) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.12 -0.54) (end -0.12 0.46) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.98 3.26) (end 5.98 5.86) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.98 -1.34) (end 5.98 1.26) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.98 -5.94) (end 5.98 -3.34) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) + (fp_line (start -0.12 -3.04) (end -0.12 2.96) (layer F.Fab) (width 0.12)) + (fp_line (start -7.32 -4.14) (end -7.62 -3.84) (layer F.SilkS) (width 0.12)) + (fp_line (start -7.92 -4.14) (end -7.32 -4.14) (layer F.SilkS) (width 0.12)) + (fp_line (start -7.62 -3.84) (end -7.92 -4.14) (layer F.SilkS) (width 0.12)) + (fp_line (start -6.22 -5.84) (end -6.22 5.86) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.12 -5.84) (end -6.22 -5.84) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.12 5.86) (end -6.22 5.86) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.98 5.86) (end 1.88 5.86) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.88 -5.94) (end 5.98 -5.94) (layer F.SilkS) (width 0.12)) + (fp_line (start -6.12 -4.74) (end -5.12 -5.84) (layer F.Fab) (width 0.12)) + (fp_line (start -6.12 5.76) (end -6.12 -4.74) (layer F.Fab) (width 0.12)) + (fp_line (start 5.88 5.76) (end -6.12 5.76) (layer F.Fab) (width 0.12)) + (fp_line (start 5.88 -5.84) (end 5.88 5.76) (layer F.Fab) (width 0.12)) + (fp_line (start -5.12 -5.84) (end 5.88 -5.84) (layer F.Fab) (width 0.12)) + (fp_line (start -8.87 -6.89) (end 7.88 -6.89) (layer F.CrtYd) (width 0.05)) + (fp_line (start -8.87 -6.89) (end -8.87 6.81) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.88 6.81) (end 7.88 -6.89) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.88 6.81) (end -8.87 6.81) (layer F.CrtYd) (width 0.05)) + (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.SilkS) (width 0.12)) + (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) + + + (pad A thru_hole rect (at -7.62 -2.54 0) (size 2 2) (drill 1) (layers *.Cu *.Mask) (net 11 "A")) + (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) (net 13 "C")) + (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) (net 12 "B")) + (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) (net 1 "from")) + (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) (net 2 "to")) + + + (pad "" thru_hole rect (at -0.12 -5.64 0) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) + (pad "" thru_hole rect (at -0.12 5.56 0) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) + ) + + + + (module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C) + (at 50 -100 0) + (fp_text reference REF** (at 0 0 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start -8.4 -6.4) (end 8.4 -6.4) (layer Dwgs.User) (width 0.12)) + (fp_line (start 8.4 -6.4) (end 8.4 7.4) (layer Dwgs.User) (width 0.12)) + (fp_line (start 8.4 7.4) (end -8.4 7.4) (layer Dwgs.User) (width 0.12)) + (fp_line (start -8.4 7.4) (end -8.4 -6.4) (layer Dwgs.User) (width 0.12)) + + + + (fp_line (start 9.8 7.3) (end 9.8 -6.3) (layer Edge.Cuts) (width 0.15)) + (fp_line (start 7.4 -6.3) (end 7.4 7.3) (layer Edge.Cuts) (width 0.15)) + (fp_line (start 9.5 -6.6) (end 7.7 -6.6) (layer Edge.Cuts) (width 0.15)) + (fp_line (start 7.7 7.6) (end 9.5 7.6) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start 7.7 7.3) (end 7.4 7.3) (angle -90) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start 9.5 7.3) (end 9.5 7.6) (angle -90) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start 7.7 -6.3) (end 7.7 -6.6) (angle -90) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start 9.5 -6.3) (end 9.8 -6.3) (angle -90) (layer Edge.Cuts) (width 0.15)) + + + (pad S1 thru_hole circle (at -6.85 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 1 "from")) + (pad S2 thru_hole circle (at -5 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 2 "to")) + (pad A thru_hole circle (at -5.625 -3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 11 "A")) + (pad B thru_hole circle (at -5.625 -1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 12 "B")) + (pad C thru_hole circle (at -5.625 1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 13 "C")) + (pad D thru_hole circle (at -5.625 3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 14 "D")) + + + (pad "" np_thru_hole circle (at -5.625 6.3 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + ) + + + + (module E73:SPDT_C128955 (layer F.Cu) (tstamp 5BF2CC3C) + + (at 100 -100 0) + + + (fp_text reference "T1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer F.SilkS) (width 0.15)) + (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer F.SilkS) (width 0.15)) + (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer F.SilkS) (width 0.15)) + + + (fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15)) + (fp_line (start 1.95 -3.85) (end 1.95 -1.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -1.95 -1.35) (end -1.95 -3.85) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at 2.25 2.075 0) (size 0.9 1.25) (layers F.Cu F.Paste F.Mask) (net 1 "from")) + (pad 2 smd rect (at -0.75 2.075 0) (size 0.9 1.25) (layers F.Cu F.Paste F.Mask) (net 2 "to")) + (pad 3 smd rect (at -2.25 2.075 0) (size 0.9 1.25) (layers F.Cu F.Paste F.Mask)) + + + (pad "" smd rect (at 3.7 -1.1 0) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) + (pad "" smd rect (at 3.7 1.1 0) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) + (pad "" smd rect (at -3.7 1.1 0) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) + (pad "" smd rect (at -3.7 -1.1 0) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) + ) + + + + (module VIA-0.6mm (layer F.Cu) (tedit 591DBFB0) + (at 0 -150 0) + + (fp_text reference REF** (at 0 1.4) (layer F.SilkS) hide (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value VIA-0.6mm (at 0 -1.4) (layer F.Fab) hide (effects (font (size 1 1) (thickness 0.15)))) + + + (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) (net 15 "net")) + ) + + + +) + + \ No newline at end of file From 3a0f326a31f83bf157a850de044acc35fd4275be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 4 Dec 2022 13:45:48 +0100 Subject: [PATCH 061/120] Footprint parameter flattening, round 1 --- roadmap.md | 2 ++ src/pcbs.js | 69 +++++++++++++++++++++-------------------------------- 2 files changed, 29 insertions(+), 42 deletions(-) diff --git a/roadmap.md b/roadmap.md index 2a7acfe..d54b04d 100644 --- a/roadmap.md +++ b/roadmap.md @@ -26,6 +26,8 @@ - have a `dummy` footprint which can just be updated from schematic - Allow footprints to publish outlines - Make these usable in the `outlines` section through a new `what` +- Add footprint sanitization to check compatibility for externally loaded ones + - Or to double check internal ones for compliance - 3D orient for cases - Even more extreme anchor stuff - Checkpoints, intersects, distances, weighted combinations? diff --git a/src/pcbs.js b/src/pcbs.js index 36f8d82..0cede01 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -153,28 +153,38 @@ exports.inject_footprint = (name, fp) => { const footprint = exports._footprint = (points, net_indexer, component_indexer, units, extra) => (config, name, point) => { // config sanitization - a.unexpected(config, name, ['what', 'nets', 'anchors', 'params']) + a.unexpected(config, name, ['what', 'params']) const what = a.in(config.what, `${name}.what`, Object.keys(footprint_types)) - const nets = a.sane(config.nets || {}, `${name}.nets`, 'object')() - const anchors = a.sane(config.anchors || {}, `${name}.anchors`, 'object')() - const params = a.sane(config.params || {}, `${name}.params`, 'object')() - - // basic setup const fp = footprint_types[what] + const params = config.params || {} + a.unexpected(params, `${name}.params`, Object.keys(fp.params)) const parsed_params = {} - // connecting other, non-net, non-anchor parameters - parsed_params.param = {} - for (const [param_name, param_value] of Object.entries(prep.extend(fp.params || {}, params))) { - let value = param_value - if (a.type(value)() == 'string' && value.startsWith('=') && point) { - const indirect = value.substring(1) - value = point.meta[indirect] - // if (value === undefined) { - // throw new Error(`Indirection "${name}.params.${param_name}" --> "${point.meta.name}.${indirect}" to undefined value!`) - // } + // parsing parameters + for (const [param_name, param_def] of Object.entries(fp.params)) { + let value = prep.extend(param_def.value, params[param_name]) + + // templating support + if (a.type(value)() == 'string') { + value = u.template(value, point.meta) + } + + // type-specific processing + if (['string', 'number', 'boolean'].includes(param_def.type)) { + parsed_params[param_name] = a.sane(value, `${name}.params.${param_name}`, param_def.type)(units) + } else if (param_def.type == 'net') { + const net = a.sane(value, `${name}.params.${param_name}`, 'string')(units) + const index = net_indexer(net) + parsed_params[param_name] = { + name: net, + index: index, + str: `(net ${index} "${net}")` + } + } else if (param_def.type == 'anchor') { + let parsed_anchor = anchor(value || {}, `${name}.params.${param_name}`, points, point)(units) + parsed_anchor.y = -parsed_anchor.y // kicad mirror, as per usual + parsed_params[param_name] = parsed_anchor } - parsed_params.param[param_name] = value } // reference @@ -191,23 +201,6 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, return `${new_anchor.x} ${-new_anchor.y}` } - // connecting nets - parsed_params.net = {} - for (const [net_name, net_value] of Object.entries(prep.extend(fp.nets || {}, nets))) { - let net = a.sane(net_value, `${name}.nets.${net_name}`, 'string')() - if (net.startsWith('=') && point) { - const indirect = net.substring(1) - net = point.meta[indirect] - net = a.sane(net, `${name}.nets.${net_name} --> ${point.meta.name}.${indirect}`, 'string')() - } - const index = net_indexer(net) - parsed_params.net[net_name] = { - name: net, - index: index, - str: `(net ${index} "${net}")` - } - } - // allowing footprints to add dynamic nets parsed_params.local_net = suffix => { const net = `${component_ref}_${suffix}` @@ -219,14 +212,6 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, } } - // parsing anchor-type parameters - parsed_params.anchors = {} - for (const [anchor_name, anchor_config] of Object.entries(prep.extend(fp.anchors || {}, anchors))) { - let parsed_anchor = anchor(anchor_config || {}, `${name}.anchors.${anchor_name}`, points, point)(units) - parsed_anchor.y = -parsed_anchor.y - parsed_params.anchors[anchor_name] = parsed_anchor - } - return fp.body(parsed_params) } From 58bb16ed28c95efc935657299de4365969abe033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 4 Dec 2022 18:40:06 +0100 Subject: [PATCH 062/120] Footprint parameter flattening done --- src/footprints/alps.js | 10 +- src/footprints/button.js | 32 +++---- src/footprints/choc.js | 26 +++-- src/footprints/chocmini.js | 20 ++-- src/footprints/diode.js | 18 ++-- src/footprints/jstph.js | 32 +++---- src/footprints/jumper.js | 16 ++-- src/footprints/mx.js | 28 +++--- src/footprints/oled.js | 22 ++--- src/footprints/omron.js | 14 ++- src/footprints/pad.js | 32 +++---- src/footprints/promicro.js | 100 ++++++++++---------- src/footprints/rgb.js | 46 +++++---- src/footprints/rotary.js | 16 ++-- src/footprints/scrollwheel.js | 22 ++--- src/footprints/slider.js | 38 ++++---- src/footprints/trrs.js | 22 ++--- src/footprints/via.js | 4 +- src/pcbs.js | 39 ++++++-- test/fixtures/bundle.zip | Bin 923 -> 927 bytes test/fixtures/bundle/footprints/injected.js | 2 +- test/footprints/button.yaml | 5 +- test/footprints/choc.yaml | 14 +-- test/footprints/chocmini.yaml | 8 +- test/footprints/diode.yaml | 2 +- test/footprints/mx.yaml | 14 +-- test/footprints/pad.yaml | 11 +-- test/footprints/rest.yaml | 20 ++-- test/footprints/trrs.yaml | 8 +- test/helpers/mock_footprints.js | 43 ++++----- test/pcbs/mock_footprints.yaml | 2 +- 31 files changed, 316 insertions(+), 350 deletions(-) diff --git a/src/footprints/alps.js b/src/footprints/alps.js index 942c57c..9ab6218 100644 --- a/src/footprints/alps.js +++ b/src/footprints/alps.js @@ -1,11 +1,9 @@ module.exports = { - nets: { + params: { + designator: 'S', from: undefined, to: undefined }, - params: { - class: 'S' - }, body: p => ` (module ALPS (layer F.Cu) (tedit 5CF31DEF) @@ -27,8 +25,8 @@ module.exports = { (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) ${''/* pins */} - (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.net.from.str}) - (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.net.to.str}) + (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.to.str}) ) ` diff --git a/src/footprints/button.js b/src/footprints/button.js index 5ab03b6..bbf7786 100644 --- a/src/footprints/button.js +++ b/src/footprints/button.js @@ -1,12 +1,10 @@ module.exports = { - nets: { + params: { + designator: 'B', // for Button + side: 'F', from: undefined, to: undefined }, - params: { - class: 'B', // for Button - side: 'F' - }, body: p => ` (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) @@ -20,20 +18,20 @@ module.exports = { (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) ${'' /* outline */} - (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer ${p.side}.SilkS) (width 0.15)) ${'' /* pins */} - (pad 1 smd rect (at -3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.from.str}) - (pad 1 smd rect (at 3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.from.str}) - (pad 2 smd rect (at -3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.to.str}) - (pad 2 smd rect (at 3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.to.str}) + (pad 1 smd rect (at -3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from.str}) + (pad 1 smd rect (at 3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from.str}) + (pad 2 smd rect (at -3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to.str}) + (pad 2 smd rect (at 3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to.str}) ) ` diff --git a/src/footprints/choc.js b/src/footprints/choc.js index c14c2e5..792b1c8 100644 --- a/src/footprints/choc.js +++ b/src/footprints/choc.js @@ -13,15 +13,13 @@ // note: hotswap and reverse can be used simultaneously module.exports = { - nets: { - from: undefined, - to: undefined - }, params: { - class: 'S', + designator: 'S', hotswap: false, reverse: false, - keycaps: false + keycaps: false, + from: undefined, + to: undefined }, body: p => { const standard = ` @@ -57,35 +55,35 @@ module.exports = { (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) ` function pins(def_neg, def_pos, def_side) { - if(p.param.hotswap) { + if(p.hotswap) { return ` ${'' /* holes */} (pad "" np_thru_hole circle (at ${def_pos}5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from.str}) - (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to.str}) + (pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) + (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) ` } else { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net.from.str}) - (pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net.to.str}) + (pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.to.str}) ` } } - if(p.param.reverse) { + if(p.reverse) { return ` ${standard} - ${p.param.keycaps ? keycap : ''} + ${p.keycaps ? keycap : ''} ${pins('-', '', 'B')} ${pins('', '-', 'F')}) ` } else { return ` ${standard} - ${p.param.keycaps ? keycap : ''} + ${p.keycaps ? keycap : ''} ${pins('-', '', 'B')}) ` } diff --git a/src/footprints/chocmini.js b/src/footprints/chocmini.js index e31258e..b09b865 100644 --- a/src/footprints/chocmini.js +++ b/src/footprints/chocmini.js @@ -9,15 +9,13 @@ // if true, will add choc sized keycap box around the footprint module.exports = { - nets: { - from: undefined, - to: undefined - }, params: { - class: 'S', + designator: 'S', side: 'F', reverse: false, - keycaps: false + keycaps: false, + from: undefined, + to: undefined }, body: p => { const standard = ` @@ -71,14 +69,14 @@ module.exports = { function pins(def_neg, def_pos) { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_neg}4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.net.from.str} (clearance 0.2)) - (pad 2 thru_hole circle (at ${def_pos}2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.net.to.str} (clearance 0.2)) + (pad 1 thru_hole circle (at ${def_neg}4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.from.str} (clearance 0.2)) + (pad 2 thru_hole circle (at ${def_pos}2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.to.str} (clearance 0.2)) ` } - if(p.param.reverse){ + if(p.reverse){ return ` ${standard} - ${p.param.keycaps ? keycap : ''} + ${p.keycaps ? keycap : ''} ${pins('-', '')} ${pins('', '-')}) @@ -86,7 +84,7 @@ module.exports = { } else { return ` ${standard} - ${p.param.keycaps ? keycap : ''} + ${p.keycaps ? keycap : ''} ${pins('-', '')}) ` } diff --git a/src/footprints/diode.js b/src/footprints/diode.js index 63f6e84..741b747 100644 --- a/src/footprints/diode.js +++ b/src/footprints/diode.js @@ -1,11 +1,9 @@ module.exports = { - nets: { + params: { + designator: 'D', from: undefined, to: undefined }, - params: { - class: 'D' - }, body: p => ` (module ComboDiode (layer F.Cu) (tedit 5B24D78E) @@ -34,14 +32,14 @@ module.exports = { (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) ${''/* SMD pads on both sides */} - (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.net.to.str}) - (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.net.from.str}) - (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.net.to.str}) - (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.net.from.str}) + (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.to.str}) + (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.from.str}) + (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.to.str}) + (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.from.str}) ${''/* THT terminals */} - (pad 1 thru_hole rect (at -3.81 0 ${p.rot}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.net.to.str}) - (pad 2 thru_hole circle (at 3.81 0 ${p.rot}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.net.from.str}) + (pad 1 thru_hole rect (at -3.81 0 ${p.rot}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.to.str}) + (pad 2 thru_hole circle (at 3.81 0 ${p.rot}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.from.str}) ) ` diff --git a/src/footprints/jstph.js b/src/footprints/jstph.js index 7aa5f86..c93bb6a 100644 --- a/src/footprints/jstph.js +++ b/src/footprints/jstph.js @@ -1,12 +1,10 @@ module.exports = { - nets: { + params: { + designator: 'JST', + side: 'F', pos: undefined, neg: undefined }, - params: { - class: 'JST', - side: 'F' - }, body: p => ` (module JST_PH_S2B-PH-K_02x2.00mm_Angled (layer F.Cu) (tedit 58D3FE32) @@ -20,20 +18,20 @@ module.exports = { (fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_line (start -2.25 0.25) (end -2.25 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -2.25 -1.35) (end -2.95 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -2.95 -1.35) (end -2.95 6.25) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -2.95 6.25) (end 2.95 6.25) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 2.95 6.25) (end 2.95 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 2.95 -1.35) (end 2.25 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 2.25 -1.35) (end 2.25 0.25) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 2.25 0.25) (end -2.25 0.25) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -2.25 0.25) (end -2.25 -1.35) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -2.25 -1.35) (end -2.95 -1.35) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -2.95 -1.35) (end -2.95 6.25) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -2.95 6.25) (end 2.95 6.25) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 2.95 6.25) (end 2.95 -1.35) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 2.95 -1.35) (end 2.25 -1.35) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 2.25 -1.35) (end 2.25 0.25) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 2.25 0.25) (end -2.25 0.25) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -1 1.5) (end -1 2.0) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -1.25 1.75) (end -0.75 1.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -1 1.5) (end -1 2.0) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -1.25 1.75) (end -0.75 1.75) (layer ${p.side}.SilkS) (width 0.15)) - (pad 1 thru_hole rect (at -1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.net.pos.str}) - (pad 2 thru_hole oval (at 1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.net.neg.str}) + (pad 1 thru_hole rect (at -1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.pos.str}) + (pad 2 thru_hole oval (at 1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.neg.str}) ) diff --git a/src/footprints/jumper.js b/src/footprints/jumper.js index 7f4d025..22b7d40 100644 --- a/src/footprints/jumper.js +++ b/src/footprints/jumper.js @@ -1,12 +1,10 @@ module.exports = { - nets: { + params: { + designator: 'J', + side: 'F', from: undefined, to: undefined }, - params: { - class: 'J', - side: 'F' - }, body: p => ` (module lib:Jumper (layer F.Cu) (tedit 5E1ADAC2) ${p.at /* parametric position */} @@ -16,9 +14,9 @@ module.exports = { (fp_text value Jumper (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* pins */} - (pad 1 smd rect (at -0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) - (clearance 0.1905) ${p.net.from.str}) - (pad 2 smd rect (at 0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) - (clearance 0.1905) ${p.net.to.str})) + (pad 1 smd rect (at -0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + (clearance 0.1905) ${p.from.str}) + (pad 2 smd rect (at 0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + (clearance 0.1905) ${p.to.str})) ` } \ No newline at end of file diff --git a/src/footprints/mx.js b/src/footprints/mx.js index 5866661..11d8de8 100644 --- a/src/footprints/mx.js +++ b/src/footprints/mx.js @@ -13,16 +13,14 @@ // note: hotswap and reverse can be used simultaneously module.exports = { - nets: { + params: { + designator: 'S', + hotswap: false, + reverse: false, + keycaps: false, from: undefined, to: undefined }, - params: { - class: 'S', - hotswap: false, - reverse: false, - keycaps: false - }, body: p => { const standard = ` (module MX (layer F.Cu) (tedit 5DD4F656) @@ -57,35 +55,35 @@ module.exports = { (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) ` function pins(def_neg, def_pos, def_side) { - if(p.param.hotswap) { + if(p.hotswap) { return ` ${'' /* holes */} (pad "" np_thru_hole circle (at ${def_pos}2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at ${def_neg}3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from.str}) - (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to.str}) + (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) + (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) ` } else { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_pos}2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net.from.str}) - (pad 2 thru_hole circle (at ${def_neg}3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net.to.str}) + (pad 1 thru_hole circle (at ${def_pos}2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 thru_hole circle (at ${def_neg}3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.to.str}) ` } } - if(p.param.reverse){ + if(p.reverse){ return ` ${standard} - ${p.param.keycaps ? keycap : ''} + ${p.keycaps ? keycap : ''} ${pins('-', '', 'B')} ${pins('', '-', 'F')}) ` } else { return ` ${standard} - ${p.param.keycaps ? keycap : ''} + ${p.keycaps ? keycap : ''} ${pins('-', '', 'B')}) ` } diff --git a/src/footprints/oled.js b/src/footprints/oled.js index a1a7cc4..5a8a536 100644 --- a/src/footprints/oled.js +++ b/src/footprints/oled.js @@ -1,13 +1,11 @@ module.exports = { - nets: { - SDA: undefined, - SCL: undefined, - VCC: 'VCC', - GND: 'GND' - }, params: { - class: 'OLED', - side: 'F' + designator: 'OLED', + side: 'F', + VCC: {type: 'net', value: 'VCC'}, + GND: {type: 'net', value: 'GND'}, + SDA: undefined, + SCL: undefined }, body: p => ` (module lib:OLED_headers (layer F.Cu) (tedit 5E1ADAC2) @@ -19,13 +17,13 @@ module.exports = { ${'' /* pins */} (pad 4 thru_hole oval (at 1.6 2.18 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.net.SDA.str}) + ${p.SDA.str}) (pad 3 thru_hole oval (at 1.6 4.72 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.net.SCL.str}) + ${p.SCL.str}) (pad 2 thru_hole oval (at 1.6 7.26 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.net.VCC.str}) + ${p.VCC.str}) (pad 1 thru_hole rect (at 1.6 9.8 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.net.GND.str}) + ${p.GND.str}) ) ` } \ No newline at end of file diff --git a/src/footprints/omron.js b/src/footprints/omron.js index e59a237..7669c6c 100644 --- a/src/footprints/omron.js +++ b/src/footprints/omron.js @@ -1,11 +1,9 @@ module.exports = { - nets: { + params: { + designator: 'S', from: undefined, to: undefined }, - params: { - class: 'S' - }, body: p => ` (module OMRON_B3F-4055 (layer F.Cu) (tstamp 5BF2CC94) @@ -26,10 +24,10 @@ module.exports = { (fp_line (start -6 6) (end -6 -6) (layer Dwgs.User) (width 0.15)) ${'' /* pins */} - (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.net.from.str}) - (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.net.from.str}) - (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.net.to.str}) - (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.net.to.str}) + (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from.str}) + (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to.str}) + (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to.str}) ) ` diff --git a/src/footprints/pad.js b/src/footprints/pad.js index 7238435..debfe8b 100644 --- a/src/footprints/pad.js +++ b/src/footprints/pad.js @@ -1,16 +1,14 @@ module.exports = { - nets: { - net: undefined - }, params: { - class: 'PAD', + designator: 'PAD', width: 1, height: 1, front: true, back: true, text: '', align: 'left', - mirrored: '=mirrored' + mirrored: {type: 'boolean', value: '{{mirrored}}'}, + net: undefined }, body: p => { @@ -18,21 +16,21 @@ module.exports = { if (!toggle) return '' let x = 0, y = 0 const mirror = side == 'B' ? '(justify mirror)' : '' - const plus = (p.param.text.length + 1) * 0.5 - let align = p.param.align - if (p.param.mirrored === true) { + const plus = (p.text.length + 1) * 0.5 + let align = p.align + if (p.mirrored === true) { if (align == 'left') align = 'right' else if (align == 'right') align = 'left' } - if (align == 'left') x -= p.param.width / 2 + plus - if (align == 'right') x += p.param.width / 2 + plus - if (align == 'up') y += p.param.height / 2 + plus - if (align == 'down') y -= p.param.height / 2 + plus + if (align == 'left') x -= p.width / 2 + plus + if (align == 'right') x += p.width / 2 + plus + if (align == 'up') y += p.height / 2 + plus + if (align == 'down') y -= p.height / 2 + plus let text = '' - if (p.param.text.length) { - text = `(fp_text user ${p.param.text} (at ${x} ${y} ${p.rot}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` + if (p.text.length) { + text = `(fp_text user ${p.text} (at ${x} ${y} ${p.rot}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` } - return `(pad 1 smd rect (at 0 0 ${p.rot}) (size ${p.param.width} ${p.param.height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net.net.str})\n${text}` + return `(pad 1 smd rect (at 0 0 ${p.rot}) (size ${p.width} ${p.height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net.str})\n${text}` } return ` @@ -46,8 +44,8 @@ module.exports = { (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) ${''/* SMD pads */} - ${layout(p.param.front, 'F')} - ${layout(p.param.back, 'B')} + ${layout(p.front, 'F')} + ${layout(p.back, 'B')} ) diff --git a/src/footprints/promicro.js b/src/footprints/promicro.js index a7db132..6d55c0c 100644 --- a/src/footprints/promicro.js +++ b/src/footprints/promicro.js @@ -5,33 +5,31 @@ // if up, power led will face away from pcb module.exports = { - nets: { - RAW: 'RAW', - GND: 'GND', - RST: 'RST', - VCC: 'VCC', - P21: 'P21', - P20: 'P20', - P19: 'P19', - P18: 'P18', - P15: 'P15', - P14: 'P14', - P16: 'P16', - P10: 'P10', - P1: 'P1', - P0: 'P0', - P2: 'P2', - P3: 'P3', - P4: 'P4', - P5: 'P5', - P6: 'P6', - P7: 'P7', - P8: 'P8', - P9: 'P9', - }, params: { - class: 'MCU', - orientation: 'down' + designator: 'MCU', + orientation: 'down', + RAW: {type: 'net', value: 'RAW'}, + GND: {type: 'net', value: 'GND'}, + RST: {type: 'net', value: 'RST'}, + VCC: {type: 'net', value: 'VCC'}, + P21: {type: 'net', value: 'P21'}, + P20: {type: 'net', value: 'P20'}, + P19: {type: 'net', value: 'P19'}, + P18: {type: 'net', value: 'P18'}, + P15: {type: 'net', value: 'P15'}, + P14: {type: 'net', value: 'P14'}, + P16: {type: 'net', value: 'P16'}, + P10: {type: 'net', value: 'P10'}, + P1: {type: 'net', value: 'P1'}, + P0: {type: 'net', value: 'P0'}, + P2: {type: 'net', value: 'P2'}, + P3: {type: 'net', value: 'P3'}, + P4: {type: 'net', value: 'P4'}, + P5: {type: 'net', value: 'P5'}, + P6: {type: 'net', value: 'P6'}, + P7: {type: 'net', value: 'P7'}, + P8: {type: 'net', value: 'P8'}, + P9: {type: 'net', value: 'P9'} }, body: p => { const standard = ` @@ -89,34 +87,34 @@ module.exports = { (fp_text user P09 (at 13.97 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) ${''/* and now the actual pins */} - (pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.RAW.str}) - (pad 2 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND.str}) - (pad 3 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.RST.str}) - (pad 4 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.VCC.str}) - (pad 5 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P21.str}) - (pad 6 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P20.str}) - (pad 7 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P19.str}) - (pad 8 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P18.str}) - (pad 9 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P15.str}) - (pad 10 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P14.str}) - (pad 11 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P16.str}) - (pad 12 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P10.str}) + (pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW.str}) + (pad 2 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND.str}) + (pad 3 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RST.str}) + (pad 4 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.VCC.str}) + (pad 5 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P21.str}) + (pad 6 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P20.str}) + (pad 7 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P19.str}) + (pad 8 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P18.str}) + (pad 9 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P15.str}) + (pad 10 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P14.str}) + (pad 11 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P16.str}) + (pad 12 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P10.str}) - (pad 13 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P1.str}) - (pad 14 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P0.str}) - (pad 15 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND.str}) - (pad 16 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND.str}) - (pad 17 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P2.str}) - (pad 18 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P3.str}) - (pad 19 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P4.str}) - (pad 20 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P5.str}) - (pad 21 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P6.str}) - (pad 22 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P7.str}) - (pad 23 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P8.str}) - (pad 24 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P9.str}) + (pad 13 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P1.str}) + (pad 14 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P0.str}) + (pad 15 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND.str}) + (pad 16 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND.str}) + (pad 17 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P2.str}) + (pad 18 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P3.str}) + (pad 19 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P4.str}) + (pad 20 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P5.str}) + (pad 21 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P6.str}) + (pad 22 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P7.str}) + (pad 23 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P8.str}) + (pad 24 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P9.str}) ` } - if(p.param.orientation == 'down') { + if(p.orientation == 'down') { return ` ${standard} ${pins('-', '')}) diff --git a/src/footprints/rgb.js b/src/footprints/rgb.js index 904bd17..45be1b0 100644 --- a/src/footprints/rgb.js +++ b/src/footprints/rgb.js @@ -1,13 +1,11 @@ module.exports = { - nets: { + params: { + designator: 'LED', + side: 'F', din: undefined, dout: undefined, - VCC: 'VCC', - GND: 'GND' - }, - params: { - class: 'LED', - side: 'F' + VCC: {type: 'net', value: 'VCC'}, + GND: {type: 'net', value: 'GND'} }, body: p => ` @@ -19,27 +17,27 @@ module.exports = { (fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_line (start -1.75 -1.75) (end -1.75 1.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -1.75 1.75) (end 1.75 1.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 1.75 1.75) (end 1.75 -1.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 1.75 -1.75) (end -1.75 -1.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -1.75 -1.75) (end -1.75 1.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -1.75 1.75) (end 1.75 1.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 1.75 1.75) (end 1.75 -1.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 1.75 -1.75) (end -1.75 -1.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer ${p.side}.SilkS) (width 0.15)) - (fp_poly (pts (xy 4 2.2) (xy 4 0.375) (xy 5 1.2875)) (layer ${p.param.side}.SilkS) (width 0.1)) + (fp_poly (pts (xy 4 2.2) (xy 4 0.375) (xy 5 1.2875)) (layer ${p.side}.SilkS) (width 0.1)) - (pad 1 smd rect (at -2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.VCC.str}) - (pad 2 smd rect (at -2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.dout.str}) - (pad 3 smd rect (at 2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.GND.str}) - (pad 4 smd rect (at 2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.din.str}) + (pad 1 smd rect (at -2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC.str}) + (pad 2 smd rect (at -2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout.str}) + (pad 3 smd rect (at 2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND.str}) + (pad 4 smd rect (at 2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din.str}) - (pad 11 smd rect (at -2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.VCC.str}) - (pad 22 smd rect (at -2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.dout.str}) - (pad 33 smd rect (at 2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.GND.str}) - (pad 44 smd rect (at 2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.din.str}) + (pad 11 smd rect (at -2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC.str}) + (pad 22 smd rect (at -2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout.str}) + (pad 33 smd rect (at 2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND.str}) + (pad 44 smd rect (at 2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din.str}) ) diff --git a/src/footprints/rotary.js b/src/footprints/rotary.js index 54129d6..60092bf 100644 --- a/src/footprints/rotary.js +++ b/src/footprints/rotary.js @@ -8,16 +8,14 @@ // C: corresponds to pin 3 (for rotary) module.exports = { - nets: { + params: { + designator: 'ROT', from: undefined, to: undefined, A: undefined, B: undefined, C: undefined }, - params: { - class: 'ROT' - }, body: p => ` (module rotary_encoder (layer F.Cu) (tedit 603326DE) @@ -58,11 +56,11 @@ module.exports = { (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) ${''/* pin names */} - (pad A thru_hole rect (at -7.62 -2.54 ${p.rot}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.net.A.str}) - (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.net.C.str}) - (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.net.B.str}) - (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.net.from.str}) - (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.net.to.str}) + (pad A thru_hole rect (at -7.62 -2.54 ${p.rot}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.A.str}) + (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.C.str}) + (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.B.str}) + (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.to.str}) ${''/* Legs */} (pad "" thru_hole rect (at -0.12 -5.64 ${p.rot}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) diff --git a/src/footprints/scrollwheel.js b/src/footprints/scrollwheel.js index 748106f..3024d29 100644 --- a/src/footprints/scrollwheel.js +++ b/src/footprints/scrollwheel.js @@ -21,7 +21,9 @@ module.exports = { - nets: { + params: { + designator: 'S', + reverse: false, from: undefined, to: undefined, A: undefined, @@ -29,10 +31,6 @@ module.exports = { C: undefined, D: undefined }, - params: { - class: 'S', - reverse: false - }, body: p => { const standard = ` (module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C) @@ -59,18 +57,18 @@ module.exports = { (fp_arc (start ${def_pos}9.5 -6.3) (end ${def_pos}9.8 -6.3) (angle ${def_neg}90) (layer Edge.Cuts) (width 0.15)) ${'' /* pins */} - (pad S1 thru_hole circle (at ${def_neg}6.85 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.from.str}) - (pad S2 thru_hole circle (at ${def_neg}5 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.to.str}) - (pad A thru_hole circle (at ${def_neg}5.625 -3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.A.str}) - (pad B thru_hole circle (at ${def_neg}5.625 -1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.B.str}) - (pad C thru_hole circle (at ${def_neg}5.625 1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.C.str}) - (pad D thru_hole circle (at ${def_neg}5.625 3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.D.str}) + (pad S1 thru_hole circle (at ${def_neg}6.85 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.from.str}) + (pad S2 thru_hole circle (at ${def_neg}5 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.to.str}) + (pad A thru_hole circle (at ${def_neg}5.625 -3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.A.str}) + (pad B thru_hole circle (at ${def_neg}5.625 -1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.B.str}) + (pad C thru_hole circle (at ${def_neg}5.625 1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.C.str}) + (pad D thru_hole circle (at ${def_neg}5.625 3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.D.str}) ${'' /* stabilizer */} (pad "" np_thru_hole circle (at ${def_neg}5.625 6.3 ${p.rot}) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) ` } - if(p.param.reverse) { + if(p.reverse) { return ` ${standard} ${pins('-', '')} diff --git a/src/footprints/slider.js b/src/footprints/slider.js index 4bab2ed..fa117fd 100644 --- a/src/footprints/slider.js +++ b/src/footprints/slider.js @@ -1,16 +1,14 @@ module.exports = { - nets: { + params: { + designator: 'T', // for Toggle + side: 'F', from: undefined, to: undefined }, - params: { - class: 'T', // for Toggle - side: 'F' - }, body: p => { - const left = p.param.side == 'F' ? '-' : '' - const right = p.param.side == 'F' ? '' : '-' + const left = p.side == 'F' ? '-' : '' + const right = p.side == 'F' ? '' : '-' return ` @@ -23,12 +21,12 @@ module.exports = { (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) ${'' /* outline */} - (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer ${p.side}.SilkS) (width 0.15)) ${'' /* extra indicator for the slider */} (fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15)) @@ -40,15 +38,15 @@ module.exports = { (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) ${'' /* pins */} - (pad 1 smd rect (at ${right}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.from.str}) - (pad 2 smd rect (at ${left}0.75 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.to.str}) - (pad 3 smd rect (at ${left}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) + (pad 1 smd rect (at ${right}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from.str}) + (pad 2 smd rect (at ${left}0.75 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to.str}) + (pad 3 smd rect (at ${left}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) ${'' /* side mounts */} - (pad "" smd rect (at 3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) - (pad "" smd rect (at 3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) - (pad "" smd rect (at -3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) - (pad "" smd rect (at -3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) + (pad "" smd rect (at 3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at 3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at -3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at -3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) ) ` diff --git a/src/footprints/trrs.js b/src/footprints/trrs.js index 7b30569..6728e7b 100644 --- a/src/footprints/trrs.js +++ b/src/footprints/trrs.js @@ -34,17 +34,15 @@ // pins 1 and 2 must be identical if symmetric is true, as they will overlap module.exports = { - nets: { + params: { + designator: 'TRRS', + reverse: false, + symmetric: false, A: undefined, B: undefined, C: undefined, D: undefined }, - params: { - class: 'TRRS', - reverse: false, - symmetric: false - }, body: p => { const standard = ` (module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5) @@ -73,20 +71,20 @@ module.exports = { } function pins(def_neg, def_pos) { return ` - (pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.A.str}) - (pad 2 thru_hole oval (at ${def_pos} 10.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.B.str}) - (pad 3 thru_hole oval (at ${def_pos} 6.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.C.str}) - (pad 4 thru_hole oval (at ${def_pos} 3.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.D.str}) + (pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.A.str}) + (pad 2 thru_hole oval (at ${def_pos} 10.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.B.str}) + (pad 3 thru_hole oval (at ${def_pos} 6.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.C.str}) + (pad 4 thru_hole oval (at ${def_pos} 3.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.D.str}) ` } - if(p.param.reverse & p.param.symmetric) { + if(p.reverse & p.symmetric) { return ` ${standard} ${stabilizers('-2.3')} ${pins('0', '-4.6')} ${pins('-4.6', '0')}) ` - } else if(p.param.reverse) { + } else if(p.reverse) { return ` ${standard} ${stabilizers('-2.3')} diff --git a/src/footprints/via.js b/src/footprints/via.js index 7e439aa..c83924a 100644 --- a/src/footprints/via.js +++ b/src/footprints/via.js @@ -3,7 +3,7 @@ // net: the net this via should be connected to module.exports = { - nets: { + params: { net: undefined }, body: p => ` @@ -14,7 +14,7 @@ module.exports = { (fp_text value VIA-0.6mm (at 0 -1.4) (layer F.Fab) hide (effects (font (size 1 1) (thickness 0.15)))) ${'' /* via */} - (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net.net.str}) + (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net.str}) ) ` } \ No newline at end of file diff --git a/src/pcbs.js b/src/pcbs.js index 0cede01..be8fce4 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -1,4 +1,5 @@ const m = require('makerjs') +const u = require('./utils') const a = require('./assert') const prep = require('./prepare') const anchor = require('./anchor').parse @@ -162,17 +163,41 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, // parsing parameters for (const [param_name, param_def] of Object.entries(fp.params)) { - let value = prep.extend(param_def.value, params[param_name]) - // templating support + // expand param definition shorthand + let parsed_def = param_def + let def_type = a.type(param_def)(units) + if (def_type == 'string') { + parsed_def = {type: 'string', value: param_def} + } else if (def_type == 'number') { + parsed_def = {type: 'number', value: a.mathnum(param_def)(units)} + } else if (def_type == 'boolean') { + parsed_def = {type: 'boolean', value: param_def} + } else if (def_type == 'undefined') { + parsed_def = {type: 'net', value: undefined} + } + + // combine default value with potential user override + let value = prep.extend(parsed_def.value, params[param_name]) + let type = parsed_def.type + + // templating support, with conversion back to raw datatypes + const converters = { + string: v => v, + number: v => a.sane(v, `${name}.params.${param_name}`, 'number')(units), + boolean: v => v === 'true', + net: v => v, + anchor: v => v + } if (a.type(value)() == 'string') { value = u.template(value, point.meta) + value = converters[type](value) } // type-specific processing - if (['string', 'number', 'boolean'].includes(param_def.type)) { - parsed_params[param_name] = a.sane(value, `${name}.params.${param_name}`, param_def.type)(units) - } else if (param_def.type == 'net') { + if (['string', 'number', 'boolean'].includes(type)) { + parsed_params[param_name] = value + } else if (type == 'net') { const net = a.sane(value, `${name}.params.${param_name}`, 'string')(units) const index = net_indexer(net) parsed_params[param_name] = { @@ -180,7 +205,7 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, index: index, str: `(net ${index} "${net}")` } - } else if (param_def.type == 'anchor') { + } else if (type == 'anchor') { let parsed_anchor = anchor(value || {}, `${name}.params.${param_name}`, points, point)(units) parsed_anchor.y = -parsed_anchor.y // kicad mirror, as per usual parsed_params[param_name] = parsed_anchor @@ -188,7 +213,7 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, } // reference - const component_ref = parsed_params.ref = component_indexer(parsed_params.param.class || '_') + const component_ref = parsed_params.ref = component_indexer(parsed_params.designator || '_') parsed_params.ref_hide = extra.references ? '' : 'hide' // footprint positioning diff --git a/test/fixtures/bundle.zip b/test/fixtures/bundle.zip index 5314848e346b93eae8345d228321863abe20b335..0c1ea1ca41b0622d29ee12f25185bca76e560840 100644 GIT binary patch delta 472 zcmbQuKA)X8z?+#xgnc$7>4y&5i%qf1i;Fh<)Wb9U>oQ+3qnM!hB9h~;? z?bS)5_cx`bdL5a+@we>syqcBY!km(ScO@%KR@~uuqFz30#;vZCMOQVC-r_jv@#~ix zoBYjxlavY@5_0Z!-@To;->>=bpLLsOZH%(95|F;=psgLD(Rnn>#iX$C&C2E57xwX- zY-2Kgd2!X{btk^s8-2FSlTG)CiRrVcoo3zfug1er@v7$*6Qzagip?XRFZ-h!_D85I z=dV!P{%0z)HmhW7PfS0mR?79TPHyo>{s3=wjxA3ocD)CN6DW)VycwB9nBjpvxsFL6 zIkYDWGD}Rpz{COy^2yhsa71)ZIKv4n!t@h3| delta 462 zcmbQwKAW94z?+#xgnT0QxPng^nag<*qzE9Pulv6&&h_Azg)Rwb=a}UoWk=A zcW0GtnEj>iQEm3&S@lmJ9^T*faqX_#Y*M$)WrUBkrLb836DYq@Z`!veyCuj^+R|#n zzP%F}Bh`E}0vlA&6nQS`U}Op;&3Uml$!p)0!5cQ(H{-_9g_X- ` (module injected_test_footprint (layer F.Cu) (tedit 5E1ADAC2) diff --git a/test/footprints/button.yaml b/test/footprints/button.yaml index bcb66f0..dd424d3 100644 --- a/test/footprints/button.yaml +++ b/test/footprints/button.yaml @@ -3,15 +3,14 @@ pcbs.pcb.footprints: # front - what: button - nets: + params: from: from to: to # back - what: button - nets: + params: from: from to: to - params: side: B adjust.shift: [50, 0] \ No newline at end of file diff --git a/test/footprints/choc.yaml b/test/footprints/choc.yaml index 303b117..2c3e39e 100644 --- a/test/footprints/choc.yaml +++ b/test/footprints/choc.yaml @@ -3,43 +3,39 @@ pcbs.pcb.footprints: # base - what: choc - nets: + params: from: from to: to # keycap visualization - what: choc - nets: + params: from: from to: to - params: keycaps: true adjust.shift: [50, 0] # reverse - what: choc - nets: + params: from: from to: to - params: reverse: true adjust.shift: [100, 0] # hotswap - what: choc - nets: + params: from: from to: to - params: hotswap: true adjust.shift: [150, 0] # both reverse and hotswap - what: choc - nets: + params: from: from to: to - params: reverse: true hotswap: true adjust.shift: [200, 0] \ No newline at end of file diff --git a/test/footprints/chocmini.yaml b/test/footprints/chocmini.yaml index 32311b4..2cadb43 100644 --- a/test/footprints/chocmini.yaml +++ b/test/footprints/chocmini.yaml @@ -3,24 +3,22 @@ pcbs.pcb.footprints: # base - what: chocmini - nets: + params: from: from to: to # keycap visualization - what: chocmini - nets: + params: from: from to: to - params: keycaps: true adjust.shift: [50, 0] # reverse - what: chocmini - nets: + params: from: from to: to - params: reverse: true adjust.shift: [100, 0] diff --git a/test/footprints/diode.yaml b/test/footprints/diode.yaml index bb465a3..8e6319c 100644 --- a/test/footprints/diode.yaml +++ b/test/footprints/diode.yaml @@ -1,6 +1,6 @@ points.zones.matrix: pcbs.pcb.footprints: - what: diode - nets: + params: from: from to: to \ No newline at end of file diff --git a/test/footprints/mx.yaml b/test/footprints/mx.yaml index fccbd2c..ee4a5dc 100644 --- a/test/footprints/mx.yaml +++ b/test/footprints/mx.yaml @@ -3,43 +3,39 @@ pcbs.pcb.footprints: # base - what: mx - nets: + params: from: from to: to # keycap visualization - what: mx - nets: + params: from: from to: to - params: keycaps: true adjust.shift: [50, 0] # reverse - what: mx - nets: + params: from: from to: to - params: reverse: true adjust.shift: [100, 0] # hotswap - what: mx - nets: + params: from: from to: to - params: hotswap: true adjust.shift: [150, 0] # both reverse and hotswap - what: mx - nets: + params: from: from to: to - params: reverse: true hotswap: true adjust.shift: [200, 0] \ No newline at end of file diff --git a/test/footprints/pad.yaml b/test/footprints/pad.yaml index 00c605d..3d05355 100644 --- a/test/footprints/pad.yaml +++ b/test/footprints/pad.yaml @@ -2,29 +2,26 @@ points.zones.matrix: pcbs.pcb.footprints: - what: pad - nets: + params: net: net - what: pad - nets: - net: net params: + net: net align: right text: text adjust.shift: [50, 0] - what: pad - nets: - net: net params: + net: net align: up front: false adjust.shift: [0, 50] - what: pad - nets: - net: net params: + net: net align: down mirrored: true adjust.shift: [50, 50] diff --git a/test/footprints/rest.yaml b/test/footprints/rest.yaml index afea689..769682a 100644 --- a/test/footprints/rest.yaml +++ b/test/footprints/rest.yaml @@ -2,42 +2,42 @@ points.zones.matrix: pcbs.pcb.footprints: - what: alps - nets: + params: from: from to: to - what: jstph - nets: + params: pos: pos neg: neg adjust.shift: [50, 0] - what: jumper - nets: + params: from: from to: to adjust.shift: [100, 0] - what: oled - nets: + params: SDA: SDA SCL: SCL adjust.shift: [0, 50] - what: omron - nets: + params: from: from to: to adjust.shift: [50, 50] - what: rgb - nets: + params: din: din dout: dout adjust.shift: [100, 50] - what: rotary - nets: + params: from: from to: to A: A @@ -46,7 +46,7 @@ pcbs.pcb.footprints: adjust.shift: [0, 100] - what: scrollwheel - nets: + params: from: from to: to A: A @@ -56,12 +56,12 @@ pcbs.pcb.footprints: adjust.shift: [50, 100] - what: slider - nets: + params: from: from to: to adjust.shift: [100, 100] - what: via - nets: + params: net: net adjust.shift: [0, 150] \ No newline at end of file diff --git a/test/footprints/trrs.yaml b/test/footprints/trrs.yaml index c2f39db..36547ab 100644 --- a/test/footprints/trrs.yaml +++ b/test/footprints/trrs.yaml @@ -3,7 +3,7 @@ pcbs.pcb.footprints: # basic - what: trrs - nets: + params: A: A B: B C: C @@ -11,23 +11,21 @@ pcbs.pcb.footprints: # reversible - what: trrs - nets: + params: A: A B: B C: C D: D - params: reverse: true adjust.shift: [50, 0] # reversible + symmetric - what: trrs - nets: + params: A: A B: B C: C D: D - params: reverse: true symmetric: true adjust.shift: [100, 0] \ No newline at end of file diff --git a/test/helpers/mock_footprints.js b/test/helpers/mock_footprints.js index ddb0e82..8a6b47f 100644 --- a/test/helpers/mock_footprints.js +++ b/test/helpers/mock_footprints.js @@ -1,11 +1,9 @@ exports.inject = (ergogen) => { ergogen.inject('footprint', 'trace_test', { - nets: { - P1: 'P1' - }, params: { - class: 'T', - side: 'F' + designator: 'T', + side: 'F', + P1: {type: 'net', value: 'P1'} }, body: p => { return ` @@ -15,26 +13,24 @@ exports.inject = (ergogen) => { ${p.at /* parametric position */} (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) - ${p.net.P1.str} (solder_mask_margin 0.2)) + ${p.P1.str} (solder_mask_margin 0.2)) (pad 2 smd rect (at 5 5 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) - ${p.net.P1.str} (solder_mask_margin 0.2)) + ${p.P1.str} (solder_mask_margin 0.2)) ) - (segment (start ${p.xy(0, 0)}) (end ${p.xy(5, 5)}) (width 0.25) (layer F.Cu) (net ${p.net.P1.index})) + (segment (start ${p.xy(0, 0)}) (end ${p.xy(5, 5)}) (width 0.25) (layer F.Cu) (net ${p.P1.index})) ` } }) ergogen.inject('footprint', 'zone_test', { - nets: { - P1: 'P1' - }, params: { - class: 'T', - side: 'F' + designator: 'T', + side: 'F', + P1: {type: 'net', value: 'P1'} }, body: p => { return ` @@ -44,14 +40,14 @@ exports.inject = (ergogen) => { ${p.at /* parametric position */} (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) - ${p.net.P1.str} (solder_mask_margin 0.2)) + ${p.P1.str} (solder_mask_margin 0.2)) (pad 2 smd rect (at 5 5 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) - ${p.net.P1.str} (solder_mask_margin 0.2)) + ${p.P1.str} (solder_mask_margin 0.2)) ) - (zone (net ${p.net.P1.index}) (net_name ${p.net.P1.name}) (layer ${p.param.side}.Cu) (tstamp 0) (hatch full 0.508) + (zone (net ${p.P1.index}) (net_name ${p.P1.name}) (layer ${p.side}.Cu) (tstamp 0) (hatch full 0.508) (connect_pads (clearance 0.508)) (min_thickness 0.254) (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) @@ -63,9 +59,8 @@ exports.inject = (ergogen) => { }) ergogen.inject('footprint', 'dynamic_net_test', { - nets: {}, params: { - class: 'T', + designator: 'T', side: 'F' }, body: p => { @@ -91,13 +86,10 @@ exports.inject = (ergogen) => { }) ergogen.inject('footprint', 'anchor_test', { - nets: {}, params: { - class: 'T', - side: 'F' - }, - anchors: { - end: undefined + designator: 'T', + side: 'F', + end: {type: 'anchor', value: undefined} }, body: p => { return ` @@ -106,7 +98,7 @@ exports.inject = (ergogen) => { ${p.at /* parametric position */} - (fp_line (start 0 0) (end ${p.anchors.end.x} ${p.anchors.end.y}) (layer Dwgs.User) (width 0.05)) + (fp_line (start 0 0) (end ${p.end.x} ${p.end.y}) (layer Dwgs.User) (width 0.05)) ) @@ -115,7 +107,6 @@ exports.inject = (ergogen) => { }) ergogen.inject('footprint', 'references_test', { - nets: {}, params: {}, body: p => { return `references ${p.ref_hide ? 'hidden' : 'shown'}` diff --git a/test/pcbs/mock_footprints.yaml b/test/pcbs/mock_footprints.yaml index 6444a04..e3614a7 100644 --- a/test/pcbs/mock_footprints.yaml +++ b/test/pcbs/mock_footprints.yaml @@ -24,7 +24,7 @@ pcbs: what: dynamic_net_test anc: what: anchor_test - anchors: + params: end: ref: matrix shift: [10, 10] \ No newline at end of file From e076b62190b0dd7ed6ef672a0f4e01ca736984ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 4 Dec 2022 20:58:46 +0100 Subject: [PATCH 063/120] Per-footprint mirror overrides, better coordinate support --- roadmap.md | 9 +-- src/pcbs.js | 27 +++++-- test/helpers/mock_footprints.js | 24 +++--- test/pcbs/mock_footprints.yaml | 8 +- .../mock_footprints___pcbs_main.kicad_pcb | 73 ++++++++++++++++--- 5 files changed, 106 insertions(+), 35 deletions(-) diff --git a/roadmap.md b/roadmap.md index d54b04d..e34d9ec 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,18 +6,11 @@ ### Major -- Restructure pcb point/footprint filtering - - Use the same `what`/`where` infrastructure as outlines - - Collapse params/nets/anchors into a single hierarchy from the user's POV - - Add per-footprint mirror support - - Add some way for footprints to be able to "resist" the mirroring-related special treatment of negative X shift, rotation, etc. - Merge, generalize, uniform-ize and externalize footprints! - onnx-like incremental opset versioning - Template for creating them, built-in variables they can use, documentation, external links, etc. - Add access to whole set of points + filtering logic, so they can implement their own connection logic as well maybe (see daisy chaining) - - footprint parameters inside the body should be `p.params.field` instead of `p.param.field` so it actually matches the options that you pass in - - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. - - Rename class to designator in this context (https://en.wikipedia.org/wiki/Reference_designator#Designators) + - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour (see ixy/xy/sxy note), etc. ### Minor diff --git a/src/pcbs.js b/src/pcbs.js index be8fce4..3289d12 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -157,11 +157,21 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, a.unexpected(config, name, ['what', 'params']) const what = a.in(config.what, `${name}.what`, Object.keys(footprint_types)) const fp = footprint_types[what] - const params = config.params || {} - a.unexpected(params, `${name}.params`, Object.keys(fp.params)) - const parsed_params = {} + const original_params = config.params || {} + // param sanitization + // we unset the mirror config, as it would be an unexpected field + let params = u.deepcopy(original_params) + delete params.mirror + // but still override with it when applicable + if (point.meta.mirrored && original_params.mirror !== undefined) { + const mirror_overrides = a.sane(original_params.mirror, `${name}.params.mirror`, 'object')() + params = prep.extend(params, mirror_overrides) + } + a.unexpected(params, `${name}.params`, Object.keys(fp.params)) + // parsing parameters + const parsed_params = {} for (const [param_name, param_def] of Object.entries(fp.params)) { // expand param definition shorthand @@ -219,12 +229,19 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, // footprint positioning parsed_params.at = `(at ${point.x} ${-point.y} ${point.r})` parsed_params.rot = point.r - parsed_params.xy = (x, y) => { + parsed_params.ixy = (x, y) => { + const sign = point.meta.mirrored ? -1 : 1 + return `${sign * x} ${y}` + } + const xyfunc = (x, y, resist=true) => { const new_anchor = anchor({ - shift: [x, -y] + shift: [x, -y], + resist: resist }, '_internal_footprint_xy', points, point)(units) return `${new_anchor.x} ${-new_anchor.y}` } + parsed_params.xy = (x, y) => xyfunc(x, y, true) + parsed_params.sxy = (x, y) => xyfunc(x, y, false) // allowing footprints to add dynamic nets parsed_params.local_net = suffix => { diff --git a/test/helpers/mock_footprints.js b/test/helpers/mock_footprints.js index 8a6b47f..749d26c 100644 --- a/test/helpers/mock_footprints.js +++ b/test/helpers/mock_footprints.js @@ -8,19 +8,19 @@ exports.inject = (ergogen) => { body: p => { return ` - (module trace_test (layer F.Cu) (tedit 5CF31DEF) + (module trace_test (layer ${p.side}.Cu) (tedit 5CF31DEF) ${p.at /* parametric position */} - (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + (pad 1 smd rect (at ${p.ixy(0, 0)} ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.P1.str} (solder_mask_margin 0.2)) - (pad 2 smd rect (at 5 5 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + (pad 2 smd rect (at ${p.ixy(5, 5)} ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.P1.str} (solder_mask_margin 0.2)) ) - (segment (start ${p.xy(0, 0)}) (end ${p.xy(5, 5)}) (width 0.25) (layer F.Cu) (net ${p.P1.index})) + (segment (start ${p.sxy(0, 0)}) (end ${p.sxy(5, 5)}) (width 0.25) (layer ${p.side}.Cu) (net ${p.P1.index})) ` } @@ -35,14 +35,14 @@ exports.inject = (ergogen) => { body: p => { return ` - (module zone_test (layer F.Cu) (tedit 5CF31DEF) + (module zone_test (layer ${p.side}.Cu) (tedit 5CF31DEF) ${p.at /* parametric position */} - (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.P1.str} (solder_mask_margin 0.2)) - (pad 2 smd rect (at 5 5 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + (pad 2 smd rect (at 5 5 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.P1.str} (solder_mask_margin 0.2)) ) @@ -66,17 +66,17 @@ exports.inject = (ergogen) => { body: p => { return ` - (module dynamic_net_test (layer F.Cu) (tedit 5CF31DEF) + (module dynamic_net_test (layer ${p.side}.Cu) (tedit 5CF31DEF) ${p.at /* parametric position */} - (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.local_net('1').str} (solder_mask_margin 0.2)) - (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.local_net('2').str} (solder_mask_margin 0.2)) - (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.local_net('3').str} (solder_mask_margin 0.2)) ) @@ -94,7 +94,7 @@ exports.inject = (ergogen) => { body: p => { return ` - (module anchor_test (layer F.Cu) (tedit 5CF31DEF) + (module anchor_test (layer ${p.side}.Cu) (tedit 5CF31DEF) ${p.at /* parametric position */} diff --git a/test/pcbs/mock_footprints.yaml b/test/pcbs/mock_footprints.yaml index e3614a7..ddce5b0 100644 --- a/test/pcbs/mock_footprints.yaml +++ b/test/pcbs/mock_footprints.yaml @@ -1,4 +1,5 @@ points.zones.matrix: + mirror: 10 outlines: edge: - what: rectangle @@ -12,9 +13,14 @@ pcbs: footprints: trace: what: trace_test - where: + where: true + adjust: shift: [1, 1] rotate: 30 + params: + side: F + mirror: + side: B zone: what: zone_test where: diff --git a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb index f3a1b49..d9b38b3 100644 --- a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb +++ b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb @@ -94,9 +94,9 @@ (net 0 "") (net 1 "P1") -(net 2 "T3_1") -(net 3 "T3_2") -(net 4 "T3_3") +(net 2 "T6_1") +(net 3 "T6_2") +(net 4 "T6_3") (net_class Default "This is the default net class." (clearance 0.2) @@ -107,9 +107,9 @@ (uvia_drill 0.1) (add_net "") (add_net "P1") -(add_net "T3_1") -(add_net "T3_2") -(add_net "T3_3") +(add_net "T6_1") +(add_net "T6_2") +(add_net "T6_3") ) @@ -131,6 +131,57 @@ + (module trace_test (layer B.Cu) (tedit 5CF31DEF) + + (at 19 -1 -30) + + (pad 1 smd rect (at 0 0 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + (pad 2 smd rect (at -5 5 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + ) + + (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.25) (layer B.Cu) (net 1)) + + + + + (module trace_test (layer B.Cu) (tedit 5CF31DEF) + + (at 19 -1 -30) + + (pad 1 smd rect (at 0 0 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + (pad 2 smd rect (at -5 5 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + ) + + (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.25) (layer B.Cu) (net 1)) + + + + + (module trace_test (layer F.Cu) (tedit 5CF31DEF) + + (at 1 -1 30) + + (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 1 "P1") (solder_mask_margin 0.2)) + + ) + + (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.25) (layer F.Cu) (net 1)) + + + + (module zone_test (layer F.Cu) (tedit 5CF31DEF) (at 1 -1 30) @@ -158,13 +209,13 @@ (at 0 0 0) (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 2 "T3_1") (solder_mask_margin 0.2)) + (net 2 "T6_1") (solder_mask_margin 0.2)) (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 3 "T3_2") (solder_mask_margin 0.2)) + (net 3 "T6_2") (solder_mask_margin 0.2)) (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 4 "T3_3") (solder_mask_margin 0.2)) + (net 4 "T6_3") (solder_mask_margin 0.2)) ) @@ -184,6 +235,10 @@ (gr_line (start 9.5 9.5) (end 9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 9.5 -9.5) (end -9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start -9.5 -9.5) (end -9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 10.5 9.5) (end 29.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 29.5 9.5) (end 29.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 29.5 -9.5) (end 10.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 10.5 -9.5) (end 10.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) ) From 83b7dc1bb8b8703ef83049195ea50affc9148b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 18 Dec 2022 11:44:16 +0100 Subject: [PATCH 064/120] Roadmap update --- roadmap.md | 1 + 1 file changed, 1 insertion(+) diff --git a/roadmap.md b/roadmap.md index e34d9ec..3629cf0 100644 --- a/roadmap.md +++ b/roadmap.md @@ -24,6 +24,7 @@ - 3D orient for cases - Even more extreme anchor stuff - Checkpoints, intersects, distances, weighted combinations? + - Extend the "turning towards" capabilities of `orient` and `rotate` to `shift` as well (to move as much as it would take the current anchor location to get there) - SVG input (for individual outlines, or even combinations parsed by line color, etc.) - And once that's done, possibly even STL or other input for cases or pcb renders - Support text silk output to PCBs (in configurable fonts, through SVG?) From da1417ce2faad7181bb7aea40f71871b66271b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 18 Dec 2022 12:37:44 +0100 Subject: [PATCH 065/120] Type/what consistency for shorthands and cases --- src/cases.js | 8 ++++---- src/operation.js | 2 +- test/unit/operation.js | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/cases.js b/src/cases.js index 0604c48..f6342fc 100644 --- a/src/cases.js +++ b/src/cases.js @@ -57,15 +57,15 @@ exports.parse = (config, outlines, units) => { } const part_qname = `cases.${case_name}.${part_name}` const part_var = `${case_name}__part_${part_name}` - a.unexpected(part, part_qname, ['type', 'name', 'extrude', 'shift', 'rotate', 'operation']) - const type = a.in(part.type || 'outline', `${part_qname}.type`, ['outline', 'case']) + a.unexpected(part, part_qname, ['what', 'name', 'extrude', 'shift', 'rotate', 'operation']) + const what = a.in(part.what || 'outline', `${part_qname}.what`, ['outline', 'case']) const name = a.sane(part.name, `${part_qname}.name`, 'string')() const shift = a.numarr(part.shift || [0, 0, 0], `${part_qname}.shift`, 3)(units) const rotate = a.numarr(part.rotate || [0, 0, 0], `${part_qname}.rotate`, 3)(units) const operation = a.in(part.operation || 'add', `${part_qname}.operation`, ['add', 'subtract', 'intersect']) let base - if (type == 'outline') { + if (what == 'outline') { const extrude = a.sane(part.extrude || 1, `${part_qname}.extrude`, 'number')(units) const outline = outlines[name] a.assert(outline, `Field "${part_qname}.name" does not name a valid outline!`) @@ -79,7 +79,7 @@ exports.parse = (config, outlines, units) => { outline_dependencies.push(name) base = `${name}_outline_fn()` } else { - a.assert(part.extrude === undefined, `Field "${part_qname}.extrude" should not be used when type=case!`) + a.assert(part.extrude === undefined, `Field "${part_qname}.extrude" should not be used when what=case!`) a.in(name, `${part_qname}.name`, Object.keys(cases)) case_dependencies.push(name) base = `${name}_case_fn()` diff --git a/src/operation.js b/src/operation.js index fa210fb..0480324 100644 --- a/src/operation.js +++ b/src/operation.js @@ -17,7 +17,7 @@ exports.operation = (str, choices={}, order=Object.keys(choices)) => { let res = op_prefix(str) for (const key of order) { if (choices[key].includes(res.name)) { - res.type = key + res.what = key break } } diff --git a/test/unit/operation.js b/test/unit/operation.js index de2a12e..9ffe371 100644 --- a/test/unit/operation.js +++ b/test/unit/operation.js @@ -13,10 +13,10 @@ describe('Operation', function() { it('operation', function() { // without choices, it's the same as op_prefix o.operation('arst').should.deep.equal({name: 'arst', operation: 'add'}) - // with choices, it propagates type where it found the name - o.operation('arst', {bad: [], good: ['arst']}).should.deep.equal({name: 'arst', operation: 'add', type: 'good'}) + // with choices, it propagates the "what" from where it found the name + o.operation('arst', {bad: [], good: ['arst']}).should.deep.equal({name: 'arst', operation: 'add', what: 'good'}) // it also respects order when overridden - o.operation('arst', {first: ['arst'], second: ['arst']}, ['second', 'first']).should.deep.equal({name: 'arst', operation: 'add', type: 'second'}) + o.operation('arst', {first: ['arst'], second: ['arst']}, ['second', 'first']).should.deep.equal({name: 'arst', operation: 'add', what: 'second'}) }) }) \ No newline at end of file From 5006f5b862b702e2139a13e0f893c2ff3baf472f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 18 Dec 2022 12:38:08 +0100 Subject: [PATCH 066/120] Missing const for web deployment --- src/anchor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/anchor.js b/src/anchor.js index 0a06d96..e00c612 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -90,7 +90,7 @@ const anchor = exports.parse = (raw, name, points={}, start=new Point(), mirror= // Actual orient/shift/rotate/affect handling // - resist = a.sane(raw.resist || false, `${name}.resist`, 'boolean')() + const resist = a.sane(raw.resist || false, `${name}.resist`, 'boolean')() const rotator = (config, name, point) => { // simple case: number gets added to point rotation if (a.type(config)(units) == 'number') { @@ -107,7 +107,7 @@ const anchor = exports.parse = (raw, name, points={}, start=new Point(), mirror= rotator(raw.orient, `${name}.orient`, point) } if (raw.shift !== undefined) { - let xyval = a.wh(raw.shift, `${name}.shift`)(units) + const xyval = a.wh(raw.shift, `${name}.shift`)(units) point.shift(xyval, true, resist) } if (raw.rotate !== undefined) { From 68df6aee0a14214d582c29727f0054b670a5d83a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sun, 18 Dec 2022 12:42:02 +0100 Subject: [PATCH 067/120] Version bump --- package-lock.json | 1515 ++++++++++----------------------------------- package.json | 2 +- 2 files changed, 345 insertions(+), 1172 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2e3177e..8ea82ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ergogen", - "version": "4.0.0-develop", + "version": "4.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ergogen", - "version": "4.0.0-develop", + "version": "4.0.0", "license": "MIT", "dependencies": { "fs-extra": "^10.0.1", @@ -34,9 +34,8 @@ }, "node_modules/@ampproject/remapping": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/trace-mapping": "^0.3.0" }, @@ -46,9 +45,8 @@ }, "node_modules/@babel/code-frame": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.16.7" }, @@ -58,18 +56,16 @@ }, "node_modules/@babel/compat-data": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", @@ -97,9 +93,8 @@ }, "node_modules/@babel/generator": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", @@ -111,9 +106,8 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", @@ -129,9 +123,8 @@ }, "node_modules/@babel/helper-environment-visitor": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -141,9 +134,8 @@ }, "node_modules/@babel/helper-function-name": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.16.7", "@babel/types": "^7.17.0" @@ -154,9 +146,8 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -166,9 +157,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -178,9 +168,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", @@ -197,9 +186,8 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.17.0" }, @@ -209,9 +197,8 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -221,27 +208,24 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.16.7", "@babel/traverse": "^7.17.9", @@ -253,9 +237,8 @@ }, "node_modules/@babel/highlight": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", @@ -267,9 +250,8 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -279,9 +261,8 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -293,42 +274,37 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -338,9 +314,8 @@ }, "node_modules/@babel/parser": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", "dev": true, + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -350,8 +325,7 @@ }, "node_modules/@babel/runtime": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -361,9 +335,8 @@ }, "node_modules/@babel/template": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", @@ -375,9 +348,8 @@ }, "node_modules/@babel/traverse": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.17.9", @@ -396,9 +368,8 @@ }, "node_modules/@babel/types": { "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -409,14 +380,12 @@ }, "node_modules/@danmarshall/jscad-typings": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" + "license": "MIT" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -430,9 +399,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -443,9 +411,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -455,9 +422,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -470,9 +436,8 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -482,33 +447,29 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jridgewell/resolve-uri": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -516,9 +477,8 @@ }, "node_modules/@rollup/plugin-commonjs": { "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz", - "integrity": "sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "commondir": "^1.0.1", @@ -537,9 +497,8 @@ }, "node_modules/@rollup/plugin-json": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.0.8" }, @@ -549,9 +508,8 @@ }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -566,50 +524,42 @@ }, "node_modules/@rollup/pluginutils/node_modules/estree-walker": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/bezier-js": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", - "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" + "license": "MIT" }, "node_modules/@types/estree": { "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "7.10.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", - "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" + "license": "MIT" }, "node_modules/@types/opentype.js": { "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", - "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" + "license": "MIT" }, "node_modules/@types/pdfkit": { "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -620,25 +570,22 @@ }, "node_modules/ansi-colors": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -651,9 +598,8 @@ }, "node_modules/anymatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -664,9 +610,8 @@ }, "node_modules/append-transform": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, + "license": "MIT", "dependencies": { "default-require-extensions": "^3.0.0" }, @@ -676,52 +621,45 @@ }, "node_modules/archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/assertion-error": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bezier-js": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", - "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -729,9 +667,8 @@ }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -741,14 +678,11 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/browserslist": { "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, "funding": [ { @@ -760,6 +694,7 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001317", "electron-to-chromium": "^1.4.84", @@ -776,9 +711,8 @@ }, "node_modules/caching-transform": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, + "license": "MIT", "dependencies": { "hasha": "^5.0.0", "make-dir": "^3.0.0", @@ -791,17 +725,14 @@ }, "node_modules/camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "dev": true, "funding": [ { @@ -812,13 +743,13 @@ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chai": { "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", @@ -834,9 +765,8 @@ }, "node_modules/chai-as-promised": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dev": true, + "license": "WTFPL", "dependencies": { "check-error": "^1.0.2" }, @@ -846,9 +776,8 @@ }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -862,9 +791,8 @@ }, "node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -874,17 +802,14 @@ }, "node_modules/check-error": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -892,6 +817,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -910,17 +836,15 @@ }, "node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cliui": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -929,16 +853,14 @@ }, "node_modules/clone": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -948,19 +870,16 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/complex.js": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", - "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", + "license": "MIT", "engines": { "node": "*" }, @@ -971,29 +890,25 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/convert-source-map": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.1" } }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1005,9 +920,8 @@ }, "node_modules/debug": { "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -1022,29 +936,25 @@ }, "node_modules/debug/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/decimal.js": { "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + "license": "MIT" }, "node_modules/deep-eql": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, + "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, @@ -1054,9 +964,8 @@ }, "node_modules/default-require-extensions": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, + "license": "MIT", "dependencies": { "strip-bom": "^4.0.0" }, @@ -1066,18 +975,16 @@ }, "node_modules/diff": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/dir-compare": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.0.0.tgz", - "integrity": "sha512-wC7thVKL3V656tO61rbEDE4LTeeYrUC2pAUL00AaXYghBhjjVNRyBlpH6POzb44ZuK23OSrqF6TbSC/QYeqfAg==", "dev": true, + "license": "MIT", "dependencies": { "minimatch": "^3.0.4", "p-limit": "^3.1.0 " @@ -1085,39 +992,33 @@ }, "node_modules/electron-to-chromium": { "version": "1.4.111", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.111.tgz", - "integrity": "sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "license": "MIT" }, "node_modules/es6-error": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-latex": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", - "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1127,8 +1028,7 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1139,15 +1039,13 @@ }, "node_modules/estree-walker": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1157,9 +1055,8 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -1174,9 +1071,8 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1190,18 +1086,16 @@ }, "node_modules/flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/foreground-child": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^3.0.2" @@ -1212,8 +1106,7 @@ }, "node_modules/fraction.js": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "license": "MIT", "engines": { "node": "*" }, @@ -1224,8 +1117,6 @@ }, "node_modules/fromentries": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true, "funding": [ { @@ -1240,12 +1131,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/fs-extra": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -1257,70 +1148,49 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "license": "ISC" }, "node_modules/function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-func-name": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/get-package-type": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/glob": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1338,9 +1208,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1350,37 +1219,32 @@ }, "node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "license": "ISC" }, "node_modules/graham_scan": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", - "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" + "license": "MIT" }, "node_modules/growl": { "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.x" } }, "node_modules/has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -1390,18 +1254,16 @@ }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hasha": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" @@ -1415,47 +1277,41 @@ }, "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/immediate": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + "license": "MIT" }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1463,14 +1319,12 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1480,9 +1334,8 @@ }, "node_modules/is-core-module": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, + "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -1492,26 +1345,23 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1521,36 +1371,32 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-reference": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*" } }, "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -1560,15 +1406,13 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1578,38 +1422,33 @@ }, "node_modules/is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-hook": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "append-transform": "^2.0.0" }, @@ -1619,9 +1458,8 @@ }, "node_modules/istanbul-lib-instrument": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", @@ -1634,9 +1472,8 @@ }, "node_modules/istanbul-lib-processinfo": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", "dev": true, + "license": "ISC", "dependencies": { "archy": "^1.0.0", "cross-spawn": "^7.0.0", @@ -1652,9 +1489,8 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -1666,9 +1502,8 @@ }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1678,9 +1513,8 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -1692,18 +1526,16 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/istanbul-reports": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -1714,19 +1546,16 @@ }, "node_modules/javascript-natural-sort": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1737,9 +1566,8 @@ }, "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -1749,8 +1577,7 @@ }, "node_modules/json5": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -1760,8 +1587,7 @@ }, "node_modules/jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -1771,8 +1597,7 @@ }, "node_modules/jszip": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -1782,8 +1607,7 @@ }, "node_modules/kdbush": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", - "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" + "license": "ISC" }, "node_modules/kle-serial": { "name": "@ijprest/kle-serial", @@ -1796,17 +1620,15 @@ }, "node_modules/lie": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -1819,15 +1641,13 @@ }, "node_modules/lodash.flattendeep": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -1841,27 +1661,24 @@ }, "node_modules/loupe": { "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", "dev": true, + "license": "MIT", "dependencies": { "get-func-name": "^2.0.0" } }, "node_modules/magic-string": { "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, + "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.8" } }, "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -1890,8 +1707,7 @@ }, "node_modules/mathjs": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.4.3.tgz", - "integrity": "sha512-C50lWorCOplBec9Ik5fzhHuOx4G4+mtdz3r1G2I1/r8yj+CpYFXLXNqTdg59oKmIF1tKcIzpxlC4s2dGL7f3pg==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.17.8", "complex.js": "^2.1.0", @@ -1912,9 +1728,8 @@ }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1924,9 +1739,8 @@ }, "node_modules/mocha": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", "dev": true, + "license": "MIT", "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", @@ -1967,15 +1781,13 @@ }, "node_modules/mocha/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1985,9 +1797,8 @@ }, "node_modules/mocha/node_modules/minimatch": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1997,9 +1808,8 @@ }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -2015,15 +1825,13 @@ }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true, + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -2033,9 +1841,8 @@ }, "node_modules/node-preload": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, + "license": "MIT", "dependencies": { "process-on-spawn": "^1.0.0" }, @@ -2045,24 +1852,21 @@ }, "node_modules/node-releases": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/nyc": { "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", @@ -2101,9 +1905,8 @@ }, "node_modules/nyc/node_modules/cliui": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -2112,9 +1915,8 @@ }, "node_modules/nyc/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -2125,9 +1927,8 @@ }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -2137,9 +1938,8 @@ }, "node_modules/nyc/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2152,9 +1952,8 @@ }, "node_modules/nyc/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -2164,9 +1963,8 @@ }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2178,15 +1976,13 @@ }, "node_modules/nyc/node_modules/y18n": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/nyc/node_modules/yargs": { "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -2206,9 +2002,8 @@ }, "node_modules/nyc/node_modules/yargs-parser": { "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -2219,18 +2014,16 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2243,9 +2036,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -2258,9 +2050,8 @@ }, "node_modules/p-map": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -2270,18 +2061,16 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/package-hash": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, + "license": "ISC", "dependencies": { "graceful-fs": "^4.1.15", "hasha": "^5.0.0", @@ -2294,62 +2083,54 @@ }, "node_modules/pako": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "license": "(MIT AND Zlib)" }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -2359,9 +2140,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -2371,9 +2151,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -2384,9 +2163,8 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -2396,9 +2174,8 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2411,9 +2188,8 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -2423,14 +2199,12 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "license": "MIT" }, "node_modules/process-on-spawn": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, + "license": "MIT", "dependencies": { "fromentries": "^1.2.0" }, @@ -2440,17 +2214,15 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/readable-stream": { "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -2463,9 +2235,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -2475,14 +2246,12 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "license": "MIT" }, "node_modules/release-zalgo": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, + "license": "ISC", "dependencies": { "es6-error": "^4.0.1" }, @@ -2492,23 +2261,20 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/resolve": { "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.8.1", "path-parse": "^1.0.7", @@ -2523,18 +2289,16 @@ }, "node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2547,9 +2311,8 @@ }, "node_modules/rollup": { "version": "2.70.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", - "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", "dev": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -2562,48 +2325,41 @@ }, "node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "license": "MIT" }, "node_modules/seedrandom": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + "license": "MIT" }, "node_modules/semver": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/serialize-javascript": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "license": "MIT" }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2613,39 +2369,34 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/spawn-wrap": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^2.0.0", "is-windows": "^1.0.2", @@ -2660,21 +2411,18 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "license": "BSD-3-Clause" }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2686,8 +2434,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2697,18 +2444,16 @@ }, "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -2718,9 +2463,8 @@ }, "node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2733,9 +2477,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2745,9 +2488,8 @@ }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -2759,23 +2501,20 @@ }, "node_modules/tiny-emitter": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + "license": "MIT" }, "node_modules/to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2785,67 +2524,57 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/typed-function": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.1.0.tgz", - "integrity": "sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==", "engines": { "node": ">= 10" } }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "license": "MIT" }, "node_modules/uuid": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, + "license": "MIT", "bin": { "uuid": "bin/uuid" } }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2858,20 +2587,17 @@ }, "node_modules/which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/workerpool": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2886,15 +2612,13 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -2904,16 +2628,14 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs": { "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -2929,18 +2651,16 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -2953,9 +2673,8 @@ }, "node_modules/yargs-unparser/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2965,9 +2684,8 @@ }, "node_modules/yargs-unparser/node_modules/decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2977,17 +2695,15 @@ }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2999,8 +2715,6 @@ "dependencies": { "@ampproject/remapping": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.0" @@ -3008,8 +2722,6 @@ }, "@babel/code-frame": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "requires": { "@babel/highlight": "^7.16.7" @@ -3017,14 +2729,10 @@ }, "@babel/compat-data": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "dev": true }, "@babel/core": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", @@ -3046,8 +2754,6 @@ }, "@babel/generator": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "dev": true, "requires": { "@babel/types": "^7.17.0", @@ -3057,8 +2763,6 @@ }, "@babel/helper-compilation-targets": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dev": true, "requires": { "@babel/compat-data": "^7.17.7", @@ -3069,8 +2773,6 @@ }, "@babel/helper-environment-visitor": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, "requires": { "@babel/types": "^7.16.7" @@ -3078,8 +2780,6 @@ }, "@babel/helper-function-name": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "requires": { "@babel/template": "^7.16.7", @@ -3088,8 +2788,6 @@ }, "@babel/helper-hoist-variables": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "requires": { "@babel/types": "^7.16.7" @@ -3097,8 +2795,6 @@ }, "@babel/helper-module-imports": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "requires": { "@babel/types": "^7.16.7" @@ -3106,8 +2802,6 @@ }, "@babel/helper-module-transforms": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", @@ -3122,8 +2816,6 @@ }, "@babel/helper-simple-access": { "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dev": true, "requires": { "@babel/types": "^7.17.0" @@ -3131,8 +2823,6 @@ }, "@babel/helper-split-export-declaration": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { "@babel/types": "^7.16.7" @@ -3140,20 +2830,14 @@ }, "@babel/helper-validator-identifier": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true }, "@babel/helper-validator-option": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true }, "@babel/helpers": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dev": true, "requires": { "@babel/template": "^7.16.7", @@ -3163,8 +2847,6 @@ }, "@babel/highlight": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -3174,8 +2856,6 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -3183,8 +2863,6 @@ }, "chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -3194,8 +2872,6 @@ }, "color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" @@ -3203,26 +2879,18 @@ }, "color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -3232,22 +2900,16 @@ }, "@babel/parser": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", "dev": true }, "@babel/runtime": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", @@ -3257,8 +2919,6 @@ }, "@babel/traverse": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", @@ -3275,8 +2935,6 @@ }, "@babel/types": { "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -3284,14 +2942,10 @@ } }, "@danmarshall/jscad-typings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", - "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" + "version": "1.0.0" }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -3303,8 +2957,6 @@ "dependencies": { "find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -3313,8 +2965,6 @@ }, "locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" @@ -3322,8 +2972,6 @@ }, "p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -3331,8 +2979,6 @@ }, "p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -3342,26 +2988,18 @@ }, "@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, "@jridgewell/resolve-uri": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", "dev": true }, "@jridgewell/sourcemap-codec": { "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -3370,8 +3008,6 @@ }, "@rollup/plugin-commonjs": { "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz", - "integrity": "sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -3385,8 +3021,6 @@ }, "@rollup/plugin-json": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", "dev": true, "requires": { "@rollup/pluginutils": "^3.0.8" @@ -3394,8 +3028,6 @@ }, "@rollup/pluginutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -3405,51 +3037,35 @@ "dependencies": { "estree-walker": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true } } }, "@types/bezier-js": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", - "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" + "version": "0.0.6" }, "@types/estree": { "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "@types/node": { - "version": "7.10.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", - "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" + "version": "7.10.14" }, "@types/opentype.js": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", - "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" + "version": "0.7.2" }, "@types/pdfkit": { "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", - "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", "requires": { "@types/node": "*" } }, "@ungap/promise-all-settled": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, "aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", @@ -3458,27 +3074,19 @@ }, "ansi-colors": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "version": "5.0.1" }, "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { "color-convert": "^2.0.1" } }, "anymatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -3487,8 +3095,6 @@ }, "append-transform": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, "requires": { "default-require-extensions": "^3.0.0" @@ -3496,45 +3102,31 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" } }, "assertion-error": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, "balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "bezier-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", - "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + "version": "2.6.1" }, "binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -3543,8 +3135,6 @@ }, "braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -3552,14 +3142,10 @@ }, "browser-stdout": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, "browserslist": { "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001317", @@ -3571,8 +3157,6 @@ }, "caching-transform": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "requires": { "hasha": "^5.0.0", @@ -3583,20 +3167,14 @@ }, "camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "caniuse-lite": { "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "dev": true }, "chai": { "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -3610,8 +3188,6 @@ }, "chai-as-promised": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dev": true, "requires": { "check-error": "^1.0.2" @@ -3619,8 +3195,6 @@ }, "chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -3629,8 +3203,6 @@ "dependencies": { "supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -3640,14 +3212,10 @@ }, "check-error": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, "chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -3662,14 +3230,10 @@ }, "clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cliui": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -3677,58 +3241,40 @@ } }, "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + "version": "1.0.4" }, "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "version": "1.1.4" }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "complex.js": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", - "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==" + "version": "2.1.1" }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" } }, "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "version": "1.0.3" }, "cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -3738,8 +3284,6 @@ }, "debug": { "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -3747,27 +3291,19 @@ "dependencies": { "ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + "version": "10.3.1" }, "deep-eql": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -3775,8 +3311,6 @@ }, "default-require-extensions": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, "requires": { "strip-bom": "^4.0.0" @@ -3784,14 +3318,10 @@ }, "diff": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "dir-compare": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.0.0.tgz", - "integrity": "sha512-wC7thVKL3V656tO61rbEDE4LTeeYrUC2pAUL00AaXYghBhjjVNRyBlpH6POzb44ZuK23OSrqF6TbSC/QYeqfAg==", "dev": true, "requires": { "minimatch": "^3.0.4", @@ -3800,52 +3330,34 @@ }, "electron-to-chromium": { "version": "1.4.111", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.111.tgz", - "integrity": "sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==", "dev": true }, "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "version": "8.0.0" }, "es6-error": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "version": "3.1.1" }, "escape-latex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", - "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" + "version": "1.2.0" }, "escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "version": "4.0.1" }, "estree-walker": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -3853,8 +3365,6 @@ }, "find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -3864,8 +3374,6 @@ }, "find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { "locate-path": "^6.0.0", @@ -3874,14 +3382,10 @@ }, "flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true }, "foreground-child": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -3889,20 +3393,14 @@ } }, "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" + "version": "4.2.0" }, "fromentries": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true }, "fs-extra": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3911,50 +3409,29 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, "function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "version": "2.0.5" }, "get-func-name": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, "get-package-type": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, "glob": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3967,8 +3444,6 @@ }, "glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -3976,30 +3451,20 @@ }, "globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "version": "4.2.10" }, "graham_scan": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", - "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" + "version": "1.0.4" }, "growl": { "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, "has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -4007,14 +3472,10 @@ }, "has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "hasha": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, "requires": { "is-stream": "^2.0.0", @@ -4023,37 +3484,25 @@ }, "he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, "html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + "version": "3.0.6" }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -4061,14 +3510,10 @@ } }, "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "version": "2.0.4" }, "is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { "binary-extensions": "^2.0.0" @@ -4076,8 +3521,6 @@ }, "is-core-module": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, "requires": { "has": "^1.0.3" @@ -4085,19 +3528,13 @@ }, "is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "version": "3.0.0" }, "is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -4105,20 +3542,14 @@ }, "is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, "is-reference": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { "@types/estree": "*" @@ -4126,49 +3557,33 @@ }, "is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "version": "1.0.0" }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "istanbul-lib-coverage": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-hook": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "requires": { "append-transform": "^2.0.0" @@ -4176,8 +3591,6 @@ }, "istanbul-lib-instrument": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { "@babel/core": "^7.7.5", @@ -4188,8 +3601,6 @@ }, "istanbul-lib-processinfo": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", "dev": true, "requires": { "archy": "^1.0.0", @@ -4203,8 +3614,6 @@ }, "istanbul-lib-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", @@ -4214,8 +3623,6 @@ "dependencies": { "supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -4225,8 +3632,6 @@ }, "istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -4236,16 +3641,12 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "istanbul-reports": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -4253,20 +3654,14 @@ } }, "javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" + "version": "0.7.1" }, "js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4274,19 +3669,13 @@ }, "jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "version": "2.2.1" }, "jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" @@ -4294,8 +3683,6 @@ }, "jszip": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "requires": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -4304,9 +3691,7 @@ } }, "kdbush": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", - "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" + "version": "2.0.1" }, "kle-serial": { "version": "git+ssh://git@github.com/ergogen/kle-serial.git#61f29f317d87bbfed0b0b7e646e1b91d4384ac02", @@ -4317,16 +3702,12 @@ }, "lie": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "requires": { "immediate": "~3.0.5" } }, "locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { "p-locate": "^5.0.0" @@ -4334,14 +3715,10 @@ }, "lodash.flattendeep": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, "log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -4350,8 +3727,6 @@ }, "loupe": { "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", "dev": true, "requires": { "get-func-name": "^2.0.0" @@ -4359,8 +3734,6 @@ }, "magic-string": { "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "requires": { "sourcemap-codec": "^1.4.8" @@ -4368,8 +3741,6 @@ }, "make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -4392,8 +3763,6 @@ }, "mathjs": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.4.3.tgz", - "integrity": "sha512-C50lWorCOplBec9Ik5fzhHuOx4G4+mtdz3r1G2I1/r8yj+CpYFXLXNqTdg59oKmIF1tKcIzpxlC4s2dGL7f3pg==", "requires": { "@babel/runtime": "^7.17.8", "complex.js": "^2.1.0", @@ -4408,8 +3777,6 @@ }, "minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4417,8 +3784,6 @@ }, "mocha": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", @@ -4449,14 +3814,10 @@ "dependencies": { "argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -4464,8 +3825,6 @@ }, "minimatch": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4473,8 +3832,6 @@ }, "yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -4490,20 +3847,14 @@ }, "ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "nanoid": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, "node-preload": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, "requires": { "process-on-spawn": "^1.0.0" @@ -4511,20 +3862,14 @@ }, "node-releases": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "dev": true }, "normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, "nyc": { "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, "requires": { "@istanbuljs/load-nyc-config": "^1.0.0", @@ -4558,8 +3903,6 @@ "dependencies": { "cliui": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -4569,8 +3912,6 @@ }, "find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -4579,8 +3920,6 @@ }, "locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" @@ -4588,8 +3927,6 @@ }, "p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -4597,8 +3934,6 @@ }, "p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -4606,8 +3941,6 @@ }, "wrap-ansi": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -4617,14 +3950,10 @@ }, "y18n": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yargs": { "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { "cliui": "^6.0.0", @@ -4642,8 +3971,6 @@ }, "yargs-parser": { "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -4654,8 +3981,6 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -4663,8 +3988,6 @@ }, "p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { "yocto-queue": "^0.1.0" @@ -4672,8 +3995,6 @@ }, "p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { "p-limit": "^3.0.2" @@ -4681,8 +4002,6 @@ }, "p-map": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "requires": { "aggregate-error": "^3.0.0" @@ -4690,14 +4009,10 @@ }, "p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "package-hash": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, "requires": { "graceful-fs": "^4.1.15", @@ -4707,56 +4022,38 @@ } }, "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "version": "1.0.11" }, "path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "pathval": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, "picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" @@ -4764,8 +4061,6 @@ "dependencies": { "find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -4774,8 +4069,6 @@ }, "locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" @@ -4783,8 +4076,6 @@ }, "p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -4792,8 +4083,6 @@ }, "p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -4802,14 +4091,10 @@ } }, "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "version": "2.0.1" }, "process-on-spawn": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, "requires": { "fromentries": "^1.2.0" @@ -4817,8 +4102,6 @@ }, "randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -4826,8 +4109,6 @@ }, "readable-stream": { "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -4840,42 +4121,30 @@ }, "readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { "picomatch": "^2.2.1" } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.13.9" }, "release-zalgo": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, "requires": { "es6-error": "^4.0.1" } }, "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "version": "2.1.1" }, "require-main-filename": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { "is-core-module": "^2.8.1", @@ -4885,14 +4154,10 @@ }, "resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -4900,33 +4165,23 @@ }, "rollup": { "version": "2.70.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", - "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", "dev": true, "requires": { "fsevents": "~2.3.2" } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.1.2" }, "seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + "version": "3.0.5" }, "semver": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "serialize-javascript": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -4934,19 +4189,13 @@ }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "version": "1.0.5" }, "shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { "shebang-regex": "^3.0.0" @@ -4954,32 +4203,22 @@ }, "shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "sourcemap-codec": { "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, "spawn-wrap": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, "requires": { "foreground-child": "^2.0.0", @@ -4991,22 +4230,16 @@ } }, "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "version": "1.0.3" }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" } }, "string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5015,28 +4248,20 @@ }, "strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" } }, "strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, "strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -5044,14 +4269,10 @@ }, "supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, "test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", @@ -5060,20 +4281,14 @@ } }, "tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + "version": "2.1.0" }, "to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, "to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" @@ -5081,50 +4296,34 @@ }, "type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-fest": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "typed-function": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.1.0.tgz", - "integrity": "sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==" + "version": "2.1.0" }, "typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { "is-typedarray": "^1.0.0" } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "version": "2.0.0" }, "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "version": "1.0.2" }, "uuid": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -5132,20 +4331,14 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "workerpool": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", "dev": true }, "wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5154,14 +4347,10 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -5171,14 +4360,10 @@ } }, "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "version": "5.0.8" }, "yargs": { "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -5190,22 +4375,16 @@ }, "dependencies": { "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" + "version": "21.0.1" } } }, "yargs-parser": { "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true }, "yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "requires": { "camelcase": "^6.0.0", @@ -5216,22 +4395,16 @@ "dependencies": { "camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true } } }, "yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index dfcbca5..8c71779 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "4.0.0-develop", + "version": "4.0.0", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", From 3746900490e1421401ec5195b3ecc9f8afe1535e Mon Sep 17 00:00:00 2001 From: Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> Date: Mon, 23 Jan 2023 08:32:22 +0000 Subject: [PATCH 068/120] Bugfix for `expand_shorthand` (#79) --- src/outlines.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/outlines.js b/src/outlines.js index c1e675e..f4e7dce 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -140,7 +140,7 @@ const expand_shorthand = (config, units) => { if (a.type(config.expand)(units) == 'string') { const prefix = config.expand.slice(0, -1) const suffix = config.expand.slice(-1) - let expand = suffix + let expand = prefix let joints = 0 if (suffix == ')') ; // noop From e0eb43566f42a60dba39fb9b3e18d005ecab088b Mon Sep 17 00:00:00 2001 From: Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> Date: Mon, 23 Jan 2023 09:02:08 +0000 Subject: [PATCH 069/120] Expand test coverage (#77) * ignore line endings in cli tests * ignore line endings in integration tests * expand code coverage for `choc` footprint * expand code coverage for `chocmini` footprint * expand code coverage for `mx` footprint * expand code coverage for `pad` footprint * expand code coverage for rest of footprints * expand code coverage for `anchor.js` * expand code coverage for `units.js` * expand code coverage for `points.js` * expand code coverage for `filter.js` * expand code coverage for `outlines.js` * expand code coverage for `pcbs.js` * expand code coverage for `ergogen.js` * expand code coverage for `kle.js` * more code coverage for `outlines.js` * expand code coverage for `cases.js` --- src/anchor.js | 5 +- test/cases/operations.yaml | 36 ++ ...operations___cases_combination_jscad.jscad | 205 +++++++ test/fixtures/minimal_kle.json | 15 + test/footprints/choc.yaml | 12 +- test/footprints/choc___pcbs_pcb.kicad_pcb | 52 ++ test/footprints/chocmini.yaml | 9 + test/footprints/chocmini___pcbs_pcb.kicad_pcb | 61 +++ test/footprints/mx.yaml | 12 +- test/footprints/mx___pcbs_pcb.kicad_pcb | 52 ++ test/footprints/pad.yaml | 14 + test/footprints/pad___pcbs_pcb.kicad_pcb | 38 ++ test/footprints/rest.yaml | 20 +- test/footprints/rest___pcbs_pcb.kicad_pcb | 98 ++++ test/helpers/mock_footprints.js | 5 +- test/index.js | 17 +- test/outlines/binding.yaml | 18 + .../outlines/binding___outlines_bound_dxf.dxf | 338 ++++++++++++ test/outlines/outlines.yaml | 15 +- .../outlines___outlines_combination_dxf.dxf | 514 ++++++++++++++++++ .../outlines___outlines_expand_dxf.dxf | 410 ++++++++++++++ test/outlines/rectangles.yaml | 1 + .../rectangles___outlines_outline_dxf.dxf | 70 ++- test/pcbs/mock_footprints.yaml | 9 +- .../mock_footprints___pcbs_main.kicad_pcb | 19 +- test/pcbs/outlines.yaml | 34 ++ test/pcbs/outlines___pcbs_main.kicad_pcb | 132 +++++ test/points/mirrors.yaml | 15 + test/points/mirrors___demo_dxf.dxf | 338 ++++++++++++ test/points/rotations.yaml | 16 + test/points/rotations___demo_dxf.dxf | 242 +++++++++ test/unit/anchor.js | 15 + test/unit/filter.js | 15 +- test/unit/interface.js | 6 +- test/unit/units.js | 21 +- 35 files changed, 2842 insertions(+), 37 deletions(-) create mode 100644 test/cases/operations.yaml create mode 100644 test/cases/operations___cases_combination_jscad.jscad create mode 100644 test/fixtures/minimal_kle.json create mode 100644 test/outlines/binding.yaml create mode 100644 test/outlines/binding___outlines_bound_dxf.dxf create mode 100644 test/outlines/outlines___outlines_combination_dxf.dxf create mode 100644 test/outlines/outlines___outlines_expand_dxf.dxf create mode 100644 test/pcbs/outlines.yaml create mode 100644 test/pcbs/outlines___pcbs_main.kicad_pcb create mode 100644 test/points/mirrors.yaml create mode 100644 test/points/mirrors___demo_dxf.dxf create mode 100644 test/points/rotations.yaml create mode 100644 test/points/rotations___demo_dxf.dxf diff --git a/src/anchor.js b/src/anchor.js index e00c612..169ff3c 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -17,8 +17,11 @@ const aggregator_common = ['parts', 'method'] const aggregators = { average: (config, name, parts) => { a.unexpected(config, name, aggregator_common) - let x = 0, y = 0, r = 0 const len = parts.length + if (len == 0) { + return new Point() + } + let x = 0, y = 0, r = 0 for (const part of parts) { x += part.x y += part.y diff --git a/test/cases/operations.yaml b/test/cases/operations.yaml new file mode 100644 index 0000000..47984f1 --- /dev/null +++ b/test/cases/operations.yaml @@ -0,0 +1,36 @@ +points.zones.matrix: {} +outlines: + _square: + - what: rectangle + where: true + size: [8, 8] + _circle: + - what: circle + where: true + radius: 3 +cases: + _cube: + - name: _square + extrude: 8 + _cylinder_one: + - name: _circle + extrude: 8 + _subtract: + target: + name: _cube + what: case + tool: + name: _cylinder_one + what: case + operation: subtract + _cylinder_two: + - name: _circle + extrude: 8 + shift: [0,4,4] + rotate: [90,0,0] + _flat_square: + - "_square" + combination: + - "_subtract" + - "~_cylinder_two" + - "+_flat_square" diff --git a/test/cases/operations___cases_combination_jscad.jscad b/test/cases/operations___cases_combination_jscad.jscad new file mode 100644 index 0000000..2606dde --- /dev/null +++ b/test/cases/operations___cases_combination_jscad.jscad @@ -0,0 +1,205 @@ +function _square_outline_fn(){ + return new CSG.Path2D([[-4,-4],[4,-4]]).appendPoint([4,4]).appendPoint([-4,4]).appendPoint([-4,-4]).close().innerToCAG() +.extrude({ offset: [0, 0, 8] }); +} + + +function _circle_outline_fn(){ + return CAG.circle({"center":[0,0],"radius":3}) +.extrude({ offset: [0, 0, 8] }); +} + + + + + function _subtract_case_fn() { + + + // creating part target of case _subtract + let _subtract__part_target = _cube_case_fn(); + + // make sure that rotations are relative + let _subtract__part_target_bounds = _subtract__part_target.getBounds(); + let _subtract__part_target_x = _subtract__part_target_bounds[0].x + (_subtract__part_target_bounds[1].x - _subtract__part_target_bounds[0].x) / 2 + let _subtract__part_target_y = _subtract__part_target_bounds[0].y + (_subtract__part_target_bounds[1].y - _subtract__part_target_bounds[0].y) / 2 + _subtract__part_target = translate([-_subtract__part_target_x, -_subtract__part_target_y, 0], _subtract__part_target); + _subtract__part_target = rotate([0,0,0], _subtract__part_target); + _subtract__part_target = translate([_subtract__part_target_x, _subtract__part_target_y, 0], _subtract__part_target); + + _subtract__part_target = translate([0,0,0], _subtract__part_target); + let result = _subtract__part_target; + + + + // creating part tool of case _subtract + let _subtract__part_tool = _cylinder_one_case_fn(); + + // make sure that rotations are relative + let _subtract__part_tool_bounds = _subtract__part_tool.getBounds(); + let _subtract__part_tool_x = _subtract__part_tool_bounds[0].x + (_subtract__part_tool_bounds[1].x - _subtract__part_tool_bounds[0].x) / 2 + let _subtract__part_tool_y = _subtract__part_tool_bounds[0].y + (_subtract__part_tool_bounds[1].y - _subtract__part_tool_bounds[0].y) / 2 + _subtract__part_tool = translate([-_subtract__part_tool_x, -_subtract__part_tool_y, 0], _subtract__part_tool); + _subtract__part_tool = rotate([0,0,0], _subtract__part_tool); + _subtract__part_tool = translate([_subtract__part_tool_x, _subtract__part_tool_y, 0], _subtract__part_tool); + + _subtract__part_tool = translate([0,0,0], _subtract__part_tool); + result = result.subtract(_subtract__part_tool); + + + return result; + } + + + + function _cube_case_fn() { + + + // creating part 0 of case _cube + let _cube__part_0 = _square_outline_fn(); + + // make sure that rotations are relative + let _cube__part_0_bounds = _cube__part_0.getBounds(); + let _cube__part_0_x = _cube__part_0_bounds[0].x + (_cube__part_0_bounds[1].x - _cube__part_0_bounds[0].x) / 2 + let _cube__part_0_y = _cube__part_0_bounds[0].y + (_cube__part_0_bounds[1].y - _cube__part_0_bounds[0].y) / 2 + _cube__part_0 = translate([-_cube__part_0_x, -_cube__part_0_y, 0], _cube__part_0); + _cube__part_0 = rotate([0,0,0], _cube__part_0); + _cube__part_0 = translate([_cube__part_0_x, _cube__part_0_y, 0], _cube__part_0); + + _cube__part_0 = translate([0,0,0], _cube__part_0); + let result = _cube__part_0; + + + return result; + } + + + + function _cylinder_one_case_fn() { + + + // creating part 0 of case _cylinder_one + let _cylinder_one__part_0 = _circle_outline_fn(); + + // make sure that rotations are relative + let _cylinder_one__part_0_bounds = _cylinder_one__part_0.getBounds(); + let _cylinder_one__part_0_x = _cylinder_one__part_0_bounds[0].x + (_cylinder_one__part_0_bounds[1].x - _cylinder_one__part_0_bounds[0].x) / 2 + let _cylinder_one__part_0_y = _cylinder_one__part_0_bounds[0].y + (_cylinder_one__part_0_bounds[1].y - _cylinder_one__part_0_bounds[0].y) / 2 + _cylinder_one__part_0 = translate([-_cylinder_one__part_0_x, -_cylinder_one__part_0_y, 0], _cylinder_one__part_0); + _cylinder_one__part_0 = rotate([0,0,0], _cylinder_one__part_0); + _cylinder_one__part_0 = translate([_cylinder_one__part_0_x, _cylinder_one__part_0_y, 0], _cylinder_one__part_0); + + _cylinder_one__part_0 = translate([0,0,0], _cylinder_one__part_0); + let result = _cylinder_one__part_0; + + + return result; + } + + + + function _cylinder_two_case_fn() { + + + // creating part 0 of case _cylinder_two + let _cylinder_two__part_0 = _circle_outline_fn(); + + // make sure that rotations are relative + let _cylinder_two__part_0_bounds = _cylinder_two__part_0.getBounds(); + let _cylinder_two__part_0_x = _cylinder_two__part_0_bounds[0].x + (_cylinder_two__part_0_bounds[1].x - _cylinder_two__part_0_bounds[0].x) / 2 + let _cylinder_two__part_0_y = _cylinder_two__part_0_bounds[0].y + (_cylinder_two__part_0_bounds[1].y - _cylinder_two__part_0_bounds[0].y) / 2 + _cylinder_two__part_0 = translate([-_cylinder_two__part_0_x, -_cylinder_two__part_0_y, 0], _cylinder_two__part_0); + _cylinder_two__part_0 = rotate([90,0,0], _cylinder_two__part_0); + _cylinder_two__part_0 = translate([_cylinder_two__part_0_x, _cylinder_two__part_0_y, 0], _cylinder_two__part_0); + + _cylinder_two__part_0 = translate([0,4,4], _cylinder_two__part_0); + let result = _cylinder_two__part_0; + + + return result; + } + + + + function _flat_square_case_fn() { + + + // creating part 0 of case _flat_square + let _flat_square__part_0 = _square_outline_fn(); + + // make sure that rotations are relative + let _flat_square__part_0_bounds = _flat_square__part_0.getBounds(); + let _flat_square__part_0_x = _flat_square__part_0_bounds[0].x + (_flat_square__part_0_bounds[1].x - _flat_square__part_0_bounds[0].x) / 2 + let _flat_square__part_0_y = _flat_square__part_0_bounds[0].y + (_flat_square__part_0_bounds[1].y - _flat_square__part_0_bounds[0].y) / 2 + _flat_square__part_0 = translate([-_flat_square__part_0_x, -_flat_square__part_0_y, 0], _flat_square__part_0); + _flat_square__part_0 = rotate([0,0,0], _flat_square__part_0); + _flat_square__part_0 = translate([_flat_square__part_0_x, _flat_square__part_0_y, 0], _flat_square__part_0); + + _flat_square__part_0 = translate([0,0,0], _flat_square__part_0); + let result = _flat_square__part_0; + + + return result; + } + + + + function combination_case_fn() { + + + // creating part 0 of case combination + let combination__part_0 = _subtract_case_fn(); + + // make sure that rotations are relative + let combination__part_0_bounds = combination__part_0.getBounds(); + let combination__part_0_x = combination__part_0_bounds[0].x + (combination__part_0_bounds[1].x - combination__part_0_bounds[0].x) / 2 + let combination__part_0_y = combination__part_0_bounds[0].y + (combination__part_0_bounds[1].y - combination__part_0_bounds[0].y) / 2 + combination__part_0 = translate([-combination__part_0_x, -combination__part_0_y, 0], combination__part_0); + combination__part_0 = rotate([0,0,0], combination__part_0); + combination__part_0 = translate([combination__part_0_x, combination__part_0_y, 0], combination__part_0); + + combination__part_0 = translate([0,0,0], combination__part_0); + let result = combination__part_0; + + + + // creating part 1 of case combination + let combination__part_1 = _cylinder_two_case_fn(); + + // make sure that rotations are relative + let combination__part_1_bounds = combination__part_1.getBounds(); + let combination__part_1_x = combination__part_1_bounds[0].x + (combination__part_1_bounds[1].x - combination__part_1_bounds[0].x) / 2 + let combination__part_1_y = combination__part_1_bounds[0].y + (combination__part_1_bounds[1].y - combination__part_1_bounds[0].y) / 2 + combination__part_1 = translate([-combination__part_1_x, -combination__part_1_y, 0], combination__part_1); + combination__part_1 = rotate([0,0,0], combination__part_1); + combination__part_1 = translate([combination__part_1_x, combination__part_1_y, 0], combination__part_1); + + combination__part_1 = translate([0,0,0], combination__part_1); + result = result.intersect(combination__part_1); + + + + // creating part 2 of case combination + let combination__part_2 = _flat_square_case_fn(); + + // make sure that rotations are relative + let combination__part_2_bounds = combination__part_2.getBounds(); + let combination__part_2_x = combination__part_2_bounds[0].x + (combination__part_2_bounds[1].x - combination__part_2_bounds[0].x) / 2 + let combination__part_2_y = combination__part_2_bounds[0].y + (combination__part_2_bounds[1].y - combination__part_2_bounds[0].y) / 2 + combination__part_2 = translate([-combination__part_2_x, -combination__part_2_y, 0], combination__part_2); + combination__part_2 = rotate([0,0,0], combination__part_2); + combination__part_2 = translate([combination__part_2_x, combination__part_2_y, 0], combination__part_2); + + combination__part_2 = translate([0,0,0], combination__part_2); + result = result.union(combination__part_2); + + + return result; + } + + + + function main() { + return combination_case_fn(); + } + + \ No newline at end of file diff --git a/test/fixtures/minimal_kle.json b/test/fixtures/minimal_kle.json new file mode 100644 index 0000000..0e60b85 --- /dev/null +++ b/test/fixtures/minimal_kle.json @@ -0,0 +1,15 @@ +[ + [ + "0_0", + "0_1" + ], + [ + "1_0", + "1_1" + ], + [ + "", + "" + ] +] + diff --git a/test/footprints/choc.yaml b/test/footprints/choc.yaml index 2c3e39e..016eeae 100644 --- a/test/footprints/choc.yaml +++ b/test/footprints/choc.yaml @@ -38,4 +38,14 @@ pcbs.pcb.footprints: to: to reverse: true hotswap: true - adjust.shift: [200, 0] \ No newline at end of file + adjust.shift: [200, 0] + + # all of keycaps, reverse and hotswap + - what: choc + params: + from: from + to: to + keycaps: true + reverse: true + hotswap: true + adjust.shift: [250, 0] diff --git a/test/footprints/choc___pcbs_pcb.kicad_pcb b/test/footprints/choc___pcbs_pcb.kicad_pcb index 3fabc5e..43736fd 100644 --- a/test/footprints/choc___pcbs_pcb.kicad_pcb +++ b/test/footprints/choc___pcbs_pcb.kicad_pcb @@ -284,6 +284,58 @@ + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 2 smd rect (at 8.275 -3.75 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + + + + (pad "" np_thru_hole circle (at -5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at 3.275 -5.95 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 1 "from")) + (pad 2 smd rect (at -8.275 -3.75 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 2 "to")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 250 0 0) + + + (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) diff --git a/test/footprints/chocmini.yaml b/test/footprints/chocmini.yaml index 2cadb43..5312a0d 100644 --- a/test/footprints/chocmini.yaml +++ b/test/footprints/chocmini.yaml @@ -22,3 +22,12 @@ pcbs.pcb.footprints: to: to reverse: true adjust.shift: [100, 0] + + # reverse with keycap visualization + - what: chocmini + params: + from: from + to: to + keycaps: true + reverse: true + adjust.shift: [150, 0] diff --git a/test/footprints/chocmini___pcbs_pcb.kicad_pcb b/test/footprints/chocmini___pcbs_pcb.kicad_pcb index 650ceb0..784556a 100644 --- a/test/footprints/chocmini___pcbs_pcb.kicad_pcb +++ b/test/footprints/chocmini___pcbs_pcb.kicad_pcb @@ -267,6 +267,67 @@ ) + + + (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) + (at 150 0 0) + + + (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start -7.25 -6.75) (end -6.25 -6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7.25 -6.75) (end -7.25 -5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start -7.25 6.75) (end -6.25 6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7.25 6.75) (end -7.25 5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start 7.25 -6.75) (end 6.25 -6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7.25 -6.75) (end 7.25 -5.75) (layer Dwgs.User) (width 0.15)) + + (fp_line (start 7.25 6.75) (end 6.25 6.75) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7.25 6.75) (end 7.25 5.75) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start 2.8 -5.35) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -2.8 -3.2) (end 2.8 -3.2) (layer Dwgs.User) (width 0.15)) + (fp_line (start 2.8 -3.2) (end 2.8 -5.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -2.8 -3.2) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start 2.25 2.6) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 2.6) (end -5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start 2.25 3.6) (end 2.25 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 3.6) (end 2.25 3.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -2.25 2.6) (end -2.25 3.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -5.8 2.6) (end -5.8 -2.95) (layer Edge.Cuts) (width 0.12)) + (fp_line (start 5.8 -2.95) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) + (fp_line (start -5.8 -2.95) (end 5.8 -2.95) (layer Edge.Cuts) (width 0.12)) + + + (pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) + (pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad 1 thru_hole circle (at -4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) + (pad 2 thru_hole circle (at 2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) + + + + (pad 1 thru_hole circle (at 4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) + (pad 2 thru_hole circle (at -2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) + ) + + ) diff --git a/test/footprints/mx.yaml b/test/footprints/mx.yaml index ee4a5dc..d1f200b 100644 --- a/test/footprints/mx.yaml +++ b/test/footprints/mx.yaml @@ -38,4 +38,14 @@ pcbs.pcb.footprints: to: to reverse: true hotswap: true - adjust.shift: [200, 0] \ No newline at end of file + adjust.shift: [200, 0] + + # all of keycaps, reverse and hotswap + - what: mx + params: + from: from + to: to + keycaps: true + reverse: true + hotswap: true + adjust.shift: [250, 0] diff --git a/test/footprints/mx___pcbs_pcb.kicad_pcb b/test/footprints/mx___pcbs_pcb.kicad_pcb index dbb3d65..01d7823 100644 --- a/test/footprints/mx___pcbs_pcb.kicad_pcb +++ b/test/footprints/mx___pcbs_pcb.kicad_pcb @@ -284,6 +284,58 @@ + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -7.085 -2.54 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 2 smd rect (at 5.842 -5.08 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + + + + (pad "" np_thru_hole circle (at -2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at 7.085 -2.54 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 1 "from")) + (pad 2 smd rect (at -5.842 -5.08 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 2 "to")) + ) + + + + (module MX (layer F.Cu) (tedit 5DD4F656) + (at 250 0 0) + + + (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) diff --git a/test/footprints/pad.yaml b/test/footprints/pad.yaml index 3d05355..43ed2d9 100644 --- a/test/footprints/pad.yaml +++ b/test/footprints/pad.yaml @@ -25,3 +25,17 @@ pcbs.pcb.footprints: align: down mirrored: true adjust.shift: [50, 50] + + - what: pad + params: + net: net + align: right + mirrored: true + adjust.shift: [100, 0] + + - what: pad + params: + net: net + align: left + mirrored: true + adjust.shift: [100, 50] diff --git a/test/footprints/pad___pcbs_pcb.kicad_pcb b/test/footprints/pad___pcbs_pcb.kicad_pcb index d34827d..997b2f6 100644 --- a/test/footprints/pad___pcbs_pcb.kicad_pcb +++ b/test/footprints/pad___pcbs_pcb.kicad_pcb @@ -181,6 +181,44 @@ ) + + + (module SMDPad (layer F.Cu) (tedit 5B24D78E) + + (at 100 0 0) + + + (fp_text reference "PAD5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) + + + ) + + + + + (module SMDPad (layer F.Cu) (tedit 5B24D78E) + + (at 100 -50 0) + + + (fp_text reference "PAD6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) + + (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) + + + ) + + ) diff --git a/test/footprints/rest.yaml b/test/footprints/rest.yaml index 769682a..7e24468 100644 --- a/test/footprints/rest.yaml +++ b/test/footprints/rest.yaml @@ -64,4 +64,22 @@ pcbs.pcb.footprints: - what: via params: net: net - adjust.shift: [0, 150] \ No newline at end of file + adjust.shift: [0, 150] + + - what: scrollwheel + params: + from: from + to: to + A: A + B: B + C: C + D: D + reverse: true + adjust.shift: [50, 150] + + - what: slider + params: + from: from + to: to + side: B + adjust.shift: [100, 150] diff --git a/test/footprints/rest___pcbs_pcb.kicad_pcb b/test/footprints/rest___pcbs_pcb.kicad_pcb index db1fbf7..506f4fd 100644 --- a/test/footprints/rest___pcbs_pcb.kicad_pcb +++ b/test/footprints/rest___pcbs_pcb.kicad_pcb @@ -424,6 +424,104 @@ (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) (net 15 "net")) ) + + + (module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C) + (at 50 -150 0) + (fp_text reference REF** (at 0 0 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + + + (fp_line (start -8.4 -6.4) (end 8.4 -6.4) (layer Dwgs.User) (width 0.12)) + (fp_line (start 8.4 -6.4) (end 8.4 7.4) (layer Dwgs.User) (width 0.12)) + (fp_line (start 8.4 7.4) (end -8.4 7.4) (layer Dwgs.User) (width 0.12)) + (fp_line (start -8.4 7.4) (end -8.4 -6.4) (layer Dwgs.User) (width 0.12)) + + + + (fp_line (start 9.8 7.3) (end 9.8 -6.3) (layer Edge.Cuts) (width 0.15)) + (fp_line (start 7.4 -6.3) (end 7.4 7.3) (layer Edge.Cuts) (width 0.15)) + (fp_line (start 9.5 -6.6) (end 7.7 -6.6) (layer Edge.Cuts) (width 0.15)) + (fp_line (start 7.7 7.6) (end 9.5 7.6) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start 7.7 7.3) (end 7.4 7.3) (angle -90) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start 9.5 7.3) (end 9.5 7.6) (angle -90) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start 7.7 -6.3) (end 7.7 -6.6) (angle -90) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start 9.5 -6.3) (end 9.8 -6.3) (angle -90) (layer Edge.Cuts) (width 0.15)) + + + (pad S1 thru_hole circle (at -6.85 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 1 "from")) + (pad S2 thru_hole circle (at -5 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 2 "to")) + (pad A thru_hole circle (at -5.625 -3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 11 "A")) + (pad B thru_hole circle (at -5.625 -1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 12 "B")) + (pad C thru_hole circle (at -5.625 1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 13 "C")) + (pad D thru_hole circle (at -5.625 3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 14 "D")) + + + (pad "" np_thru_hole circle (at -5.625 6.3 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + + + + (fp_line (start -9.8 7.3) (end -9.8 -6.3) (layer Edge.Cuts) (width 0.15)) + (fp_line (start -7.4 -6.3) (end -7.4 7.3) (layer Edge.Cuts) (width 0.15)) + (fp_line (start -9.5 -6.6) (end -7.7 -6.6) (layer Edge.Cuts) (width 0.15)) + (fp_line (start -7.7 7.6) (end -9.5 7.6) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start -7.7 7.3) (end -7.4 7.3) (angle 90) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start -9.5 7.3) (end -9.5 7.6) (angle 90) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start -7.7 -6.3) (end -7.7 -6.6) (angle 90) (layer Edge.Cuts) (width 0.15)) + (fp_arc (start -9.5 -6.3) (end -9.8 -6.3) (angle 90) (layer Edge.Cuts) (width 0.15)) + + + (pad S1 thru_hole circle (at 6.85 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 1 "from")) + (pad S2 thru_hole circle (at 5 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 2 "to")) + (pad A thru_hole circle (at 5.625 -3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 11 "A")) + (pad B thru_hole circle (at 5.625 -1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 12 "B")) + (pad C thru_hole circle (at 5.625 1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 13 "C")) + (pad D thru_hole circle (at 5.625 3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 14 "D")) + + + (pad "" np_thru_hole circle (at 5.625 6.3 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + ) + + + + (module E73:SPDT_C128955 (layer F.Cu) (tstamp 5BF2CC3C) + + (at 100 -150 0) + + + (fp_text reference "T2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer B.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer B.SilkS) (width 0.15)) + (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer B.SilkS) (width 0.15)) + (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer B.SilkS) (width 0.15)) + (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer B.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer B.SilkS) (width 0.15)) + + + (fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15)) + (fp_line (start 1.95 -3.85) (end 1.95 -1.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -1.95 -1.35) (end -1.95 -3.85) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -2.25 2.075 0) (size 0.9 1.25) (layers B.Cu B.Paste B.Mask) (net 1 "from")) + (pad 2 smd rect (at 0.75 2.075 0) (size 0.9 1.25) (layers B.Cu B.Paste B.Mask) (net 2 "to")) + (pad 3 smd rect (at 2.25 2.075 0) (size 0.9 1.25) (layers B.Cu B.Paste B.Mask)) + + + (pad "" smd rect (at 3.7 -1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) + (pad "" smd rect (at 3.7 1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) + (pad "" smd rect (at -3.7 1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) + (pad "" smd rect (at -3.7 -1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) + ) + + ) diff --git a/test/helpers/mock_footprints.js b/test/helpers/mock_footprints.js index 749d26c..788628d 100644 --- a/test/helpers/mock_footprints.js +++ b/test/helpers/mock_footprints.js @@ -3,6 +3,7 @@ exports.inject = (ergogen) => { params: { designator: 'T', side: 'F', + width: 0.25, P1: {type: 'net', value: 'P1'} }, body: p => { @@ -20,7 +21,7 @@ exports.inject = (ergogen) => { ) - (segment (start ${p.sxy(0, 0)}) (end ${p.sxy(5, 5)}) (width 0.25) (layer ${p.side}.Cu) (net ${p.P1.index})) + (segment (start ${p.sxy(0, 0)}) (end ${p.sxy(5, 5)}) (width ${p.width}) (layer ${p.side}.Cu) (net ${p.P1.index})) ` } @@ -106,7 +107,7 @@ exports.inject = (ergogen) => { } }) - ergogen.inject('footprint', 'references_test', { + ergogen.inject('references_test', { params: {}, body: p => { return `references ${p.ref_hide ? 'hidden' : 'shown'}` diff --git a/test/index.js b/test/index.js index e1fc995..5d60974 100644 --- a/test/index.js +++ b/test/index.js @@ -56,7 +56,13 @@ const test = function(input_path) { fs.writeJSONSync(expected_path, output_part, {spaces: 4}) } } else { - output_part.should.deep.equal(expected) + if (a.type(output_part)() == 'string') { + const parse_out = output_part.replace(/(?:\r\n|\r|\n)/g,"\n") + const parse_exp = expected.replace(/(?:\r\n|\r|\n)/g,"\n") + parse_out.should.deep.equal(parse_exp) + } else { + output_part.should.deep.equal(expected) + } } } }) @@ -133,14 +139,19 @@ for (let w of cli_what) { ref_path = path.resolve(path.join(t, read(ref_path).trim())) } const comp_res = dircompare.compareSync(output_path, ref_path, { - compareContent: true + compareContent: true, + compareFileSync: dircompare.fileCompareHandlers.lineBasedFileCompare.compareSync, + compareFileAsync: dircompare.fileCompareHandlers.lineBasedFileCompare.compareAsync, + ignoreLineEnding: true }) if (dump) { fs.moveSync(output_path, ref_path, {overwrite: true}) } else { fs.removeSync(output_path) } - actual_log.should.equal(ref_log) + const parse_act_log = actual_log.replace(/(?:\r\n|\r|\n)/g,"\n") + const parse_ref_log = ref_log.replace(/(?:\r\n|\r|\n)/g,"\n") + parse_act_log.should.equal(parse_ref_log) comp_res.same.should.be.true // deliberately incorrect execution } else { diff --git a/test/outlines/binding.yaml b/test/outlines/binding.yaml new file mode 100644 index 0000000..6fba506 --- /dev/null +++ b/test/outlines/binding.yaml @@ -0,0 +1,18 @@ +points: + zones: + matrix: + mirror: + ref: matrix_only_first + distance: 30 + columns: + only.rows: + first.bind: 0 + second.bind: [0,10,0,10] + third.bind: [10,0,10,0] + fourth.bind: [u, u/2, u/3, u/4] +outlines: + bound: + - what: rectangle + where: true + size: 20 + bound: true diff --git a/test/outlines/binding___outlines_bound_dxf.dxf b/test/outlines/binding___outlines_bound_dxf.dxf new file mode 100644 index 0000000..433dd5d --- /dev/null +++ b/test/outlines/binding___outlines_bound_dxf.dxf @@ -0,0 +1,338 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-10 +20 +-10 +11 +10 +21 +-10 +0 +LINE +8 +0 +10 +10 +20 +-10 +11 +10 +21 +9 +0 +LINE +8 +0 +10 +-10 +20 +9 +11 +-10 +21 +-10 +0 +LINE +8 +0 +10 +10 +20 +29 +11 +20 +21 +29 +0 +LINE +8 +0 +10 +20 +20 +9 +11 +10 +21 +9 +0 +LINE +8 +0 +10 +-10 +20 +9 +11 +-20 +21 +9 +0 +LINE +8 +0 +10 +-20 +20 +9 +11 +-20 +21 +29 +0 +LINE +8 +0 +10 +-20 +20 +29 +11 +-10 +21 +29 +0 +LINE +8 +0 +10 +10 +20 +29 +11 +10 +21 +40.6666667 +0 +LINE +8 +0 +10 +-10 +20 +29 +11 +-10 +21 +40.6666667 +0 +LINE +8 +0 +10 +-14.75 +20 +86 +11 +44.75 +21 +86 +0 +LINE +8 +0 +10 +10 +20 +40.6666667 +11 +20 +21 +40.6666667 +0 +LINE +8 +0 +10 +-10 +20 +40.6666667 +11 +-14.75 +21 +40.6666667 +0 +LINE +8 +0 +10 +-14.75 +20 +40.6666667 +11 +-14.75 +21 +86 +0 +LINE +8 +0 +10 +20 +20 +-10 +11 +40 +21 +-10 +0 +LINE +8 +0 +10 +40 +20 +-10 +11 +40 +21 +9 +0 +LINE +8 +0 +10 +20 +20 +9 +11 +20 +21 +-10 +0 +LINE +8 +0 +10 +40 +20 +29 +11 +50 +21 +29 +0 +LINE +8 +0 +10 +50 +20 +9 +11 +50 +21 +29 +0 +LINE +8 +0 +10 +50 +20 +9 +11 +40 +21 +9 +0 +LINE +8 +0 +10 +40 +20 +29 +11 +40 +21 +40.6666667 +0 +LINE +8 +0 +10 +20 +20 +29 +11 +20 +21 +40.6666667 +0 +LINE +8 +0 +10 +44.75 +20 +40.6666667 +11 +44.75 +21 +86 +0 +LINE +8 +0 +10 +44.75 +20 +40.6666667 +11 +40 +21 +40.6666667 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/outlines/outlines.yaml b/test/outlines/outlines.yaml index 351fff7..9c58ce3 100644 --- a/test/outlines/outlines.yaml +++ b/test/outlines/outlines.yaml @@ -17,10 +17,15 @@ outlines: size: cy bound: true fillet: - - what: outline - name: base + - name: base fillet: 2 scale: - - what: outline - name: fillet - scale: 0.5 \ No newline at end of file + - name: fillet + scale: 0.5 + combination: + - "base" + - "-scale" + - "~fillet" + expand: + - name: combination + expand: 1 diff --git a/test/outlines/outlines___outlines_combination_dxf.dxf b/test/outlines/outlines___outlines_combination_dxf.dxf new file mode 100644 index 0000000..557f735 --- /dev/null +++ b/test/outlines/outlines___outlines_combination_dxf.dxf @@ -0,0 +1,514 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +8.6 +20 +-6.6 +11 +8.6 +21 +-4.3 +0 +LINE +8 +0 +10 +8.6 +20 +12.8 +11 +8.6 +21 +23.6 +0 +LINE +8 +0 +10 +-6.6 +20 +-8.6 +11 +6.6 +21 +-8.6 +0 +LINE +8 +0 +10 +-8.6 +20 +-6.6 +11 +-8.6 +21 +23.6 +0 +LINE +8 +0 +10 +-6.6 +20 +25.6 +11 +6.6 +21 +25.6 +0 +LINE +8 +0 +10 +27.6 +20 +-6.6 +11 +27.6 +21 +23.6 +0 +LINE +8 +0 +10 +12.4 +20 +-8.6 +11 +25.6 +21 +-8.6 +0 +LINE +8 +0 +10 +10.4 +20 +-6.6 +11 +10.4 +21 +-4.3 +0 +LINE +8 +0 +10 +10.4 +20 +12.8 +11 +10.4 +21 +23.6 +0 +LINE +8 +0 +10 +12.4 +20 +25.6 +11 +25.6 +21 +25.6 +0 +LINE +8 +0 +10 +4.3 +20 +-3.3 +11 +4.3 +21 +11.8 +0 +LINE +8 +0 +10 +-3.3 +20 +-4.3 +11 +3.3 +21 +-4.3 +0 +LINE +8 +0 +10 +-4.3 +20 +-3.3 +11 +-4.3 +21 +11.8 +0 +LINE +8 +0 +10 +-3.3 +20 +12.8 +11 +3.3 +21 +12.8 +0 +LINE +8 +0 +10 +13.8 +20 +-3.3 +11 +13.8 +21 +11.8 +0 +LINE +8 +0 +10 +6.2 +20 +-4.3 +11 +8.6 +21 +-4.3 +0 +LINE +8 +0 +10 +10.4 +20 +-4.3 +11 +12.8 +21 +-4.3 +0 +LINE +8 +0 +10 +5.2 +20 +-3.3 +11 +5.2 +21 +11.8 +0 +LINE +8 +0 +10 +6.2 +20 +12.8 +11 +8.6 +21 +12.8 +0 +LINE +8 +0 +10 +10.4 +20 +12.8 +11 +12.8 +21 +12.8 +0 +ARC +8 +0 +10 +3.3 +20 +11.8 +40 +1 +50 +0 +51 +90 +0 +ARC +8 +0 +10 +-3.3 +20 +11.8 +40 +1 +50 +90 +51 +180 +0 +ARC +8 +0 +10 +-3.3 +20 +-3.3 +40 +1 +50 +180 +51 +270 +0 +ARC +8 +0 +10 +3.3 +20 +-3.3 +40 +1 +50 +270 +51 +0 +0 +ARC +8 +0 +10 +12.8 +20 +11.8 +40 +1 +50 +0 +51 +90 +0 +ARC +8 +0 +10 +6.2 +20 +11.8 +40 +1 +50 +90 +51 +180 +0 +ARC +8 +0 +10 +6.2 +20 +-3.3 +40 +1 +50 +180 +51 +270 +0 +ARC +8 +0 +10 +12.8 +20 +-3.3 +40 +1 +50 +270 +51 +0 +0 +ARC +8 +0 +10 +6.6 +20 +23.6 +40 +2 +50 +0 +51 +90 +0 +ARC +8 +0 +10 +-6.6 +20 +23.6 +40 +2 +50 +90 +51 +180 +0 +ARC +8 +0 +10 +-6.6 +20 +-6.6 +40 +2 +50 +180 +51 +270 +0 +ARC +8 +0 +10 +6.6 +20 +-6.6 +40 +2 +50 +270 +51 +0 +0 +ARC +8 +0 +10 +25.6 +20 +23.6 +40 +2 +50 +0 +51 +90 +0 +ARC +8 +0 +10 +12.4 +20 +23.6 +40 +2 +50 +90 +51 +180 +0 +ARC +8 +0 +10 +12.4 +20 +-6.6 +40 +2 +50 +180 +51 +270 +0 +ARC +8 +0 +10 +25.6 +20 +-6.6 +40 +2 +50 +270 +51 +0 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/outlines/outlines___outlines_expand_dxf.dxf b/test/outlines/outlines___outlines_expand_dxf.dxf new file mode 100644 index 0000000..b129818 --- /dev/null +++ b/test/outlines/outlines___outlines_expand_dxf.dxf @@ -0,0 +1,410 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-6.6 +20 +-9.6 +11 +6.6 +21 +-9.6 +0 +ARC +8 +0 +10 +6.6 +20 +-6.6 +40 +3 +50 +270 +51 +345.164888 +0 +ARC +8 +0 +10 +12.4 +20 +-6.6 +40 +3 +50 +194.835112 +51 +270 +0 +LINE +8 +0 +10 +12.4 +20 +-9.6 +11 +25.6 +21 +-9.6 +0 +ARC +8 +0 +10 +25.6 +20 +-6.6 +40 +3 +50 +270 +51 +360 +0 +LINE +8 +0 +10 +28.6 +20 +-6.6 +11 +28.6 +21 +23.6 +0 +ARC +8 +0 +10 +25.6 +20 +23.6 +40 +3 +50 +0 +51 +90 +0 +LINE +8 +0 +10 +12.4 +20 +26.6 +11 +25.6 +21 +26.6 +0 +ARC +8 +0 +10 +12.4 +20 +23.6 +40 +3 +50 +90 +51 +165.164888 +0 +ARC +8 +0 +10 +6.6 +20 +23.6 +40 +3 +50 +14.835112 +51 +90 +0 +LINE +8 +0 +10 +-6.6 +20 +26.6 +11 +6.6 +21 +26.6 +0 +ARC +8 +0 +10 +-6.6 +20 +23.6 +40 +3 +50 +90 +51 +180 +0 +LINE +8 +0 +10 +-9.6 +20 +-6.6 +11 +-9.6 +21 +23.6 +0 +ARC +8 +0 +10 +-6.6 +20 +-6.6 +40 +3 +50 +180 +51 +270 +0 +LINE +8 +0 +10 +12.8 +20 +-3.3 +11 +12.8 +21 +11.8 +0 +LINE +8 +0 +10 +10.4 +20 +11.8 +11 +12.8 +21 +11.8 +0 +ARC +8 +0 +10 +10.4 +20 +12.8 +40 +1 +50 +205.8419331 +51 +270 +0 +ARC +8 +0 +10 +8.6 +20 +12.8 +40 +1 +50 +270 +51 +334.1580669 +0 +LINE +8 +0 +10 +6.2 +20 +11.8 +11 +8.6 +21 +11.8 +0 +LINE +8 +0 +10 +6.2 +20 +-3.3 +11 +6.2 +21 +11.8 +0 +LINE +8 +0 +10 +6.2 +20 +-3.3 +11 +8.6 +21 +-3.3 +0 +ARC +8 +0 +10 +8.6 +20 +-4.3 +40 +1 +50 +25.8419331 +51 +90 +0 +ARC +8 +0 +10 +10.4 +20 +-4.3 +40 +1 +50 +90 +51 +154.1580669 +0 +LINE +8 +0 +10 +10.4 +20 +-3.3 +11 +12.8 +21 +-3.3 +0 +LINE +8 +0 +10 +3.3 +20 +-3.3 +11 +3.3 +21 +11.8 +0 +LINE +8 +0 +10 +-3.3 +20 +11.8 +11 +3.3 +21 +11.8 +0 +LINE +8 +0 +10 +-3.3 +20 +-3.3 +11 +-3.3 +21 +11.8 +0 +LINE +8 +0 +10 +-3.3 +20 +-3.3 +11 +3.3 +21 +-3.3 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/outlines/rectangles.yaml b/test/outlines/rectangles.yaml index 2982e5e..6cd7c2f 100644 --- a/test/outlines/rectangles.yaml +++ b/test/outlines/rectangles.yaml @@ -17,6 +17,7 @@ outlines: - mirror_matrix shift: [0, sy/2] size: [20, 40] + corner: 5 outside_rects: what: rectangle where: diff --git a/test/outlines/rectangles___outlines_outline_dxf.dxf b/test/outlines/rectangles___outlines_outline_dxf.dxf index 8de0346..101992d 100644 --- a/test/outlines/rectangles___outlines_outline_dxf.dxf +++ b/test/outlines/rectangles___outlines_outline_dxf.dxf @@ -67,7 +67,7 @@ LINE 11 10 21 -0 +5 0 LINE 8 @@ -135,7 +135,7 @@ LINE 10 30 20 -0 +5 11 30 21 @@ -145,14 +145,28 @@ LINE 8 0 10 -10 +15 20 0 11 -30 +25 21 0 0 +ARC +8 +0 +10 +25 +20 +5 +40 +5 +50 +270 +51 +360 +0 LINE 8 0 @@ -163,32 +177,74 @@ LINE 11 30 21 +35 +0 +ARC +8 +0 +10 +25 +20 +35 40 +5 +50 +0 +51 +90 0 LINE 8 0 10 -30 +25 20 40 11 -10 +15 21 40 0 +ARC +8 +0 +10 +15 +20 +35 +40 +5 +50 +90 +51 +180 +0 LINE 8 0 10 10 20 -40 +35 11 10 21 10 0 +ARC +8 +0 +10 +15 +20 +5 +40 +5 +50 +180 +51 +270 +0 LINE 8 0 diff --git a/test/pcbs/mock_footprints.yaml b/test/pcbs/mock_footprints.yaml index ddce5b0..8eb2df9 100644 --- a/test/pcbs/mock_footprints.yaml +++ b/test/pcbs/mock_footprints.yaml @@ -18,6 +18,7 @@ pcbs: shift: [1, 1] rotate: 30 params: + width: u/40 side: F mirror: side: B @@ -28,9 +29,13 @@ pcbs: rotate: 30 dyn: what: dynamic_net_test - anc: + anc1: what: anchor_test params: end: ref: matrix - shift: [10, 10] \ No newline at end of file + shift: [10, 10] + anc2: + what: anchor_test + params: + end: matrix diff --git a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb index d9b38b3..37fc693 100644 --- a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb +++ b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb @@ -126,7 +126,7 @@ ) - (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.25) (layer F.Cu) (net 1)) + (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.475) (layer F.Cu) (net 1)) @@ -143,7 +143,7 @@ ) - (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.25) (layer B.Cu) (net 1)) + (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.475) (layer B.Cu) (net 1)) @@ -160,7 +160,7 @@ ) - (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.25) (layer B.Cu) (net 1)) + (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.475) (layer B.Cu) (net 1)) @@ -177,7 +177,7 @@ ) - (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.25) (layer F.Cu) (net 1)) + (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.475) (layer F.Cu) (net 1)) @@ -231,6 +231,17 @@ ) + + + (module anchor_test (layer F.Cu) (tedit 5CF31DEF) + + (at 0 0 0) + + (fp_line (start 0 0) (end 0 0) (layer Dwgs.User) (width 0.05)) + + ) + + (gr_line (start -9.5 9.5) (end 9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 9.5 9.5) (end 9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 9.5 -9.5) (end -9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) diff --git a/test/pcbs/outlines.yaml b/test/pcbs/outlines.yaml new file mode 100644 index 0000000..7a7cd82 --- /dev/null +++ b/test/pcbs/outlines.yaml @@ -0,0 +1,34 @@ +points.zones.matrix: + columns: + left: + right: + rows.only: +outlines: + left: + out: + what: rectangle + where: matrix_left_only + size: u + fillet: u/5 + in: + what: circle + where: matrix_left_only + radius: u/4 + operation: subtract + right: + out: + what: rectangle + where: matrix_right_only + size: u + bevel: u/5 + in: + what: rectangle + where: matrix_right_only + size: u/2 + bevel: u/4 + operation: subtract +pcbs: + main: + outlines: + - outline: 'left' + - outline: 'right' diff --git a/test/pcbs/outlines___pcbs_main.kicad_pcb b/test/pcbs/outlines___pcbs_main.kicad_pcb new file mode 100644 index 0000000..8e92c54 --- /dev/null +++ b/test/pcbs/outlines___pcbs_main.kicad_pcb @@ -0,0 +1,132 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title main) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") + ) + + + (gr_line (start -5.7 9.5) (end 5.699999999999999 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 9.5 5.7) (end 9.5 -5.699999999999999) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 5.699999999999999 -9.5) (end -5.7 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start -9.5 -5.699999999999999) (end -9.5 5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_arc (start 5.7 5.7) (end 5.7 9.5) (angle -90) (layer Edge.Cuts) (width 0.15)) +(gr_arc (start 5.7 -5.7) (end 9.5 -5.7) (angle -90) (layer Edge.Cuts) (width 0.15)) +(gr_arc (start -5.7 -5.7) (end -5.7 -9.5) (angle -90) (layer Edge.Cuts) (width 0.15)) +(gr_arc (start -5.7 5.7) (end -9.5 5.7) (angle -90) (layer Edge.Cuts) (width 0.15)) +(gr_circle (center 0 0) (end 4.75 0) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 13.3 9.5) (end 9.5 5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 9.5 5.7) (end 9.5 -5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 9.5 -5.7) (end 13.3 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 13.3 -9.5) (end 24.700000000000003 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 24.700000000000003 -9.5) (end 28.5 -5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 28.5 -5.7) (end 28.5 5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 28.5 5.7) (end 24.700000000000003 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 24.700000000000003 9.5) (end 13.3 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 19 4.75) (end 14.25 0) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 14.25 0) (end 19 -4.75) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 19 -4.75) (end 23.75 0) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 23.75 0) (end 19 4.75) (angle 90) (layer Edge.Cuts) (width 0.15)) + +) + + \ No newline at end of file diff --git a/test/points/mirrors.yaml b/test/points/mirrors.yaml new file mode 100644 index 0000000..a38565b --- /dev/null +++ b/test/points/mirrors.yaml @@ -0,0 +1,15 @@ +points: + mirror: + ref: matrix_right_top + distance: U + zones: + matrix: + columns: + left: + rows: + bottom.asym: source + top.asym: clone + right: + rows: + bottom: + top: diff --git a/test/points/mirrors___demo_dxf.dxf b/test/points/mirrors___demo_dxf.dxf new file mode 100644 index 0000000..799f5bd --- /dev/null +++ b/test/points/mirrors___demo_dxf.dxf @@ -0,0 +1,338 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-9 +20 +9 +11 +9 +21 +9 +0 +LINE +8 +0 +10 +9 +20 +9 +11 +9 +21 +-9 +0 +LINE +8 +0 +10 +9 +20 +-9 +11 +-9 +21 +-9 +0 +LINE +8 +0 +10 +-9 +20 +-9 +11 +-9 +21 +9 +0 +LINE +8 +0 +10 +10 +20 +9 +11 +28 +21 +9 +0 +LINE +8 +0 +10 +28 +20 +9 +11 +28 +21 +-9 +0 +LINE +8 +0 +10 +28 +20 +-9 +11 +10 +21 +-9 +0 +LINE +8 +0 +10 +10 +20 +-9 +11 +10 +21 +9 +0 +LINE +8 +0 +10 +10 +20 +28 +11 +28 +21 +28 +0 +LINE +8 +0 +10 +28 +20 +28 +11 +28 +21 +10 +0 +LINE +8 +0 +10 +28 +20 +10 +11 +10 +21 +10 +0 +LINE +8 +0 +10 +10 +20 +10 +11 +10 +21 +28 +0 +LINE +8 +0 +10 +48.05 +20 +28 +11 +66.05 +21 +28 +0 +LINE +8 +0 +10 +66.05 +20 +28 +11 +66.05 +21 +10 +0 +LINE +8 +0 +10 +66.05 +20 +10 +11 +48.05 +21 +10 +0 +LINE +8 +0 +10 +48.05 +20 +10 +11 +48.05 +21 +28 +0 +LINE +8 +0 +10 +29.05 +20 +9 +11 +47.05 +21 +9 +0 +LINE +8 +0 +10 +47.05 +20 +9 +11 +47.05 +21 +-9 +0 +LINE +8 +0 +10 +47.05 +20 +-9 +11 +29.05 +21 +-9 +0 +LINE +8 +0 +10 +29.05 +20 +-9 +11 +29.05 +21 +9 +0 +LINE +8 +0 +10 +29.05 +20 +28 +11 +47.05 +21 +28 +0 +LINE +8 +0 +10 +47.05 +20 +28 +11 +47.05 +21 +10 +0 +LINE +8 +0 +10 +47.05 +20 +10 +11 +29.05 +21 +10 +0 +LINE +8 +0 +10 +29.05 +20 +10 +11 +29.05 +21 +28 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/points/rotations.yaml b/test/points/rotations.yaml new file mode 100644 index 0000000..50ffa01 --- /dev/null +++ b/test/points/rotations.yaml @@ -0,0 +1,16 @@ +points: + rotate: 22.5 + zones: + matrix: + rotate: 22.5 + key: + origin: [-u/2, -u/2] + columns: + left: + right.key: + rotate: -45 + padding: (1+sqrt(2))/2 * u + spread: (1+sqrt(2))/2 * u + rows: + bottom: + top: diff --git a/test/points/rotations___demo_dxf.dxf b/test/points/rotations___demo_dxf.dxf new file mode 100644 index 0000000..657e493 --- /dev/null +++ b/test/points/rotations___demo_dxf.dxf @@ -0,0 +1,242 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-12.7279221 +20 +0 +11 +0 +21 +12.7279221 +0 +LINE +8 +0 +10 +0 +20 +12.7279221 +11 +12.7279221 +21 +0 +0 +LINE +8 +0 +10 +12.7279221 +20 +0 +11 +0 +21 +-12.7279221 +0 +LINE +8 +0 +10 +0 +20 +-12.7279221 +11 +-12.7279221 +21 +0 +0 +LINE +8 +0 +10 +-26.1629509 +20 +13.4350288 +11 +-13.4350288 +21 +26.1629509 +0 +LINE +8 +0 +10 +-13.4350288 +20 +26.1629509 +11 +-0.7071067 +21 +13.4350288 +0 +LINE +8 +0 +10 +-0.7071067 +20 +13.4350288 +11 +-13.4350288 +21 +0.7071067 +0 +LINE +8 +0 +10 +-13.4350288 +20 +0.7071067 +11 +-26.1629509 +21 +13.4350288 +0 +LINE +8 +0 +10 +7.2175144 +20 +25.2175144 +11 +25.2175144 +21 +25.2175144 +0 +LINE +8 +0 +10 +25.2175144 +20 +25.2175144 +11 +25.2175144 +21 +7.2175144 +0 +LINE +8 +0 +10 +25.2175144 +20 +7.2175144 +11 +7.2175144 +21 +7.2175144 +0 +LINE +8 +0 +10 +7.2175144 +20 +7.2175144 +11 +7.2175144 +21 +25.2175144 +0 +LINE +8 +0 +10 +16.2175144 +20 +51.8804653 +11 +28.9454365 +21 +39.1525432 +0 +LINE +8 +0 +10 +28.9454365 +20 +39.1525432 +11 +16.2175144 +21 +26.4246211 +0 +LINE +8 +0 +10 +16.2175144 +20 +26.4246211 +11 +3.4895923 +21 +39.1525432 +0 +LINE +8 +0 +10 +3.4895923 +20 +39.1525432 +11 +16.2175144 +21 +51.8804653 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/unit/anchor.js b/test/unit/anchor.js index c9b3dd1..d32c981 100644 --- a/test/unit/anchor.js +++ b/test/unit/anchor.js @@ -56,6 +56,21 @@ describe('Anchor', function() { }, 'name', points)(), [5, 5, -45, {}] ) + // empty parts + check( + parse({ + aggregate: { + } + }, 'name', points)(), + [0, 0, 0, {}] + ) + // can't have aggregate and ref together + parse({ + aggregate: { + parts: ['o', 'ten'] + }, + ref : 'ten' + }, 'name', points).should.throw() }) it('shift', function() { diff --git a/test/unit/filter.js b/test/unit/filter.js index 5481949..6097150 100644 --- a/test/unit/filter.js +++ b/test/unit/filter.js @@ -4,6 +4,12 @@ const Point = require('../../src/point') describe('Filter', function() { + it('empty', function() { + filter(undefined, '').should.deep.equal([new Point()]) + filter(true, '').should.deep.equal([]) + filter(false, '').should.deep.equal([]) + }) + const points = { one: new Point(0, 1, 0, {name: 'one', tags: ['odd']}), two: new Point(0, 2, 0, {name: 'two', tags: ['even', 'prime']}), @@ -18,8 +24,15 @@ describe('Filter', function() { // true shouldn't filter anything, while false should filter everything filter(true, '', points).should.deep.equal(Object.values(points)) filter(false, '', points).should.deep.equal([]) + // points should only be returned on their respective halves + filter(true, '', points, undefined, 'source').should.deep.equal(Object.values(points)) + filter(true, '', points, undefined, 'clone').should.deep.equal([]) + filter(true, '', points, undefined, 'both').should.deep.equal(Object.values(points)) // objects just propagate to anchor (and then wrap in array for consistency) filter({}, '', points).should.deep.equal([anchor({}, '', points)()]) + filter({}, '', points, undefined, 'source').should.deep.equal([anchor({}, '', points)()]) + filter({}, '', points, undefined, 'clone').should.deep.equal([anchor({}, '', points)()]) + filter({}, '', points, undefined, 'both').should.deep.equal([anchor({}, '', points)(), anchor({}, '', points)()]) // simple name string names(filter('one', '', points)).should.deep.equal(['one']) // simple name regex @@ -42,4 +55,4 @@ describe('Filter', function() { filter.bind(this, 28, '', points).should.throw('Unexpected type') }) -}) \ No newline at end of file +}) diff --git a/test/unit/interface.js b/test/unit/interface.js index ddae923..af93712 100644 --- a/test/unit/interface.js +++ b/test/unit/interface.js @@ -10,7 +10,8 @@ const load = name => yaml.safeLoad(fs.readFileSync( ).toString()) const minimal = load('minimal.yaml') const big = load('big.yaml') -const kle = load('atreus_kle.json') +const minimal_kle = load('minimal_kle.json') +const atreus_kle = load('atreus_kle.json') describe('Interface', function() { @@ -49,7 +50,8 @@ describe('Interface', function() { //: return 'not an object'; `, true, logger).should.be.rejectedWith('not valid'), - ergogen.process(kle, true, logger).should.be.rejectedWith('KLE'), + ergogen.process(minimal_kle, true, logger).should.be.rejectedWith('KLE'), + ergogen.process(atreus_kle, true, logger).should.be.rejectedWith('KLE'), ergogen.process('not an object', true, logger).should.be.rejectedWith('object'), ergogen.process({}, true, logger).should.be.rejectedWith('empty'), ergogen.process({not_points: {}}, true, () => {}).should.be.rejectedWith('points clause'), diff --git a/test/unit/units.js b/test/unit/units.js index 2da81dc..ac1e947 100644 --- a/test/unit/units.js +++ b/test/unit/units.js @@ -5,12 +5,19 @@ describe('Units', function() { it('defaults', function() { // check that an empty config has the default units (and nothing more) - const def = u.parse({}) - Object.keys(def).filter(public).length.should.equal(4) - def.U.should.equal(19.05) - def.u.should.equal(19) - def.cx.should.equal(18) - def.cy.should.equal(17) + const def1 = u.parse({}) + Object.keys(def1).filter(public).length.should.equal(4) + def1.U.should.equal(19.05) + def1.u.should.equal(19) + def1.cx.should.equal(18) + def1.cy.should.equal(17) + // check that an empty config has the default units (and nothing more) + const def2 = u.parse() + Object.keys(def2).filter(public).length.should.equal(4) + def2.U.should.equal(19.05) + def2.u.should.equal(19) + def2.cx.should.equal(18) + def2.cy.should.equal(17) }) it('units', function() { @@ -47,4 +54,4 @@ describe('Units', function() { res.a.should.equal(20.05) }) -}) \ No newline at end of file +}) From 357e01d639a080ed7dde179822ee3c1e12b2e472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=88=E3=83=88=E3=82=82?= <85485984+ElectronicsArchiver@users.noreply.github.com> Date: Mon, 23 Jan 2023 05:17:01 -0500 Subject: [PATCH 070/120] Improve readme formatting (#62) * Fixed LICENSE File Name * Adjusted README Name * Formatted Contribution Section * Added License Badge * Formatted Getting Started * Moved Getting Started Into Dedicated File * Added Quicklinks * Fixed File Name * Formatted Description + Added Showcase * Adjusted Image Padding * Adjusted Spacing --- license.md => LICENSE | 0 README.md | 65 ++++++++++++++++++++++++++++++++++++++ docs/Getting Started.md | 68 ++++++++++++++++++++++++++++++++++++++++ docs/Showcase.png | Bin 0 -> 43513 bytes readme.md | 22 ------------- 5 files changed, 133 insertions(+), 22 deletions(-) rename license.md => LICENSE (100%) create mode 100644 README.md create mode 100644 docs/Getting Started.md create mode 100644 docs/Showcase.png delete mode 100644 readme.md diff --git a/license.md b/LICENSE similarity index 100% rename from license.md rename to LICENSE diff --git a/README.md b/README.md new file mode 100644 index 0000000..06d4bc4 --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ + +# Ergogen    [![Badge License]][License] + +***Keyboard Generator*** *build on* ***[Absolem Keyboard]***. + +
+ + + +The project aims to provide a common configuration format to
+describe ***ergonomic*** 2D layouts and generate automatic plates,
+cases, as well as un-routed PCBs for them. + +
+
+ +
+ +--- + +[![Button Demo]][Demo]    +[![Button Getting Started]][Getting Started]    +[![Button Documentation]][Documentation]    +[![Button Discord]][Discord] + +--- + +
+ +
+
+ +## Contributions + +Feature ideas, documentation improvements,
+examples, tests, or pull requests welcome! + +*Get in touch on our **[Discord]**, and we can definitely*
+*find something you can help with, if you'd like to.* + +
+ + + +[Badge License]: https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge + +[Absolem Keyboard]: https://zealot.hu/absolem +[Getting Started]: docs/Getting%20Started.md +[Documentation]: https://docs.ergogen.xyz +[Discord]: https://discord.gg/nbKcAZB +[Demo]: https://ergogen.xyz + +[License]: LICENSE + + + + +[Button Getting Started]: https://img.shields.io/badge/Getting_Started-F94877?style=for-the-badge&logoColor=white&logo=GitHub +[Button Documentation]: https://img.shields.io/badge/Documentation-1793D1?style=for-the-badge&logoColor=white&logo=GitBook +[Button Discord]: https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logoColor=white&logo=Discord +[Button Demo]: https://img.shields.io/badge/Demo-37a779?style=for-the-badge&logoColor=white&logo=AppleArcade diff --git a/docs/Getting Started.md b/docs/Getting Started.md new file mode 100644 index 0000000..1497f57 --- /dev/null +++ b/docs/Getting Started.md @@ -0,0 +1,68 @@ +# Getting Started + +Until a proper 'Getting started' guide has been written,
+try getting familiar with **Ergogen** doing the following: + +
+ +1. Read the **[Documentation]**. + + *It isn't complete by any measure, but should give*
+ *you a fairly good idea what you are dealing with.* + +
+ +2. Try one of the web-based deployments. + + [![Badge Official]][Deployment Official]    + [![Badge Unofficial]][Deployment Unofficial] + +
+ + *The unofficial deployment is probably*
+ *better and will soon be official as well.* + + #### CLI + + There is no need for you to download the **CLI**
+ unless you want to do one of the following: + + - Preview in-development features + - Use custom modifications + - Contribute code + +
+ + *Click things, look at outputs and*
+ *see if things start to make sense.* + +
+ +3. Search the [`ergogen`][Topic] topic on GitHub
+ to look at / reverse engineer a variety
+ of real life configs using **Ergogen**. + + Pop them into the web UI to see what
+ they do, tinker with them and things
+ should start to make more sense. + +
+ +4. If a question persists after all of the above,
+ feel free to ask it over on **[Discord]** and we'll
+ do our best to help you out. + +
+ + + + +[Badge Unofficial]: https://img.shields.io/badge/Unofficial-E4405F.svg?style=for-the-badge +[Badge Official]: https://img.shields.io/badge/Official-yellow.svg?style=for-the-badge + +[Deployment Unofficial]: https://ergogen.cache.works/ +[Deployment Official]: https://ergogen.xyz + +[Documentation]: https://docs.ergogen.xyz +[Discord]: https://discord.gg/nbKcAZB +[Topic]: https://github.com/topics/ergogen diff --git a/docs/Showcase.png b/docs/Showcase.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b928f40a5589cf1d2f1f86cb4b02a12c58fcf7 GIT binary patch literal 43513 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 HCOyx`#c2VBV#KUU z2DEQCV>J|taLt^Kw)*cwcSYQj<2*%qA%cLiMrU0h?6k? z;#<9gBPUMmOAh+>?0(RWoVFJ^Q$FSW;VJCNgwfqAGN2vjI6vE!G6e|&9OK`A|J_dLZq(w{(9$V#D8q0)(=F+oLuMss9Q6<#95{HN$n;}6tUnA83-hh@sWDbYEpA=GvpD-<4_jhAaS zyVU6@cK`IcpqJ>Eh`pi$v>3u zXNlb4tV5lddn!KMXv#$VgK|R^x@-4tHm`NKg*<@Crw??$vJ0?Ypt{@}{)LyBovaS3 z3Ht*&ZG+sEq8Qdrca@=< zHrI^ys2r>pHAw`TSf~IRB8C*x3w%>5O z&Nqbd_xN!CK!k!D;ZB3Ir!ui(js1-TuHFkI*@GfXvZOHhsu$beTG^^{-+;Iho^ zZgOgC2xhIC&2RQO7zjl3)^fFp@~X~fIe5-L^9QYe`Q=E-IJXG{u|3mBb^cUw5C=>k zvQ!TNdb4u#vFH9is?!FE_}XLAF~J(S7lm;8d0fc&^P|<&s1YEN`kQyB-$7|Q+DB0@ zagQiH4`UP_LI_pZs_UZ;ZZeSY<6fi?317mAPW3o}&``fV(r{?!hvBe7-AI-$jfd0z z=btE;o>Y(H3sLvUgoae*ZK6uSNyN@>n`NpxTFvet)2c<|`aGinTz_8mGTzq3HkM-dh=Xd>M=1ZJiPfNQI2P5Wri9t&2M8RQNK)!ZMgDVTM+FAbQI7uF%Y2E zy~rdL$c9n1NXtyPYw_TI6(4pEs&^PLBOgUDAQn7CU|kDxdMZ(hRMpjc0dRJ;3ZtJgi7ZP3R|Ui+sWch zMcy&V#xWv)|IF$a zEI3rnyCX)>>T4SjeGUOX{byo*f9%(=LyC#&aY7=g$QRFTdeWnlyxkFBcQZ?2sNU0g zgXTOY;(1f~(V9wf+6;A>m0hqKf{73s2WmN28P(EMCoDozYLwt4D zdk3IWRZWe>oJFI59{Q-_S{XD23e7MSDX^maQN*A^NkXc8twCdnfi%bvEccF2=CL-fy}?1jn?cZPgW- z+|+ac)Uw2%Rr9>V0EJ=-;SsCZy-CnxNgjkn#m{>0$s!LL5n&aZ>T$DjVZg z-A`Y5VMl>Gq@41K0KLSsqP!pX`|8!bcnu^Y`!V+jqj_R-pq*Fp_0Ld ztuBT4d)TP7gQZ!jc7Bq;2bY0nf{lC>q7)B)+Tgx%<6~Ar2la59S~H3t+vN0SX-adi ztflq+%oV0}=V!B1@7FJWSqr+^Ts89P#|QhdSAP7F8usFyo>!x*ZfY^(U4R-Zh+1{z zY`z&u&2Ncyr4hA~iw%xFk>MwO#de6>dyT~*vuS(Y_Y`vtRAZI7N o5$mkh Date: Mon, 23 Jan 2023 10:30:06 +0100 Subject: [PATCH 071/120] Dependency update --- package-lock.json | 842 ++++++++++++++++++++++++++++++---------------- package.json | 18 +- 2 files changed, 552 insertions(+), 308 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8ea82ff..2f023cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,27 +9,27 @@ "version": "4.0.0", "license": "MIT", "dependencies": { - "fs-extra": "^10.0.1", + "fs-extra": "^11.1.0", "js-yaml": "^3.14.1", "jszip": "^3.10.1", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", - "mathjs": "^10.1.1", - "yargs": "^17.3.1" + "mathjs": "^11.5.0", + "yargs": "^17.6.2" }, "bin": { "ergogen": "src/cli.js" }, "devDependencies": { - "@rollup/plugin-commonjs": "^21.0.2", - "@rollup/plugin-json": "^4.1.0", - "chai": "^4.3.6", + "@rollup/plugin-commonjs": "^24.0.1", + "@rollup/plugin-json": "^6.0.0", + "chai": "^4.3.7", "chai-as-promised": "^7.1.1", "dir-compare": "^4.0.0", - "glob": "^7.2.0", - "mocha": "^9.2.1", + "glob": "^8.1.0", + "mocha": "^10.2.0", "nyc": "^15.1.0", - "rollup": "^2.68.0" + "rollup": "^3.10.1" } }, "node_modules/@ampproject/remapping": { @@ -324,10 +324,11 @@ } }, "node_modules/@babel/runtime": { - "version": "7.17.9", - "license": "MIT", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" }, "engines": { "node": ">=6.9.0" @@ -462,9 +463,10 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "dev": true, - "license": "MIT" + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.4", @@ -476,65 +478,81 @@ } }, "node_modules/@rollup/plugin-commonjs": { - "version": "21.1.0", + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz", + "integrity": "sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==", "dev": true, - "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^3.1.0", + "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" }, "engines": { - "node": ">= 8.0.0" + "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.38.3" + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, "node_modules/@rollup/plugin-json": { - "version": "4.1.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", + "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", "dev": true, - "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^3.0.8" + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, "node_modules/@rollup/pluginutils": { - "version": "3.1.0", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 8.0.0" + "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/@types/bezier-js": { "version": "0.0.6", "license": "MIT" }, "node_modules/@types/estree": { - "version": "0.0.39", - "dev": true, - "license": "MIT" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true }, "node_modules/@types/node": { "version": "7.10.14", @@ -551,11 +569,6 @@ "@types/node": "*" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "dev": true, - "license": "ISC" - }, "node_modules/aggregate-error": { "version": "3.1.0", "dev": true, @@ -626,7 +639,8 @@ }, "node_modules/argparse": { "version": "1.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dependencies": { "sprintf-js": "~1.0.2" } @@ -747,13 +761,14 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "4.3.6", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, - "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^3.0.1", + "deep-eql": "^4.1.2", "get-func-name": "^2.0.0", "loupe": "^2.3.1", "pathval": "^1.1.1", @@ -844,6 +859,7 @@ }, "node_modules/cliui": { "version": "7.0.4", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -919,9 +935,10 @@ } }, "node_modules/debug": { - "version": "4.3.3", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -948,18 +965,20 @@ } }, "node_modules/decimal.js": { - "version": "10.3.1", - "license": "MIT" + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, "node_modules/deep-eql": { - "version": "3.0.1", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, - "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=6" } }, "node_modules/default-require-extensions": { @@ -1028,7 +1047,8 @@ }, "node_modules/esprima": { "version": "4.0.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1135,15 +1155,16 @@ "license": "MIT" }, "node_modules/fs-extra": { - "version": "10.0.1", - "license": "MIT", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.14" } }, "node_modules/fs.realpath": { @@ -1151,10 +1172,19 @@ "dev": true, "license": "ISC" }, - "node_modules/function-bind": { - "version": "1.1.1", + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "license": "MIT" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -1188,19 +1218,19 @@ } }, "node_modules/glob": { - "version": "7.2.0", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1217,6 +1247,27 @@ "node": ">= 6" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/globals": { "version": "11.12.0", "dev": true, @@ -1233,25 +1284,6 @@ "version": "1.0.4", "license": "MIT" }, - "node_modules/growl": { - "version": "1.10.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.x" - } - }, - "node_modules/has": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "dev": true, @@ -1332,17 +1364,6 @@ "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "dev": true, @@ -1555,7 +1576,8 @@ }, "node_modules/js-yaml": { "version": "3.14.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1576,8 +1598,9 @@ } }, "node_modules/json5": { - "version": "2.2.1", - "license": "MIT", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -1668,11 +1691,15 @@ } }, "node_modules/magic-string": { - "version": "0.25.9", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", "dev": true, - "license": "MIT", "dependencies": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" } }, "node_modules/make-dir": { @@ -1706,24 +1733,25 @@ } }, "node_modules/mathjs": { - "version": "10.4.3", - "license": "Apache-2.0", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.5.0.tgz", + "integrity": "sha512-vJ/+SqWtxjW6/aeDRt8xL3TlOVKqwN15BIyTGVqGbIWuiqgY4SxZ0yLuna82YH9CB757iFP7uJ4m3KvVBX7Qcg==", "dependencies": { - "@babel/runtime": "^7.17.8", - "complex.js": "^2.1.0", - "decimal.js": "^10.3.1", + "@babel/runtime": "^7.20.6", + "complex.js": "^2.1.1", + "decimal.js": "^10.4.3", "escape-latex": "^1.2.0", "fraction.js": "^4.2.0", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", - "typed-function": "^2.1.0" + "typed-function": "^4.1.0" }, "bin": { "mathjs": "bin/cli.js" }, "engines": { - "node": ">= 12" + "node": ">= 14" } }, "node_modules/minimatch": { @@ -1738,41 +1766,39 @@ } }, "node_modules/mocha": { - "version": "9.2.2", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, - "license": "MIT", "dependencies": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14.0.0" }, "funding": { "type": "opencollective", @@ -1781,13 +1807,47 @@ }, "node_modules/mocha/node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "license": "Python-2.0" + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1796,16 +1856,26 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", "dev": true, @@ -1829,9 +1899,10 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.1", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1925,6 +1996,26 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", "dev": true, @@ -2095,8 +2186,9 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2109,11 +2201,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, "node_modules/pathval": { "version": "1.1.1", "dev": true, @@ -2245,8 +2332,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.9", - "license": "MIT" + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/release-zalgo": { "version": "1.0.0", @@ -2271,22 +2359,6 @@ "dev": true, "license": "ISC" }, - "node_modules/resolve": { - "version": "1.22.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-from": { "version": "5.0.0", "dev": true, @@ -2309,15 +2381,37 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rollup": { - "version": "2.70.2", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.1.tgz", + "integrity": "sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==", "dev": true, - "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.18.0", + "npm": ">=8.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" @@ -2388,11 +2482,6 @@ "node": ">=0.10.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "dev": true, - "license": "MIT" - }, "node_modules/spawn-wrap": { "version": "2.0.0", "dev": true, @@ -2411,7 +2500,8 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/string_decoder": { "version": "1.1.1", @@ -2475,17 +2565,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "dev": true, @@ -2499,6 +2578,26 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/tiny-emitter": { "version": "2.1.0", "license": "MIT" @@ -2524,8 +2623,9 @@ }, "node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -2539,9 +2639,11 @@ } }, "node_modules/typed-function": { - "version": "2.1.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.0.tgz", + "integrity": "sha512-DGwUl6cioBW5gw2L+6SMupGwH/kZOqivy17E4nsh1JI9fKF87orMmlQx3KISQPmg3sfnOUGlwVkroosvgddrlg==", "engines": { - "node": ">= 10" + "node": ">= 14" } }, "node_modules/typedarray-to-buffer": { @@ -2591,9 +2693,10 @@ "license": "ISC" }, "node_modules/workerpool": { - "version": "6.2.0", - "dev": true, - "license": "Apache-2.0" + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -2634,16 +2737,17 @@ } }, "node_modules/yargs": { - "version": "17.4.1", - "license": "MIT", + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^21.1.1" }, "engines": { "node": ">=12" @@ -2693,9 +2797,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yargs/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.0.1", - "license": "ISC", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "engines": { "node": ">=12" } @@ -2903,9 +3021,11 @@ "dev": true }, "@babel/runtime": { - "version": "7.17.9", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" } }, "@babel/template": { @@ -2995,7 +3115,9 @@ "dev": true }, "@jridgewell/sourcemap-codec": { - "version": "1.4.11", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, "@jridgewell/trace-mapping": { @@ -3007,45 +3129,46 @@ } }, "@rollup/plugin-commonjs": { - "version": "21.1.0", + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz", + "integrity": "sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.1.0", + "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" } }, "@rollup/plugin-json": { - "version": "4.1.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", + "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.8" + "@rollup/pluginutils": "^5.0.1" } }, "@rollup/pluginutils": { - "version": "3.1.0", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", "dev": true, "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "estree-walker": { - "version": "1.0.1", - "dev": true - } + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" } }, "@types/bezier-js": { "version": "0.0.6" }, "@types/estree": { - "version": "0.0.39", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, "@types/node": { @@ -3060,10 +3183,6 @@ "@types/node": "*" } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "dev": true - }, "aggregate-error": { "version": "3.1.0", "dev": true, @@ -3106,6 +3225,8 @@ }, "argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" } @@ -3174,12 +3295,14 @@ "dev": true }, "chai": { - "version": "4.3.6", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^3.0.1", + "deep-eql": "^4.1.2", "get-func-name": "^2.0.0", "loupe": "^2.3.1", "pathval": "^1.1.1", @@ -3234,6 +3357,7 @@ }, "cliui": { "version": "7.0.4", + "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -3283,7 +3407,9 @@ } }, "debug": { - "version": "4.3.3", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -3300,10 +3426,14 @@ "dev": true }, "decimal.js": { - "version": "10.3.1" + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, "deep-eql": { - "version": "3.0.1", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -3350,7 +3480,9 @@ "dev": true }, "esprima": { - "version": "4.0.1" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estree-walker": { "version": "2.0.2", @@ -3400,7 +3532,9 @@ "dev": true }, "fs-extra": { - "version": "10.0.1", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3411,9 +3545,12 @@ "version": "1.0.0", "dev": true }, - "function-bind": { - "version": "1.1.1", - "dev": true + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true }, "gensync": { "version": "1.0.0-beta.2", @@ -3431,15 +3568,36 @@ "dev": true }, "glob": { - "version": "7.2.0", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "glob-parent": { @@ -3459,17 +3617,6 @@ "graham_scan": { "version": "1.0.4" }, - "growl": { - "version": "1.10.5", - "dev": true - }, - "has": { - "version": "1.0.3", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "4.0.0", "dev": true @@ -3519,13 +3666,6 @@ "binary-extensions": "^2.0.0" } }, - "is-core-module": { - "version": "2.8.1", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "is-extglob": { "version": "2.1.1", "dev": true @@ -3662,6 +3802,8 @@ }, "js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3672,7 +3814,9 @@ "dev": true }, "json5": { - "version": "2.2.1" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonfile": { "version": "6.1.0", @@ -3733,10 +3877,12 @@ } }, "magic-string": { - "version": "0.25.9", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.4.13" } }, "make-dir": { @@ -3762,17 +3908,19 @@ } }, "mathjs": { - "version": "10.4.3", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.5.0.tgz", + "integrity": "sha512-vJ/+SqWtxjW6/aeDRt8xL3TlOVKqwN15BIyTGVqGbIWuiqgY4SxZ0yLuna82YH9CB757iFP7uJ4m3KvVBX7Qcg==", "requires": { - "@babel/runtime": "^7.17.8", - "complex.js": "^2.1.0", - "decimal.js": "^10.3.1", + "@babel/runtime": "^7.20.6", + "complex.js": "^2.1.1", + "decimal.js": "^10.4.3", "escape-latex": "^1.2.0", "fraction.js": "^4.2.0", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", - "typed-function": "^2.1.0" + "typed-function": "^4.1.0" } }, "minimatch": { @@ -3783,30 +3931,29 @@ } }, "mocha": { - "version": "9.2.2", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "requires": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -3814,20 +3961,62 @@ "dependencies": { "argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" } }, "minimatch": { - "version": "4.2.1", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + } } }, "yargs": { @@ -3850,7 +4039,9 @@ "dev": true }, "nanoid": { - "version": "3.3.1", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, "node-preload": { @@ -3918,6 +4109,20 @@ "path-exists": "^4.0.0" } }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "locate-path": { "version": "5.0.0", "dev": true, @@ -4030,16 +4235,14 @@ }, "path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { "version": "3.1.1", "dev": true }, - "path-parse": { - "version": "1.0.7", - "dev": true - }, "pathval": { "version": "1.1.1", "dev": true @@ -4127,7 +4330,9 @@ } }, "regenerator-runtime": { - "version": "0.13.9" + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "release-zalgo": { "version": "1.0.0", @@ -4143,15 +4348,6 @@ "version": "2.0.0", "dev": true }, - "resolve": { - "version": "1.22.0", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, "resolve-from": { "version": "5.0.0", "dev": true @@ -4161,10 +4357,28 @@ "dev": true, "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "rollup": { - "version": "2.70.2", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.1.tgz", + "integrity": "sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -4213,10 +4427,6 @@ "version": "0.5.7", "dev": true }, - "sourcemap-codec": { - "version": "1.4.8", - "dev": true - }, "spawn-wrap": { "version": "2.0.0", "dev": true, @@ -4230,7 +4440,9 @@ } }, "sprintf-js": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "string_decoder": { "version": "1.1.1", @@ -4267,10 +4479,6 @@ "has-flag": "^4.0.0" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true - }, "test-exclude": { "version": "6.0.0", "dev": true, @@ -4278,6 +4486,22 @@ "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "tiny-emitter": { @@ -4296,6 +4520,8 @@ }, "type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-fest": { @@ -4303,7 +4529,9 @@ "dev": true }, "typed-function": { - "version": "2.1.0" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.0.tgz", + "integrity": "sha512-DGwUl6cioBW5gw2L+6SMupGwH/kZOqivy17E4nsh1JI9fKF87orMmlQx3KISQPmg3sfnOUGlwVkroosvgddrlg==" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -4334,7 +4562,9 @@ "dev": true }, "workerpool": { - "version": "6.2.0", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "wrap-ansi": { @@ -4363,19 +4593,33 @@ "version": "5.0.8" }, "yargs": { - "version": "17.4.1", + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^21.1.1" }, "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, "yargs-parser": { - "version": "21.0.1" + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" } } }, diff --git a/package.json b/package.json index 8c71779..10cc7ae 100644 --- a/package.json +++ b/package.json @@ -15,24 +15,24 @@ "coverage": "nyc --reporter=html --reporter=text npm test" }, "dependencies": { - "fs-extra": "^10.0.1", + "fs-extra": "^11.1.0", "js-yaml": "^3.14.1", "jszip": "^3.10.1", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", - "mathjs": "^10.1.1", - "yargs": "^17.3.1" + "mathjs": "^11.5.0", + "yargs": "^17.6.2" }, "devDependencies": { - "@rollup/plugin-commonjs": "^21.0.2", - "@rollup/plugin-json": "^4.1.0", - "chai": "^4.3.6", + "@rollup/plugin-commonjs": "^24.0.1", + "@rollup/plugin-json": "^6.0.0", + "chai": "^4.3.7", "chai-as-promised": "^7.1.1", "dir-compare": "^4.0.0", - "glob": "^7.2.0", - "mocha": "^9.2.1", + "glob": "^8.1.0", + "mocha": "^10.2.0", "nyc": "^15.1.0", - "rollup": "^2.68.0" + "rollup": "^3.10.1" }, "nyc": { "all": true, From d2c3999d410972871e67f395f9d4dfe8c1a81be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 23 Jan 2023 10:53:39 +0100 Subject: [PATCH 072/120] Fix multiple extrusions of the same outline in cases --- src/cases.js | 14 +++++++++----- test/cases/cube___cases_cube_jscad.jscad | 4 ++-- .../operations___cases_combination_jscad.jscad | 18 ++++++++++++------ test/cli/big/reference/cases/_export.jscad | 4 ++-- test/cli/big/reference/cases/export.jscad | 4 ++-- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/cases.js b/src/cases.js index f6342fc..7fabbb1 100644 --- a/src/cases.js +++ b/src/cases.js @@ -69,15 +69,19 @@ exports.parse = (config, outlines, units) => { const extrude = a.sane(part.extrude || 1, `${part_qname}.extrude`, 'number')(units) const outline = outlines[name] a.assert(outline, `Field "${part_qname}.name" does not name a valid outline!`) - if (!scripts[name]) { - scripts[name] = m.exporter.toJscadScript(outline, { - functionName: `${name}_outline_fn`, + // This is a hack to separate multiple calls to the same outline with different extrude values + // I know it needlessly duplicates a lot of code, but it's the quickest fix in the short term + // And on the long run, we'll probably be moving to CADQuery anyway... + const extruded_name = `${name}_extrude_` + ('' + extrude).replace(/\D/g, '_') + if (!scripts[extruded_name]) { + scripts[extruded_name] = m.exporter.toJscadScript(outline, { + functionName: `${extruded_name}_outline_fn`, extrude: extrude, indent: 4 }) } - outline_dependencies.push(name) - base = `${name}_outline_fn()` + outline_dependencies.push(extruded_name) + base = `${extruded_name}_outline_fn()` } else { a.assert(part.extrude === undefined, `Field "${part_qname}.extrude" should not be used when what=case!`) a.in(name, `${part_qname}.name`, Object.keys(cases)) diff --git a/test/cases/cube___cases_cube_jscad.jscad b/test/cases/cube___cases_cube_jscad.jscad index bb9cda8..349bb42 100644 --- a/test/cases/cube___cases_cube_jscad.jscad +++ b/test/cases/cube___cases_cube_jscad.jscad @@ -1,4 +1,4 @@ -function square_outline_fn(){ +function square_extrude_5_outline_fn(){ return new CSG.Path2D([[-2.5,-2.5],[2.5,-2.5]]).appendPoint([2.5,2.5]).appendPoint([-2.5,2.5]).appendPoint([-2.5,-2.5]).close().innerToCAG() .extrude({ offset: [0, 0, 5] }); } @@ -10,7 +10,7 @@ function square_outline_fn(){ // creating part 0 of case cube - let cube__part_0 = square_outline_fn(); + let cube__part_0 = square_extrude_5_outline_fn(); // make sure that rotations are relative let cube__part_0_bounds = cube__part_0.getBounds(); diff --git a/test/cases/operations___cases_combination_jscad.jscad b/test/cases/operations___cases_combination_jscad.jscad index 2606dde..1fb8cb8 100644 --- a/test/cases/operations___cases_combination_jscad.jscad +++ b/test/cases/operations___cases_combination_jscad.jscad @@ -1,15 +1,21 @@ -function _square_outline_fn(){ +function _square_extrude_8_outline_fn(){ return new CSG.Path2D([[-4,-4],[4,-4]]).appendPoint([4,4]).appendPoint([-4,4]).appendPoint([-4,-4]).close().innerToCAG() .extrude({ offset: [0, 0, 8] }); } -function _circle_outline_fn(){ +function _circle_extrude_8_outline_fn(){ return CAG.circle({"center":[0,0],"radius":3}) .extrude({ offset: [0, 0, 8] }); } +function _square_extrude_1_outline_fn(){ + return new CSG.Path2D([[-4,-4],[4,-4]]).appendPoint([4,4]).appendPoint([-4,4]).appendPoint([-4,-4]).close().innerToCAG() +.extrude({ offset: [0, 0, 1] }); +} + + function _subtract_case_fn() { @@ -55,7 +61,7 @@ function _circle_outline_fn(){ // creating part 0 of case _cube - let _cube__part_0 = _square_outline_fn(); + let _cube__part_0 = _square_extrude_8_outline_fn(); // make sure that rotations are relative let _cube__part_0_bounds = _cube__part_0.getBounds(); @@ -78,7 +84,7 @@ function _circle_outline_fn(){ // creating part 0 of case _cylinder_one - let _cylinder_one__part_0 = _circle_outline_fn(); + let _cylinder_one__part_0 = _circle_extrude_8_outline_fn(); // make sure that rotations are relative let _cylinder_one__part_0_bounds = _cylinder_one__part_0.getBounds(); @@ -101,7 +107,7 @@ function _circle_outline_fn(){ // creating part 0 of case _cylinder_two - let _cylinder_two__part_0 = _circle_outline_fn(); + let _cylinder_two__part_0 = _circle_extrude_8_outline_fn(); // make sure that rotations are relative let _cylinder_two__part_0_bounds = _cylinder_two__part_0.getBounds(); @@ -124,7 +130,7 @@ function _circle_outline_fn(){ // creating part 0 of case _flat_square - let _flat_square__part_0 = _square_outline_fn(); + let _flat_square__part_0 = _square_extrude_1_outline_fn(); // make sure that rotations are relative let _flat_square__part_0_bounds = _flat_square__part_0.getBounds(); diff --git a/test/cli/big/reference/cases/_export.jscad b/test/cli/big/reference/cases/_export.jscad index a98416f..bb85f72 100644 --- a/test/cli/big/reference/cases/_export.jscad +++ b/test/cli/big/reference/cases/_export.jscad @@ -1,4 +1,4 @@ -function export_outline_fn(){ +function export_extrude_1_outline_fn(){ return new CSG.Path2D([[-9,-9],[9,-9]]).appendPoint([9,9]).appendPoint([-9,9]).appendPoint([-9,-9]).close().innerToCAG() .extrude({ offset: [0, 0, 1] }); } @@ -10,7 +10,7 @@ function export_outline_fn(){ // creating part 0 of case _export - let _export__part_0 = export_outline_fn(); + let _export__part_0 = export_extrude_1_outline_fn(); // make sure that rotations are relative let _export__part_0_bounds = _export__part_0.getBounds(); diff --git a/test/cli/big/reference/cases/export.jscad b/test/cli/big/reference/cases/export.jscad index 6ccb677..19511e7 100644 --- a/test/cli/big/reference/cases/export.jscad +++ b/test/cli/big/reference/cases/export.jscad @@ -1,4 +1,4 @@ -function export_outline_fn(){ +function export_extrude_1_outline_fn(){ return new CSG.Path2D([[-9,-9],[9,-9]]).appendPoint([9,9]).appendPoint([-9,9]).appendPoint([-9,-9]).close().innerToCAG() .extrude({ offset: [0, 0, 1] }); } @@ -10,7 +10,7 @@ function export_outline_fn(){ // creating part 0 of case export - let export__part_0 = export_outline_fn(); + let export__part_0 = export_extrude_1_outline_fn(); // make sure that rotations are relative let export__part_0_bounds = export__part_0.getBounds(); From 841addb9ad281916f2158d587ebd511f472c18c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 23 Jan 2023 11:00:49 +0100 Subject: [PATCH 073/120] Roadmap update --- roadmap.md | 1 + 1 file changed, 1 insertion(+) diff --git a/roadmap.md b/roadmap.md index 3629cf0..679313a 100644 --- a/roadmap.md +++ b/roadmap.md @@ -14,6 +14,7 @@ ### Minor +- Add full anchor support to individual points (via `adjust`, probably) - Include raw kicad footprint integrations - pull torik's script to be able to convert raw kicad footprints into positionable ergogen ones - have a `dummy` footprint which can just be updated from schematic From c480a33fa30cb72c587bcbc393e48653b6e73827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 23 Jan 2023 12:19:45 +0100 Subject: [PATCH 074/120] Readme postprocessing --- README.md | 88 ++++++++++++++++++++---------- docs/Getting Started.md | 68 ----------------------- docs/Showcase.png => showcase.png | Bin 3 files changed, 60 insertions(+), 96 deletions(-) delete mode 100644 docs/Getting Started.md rename docs/Showcase.png => showcase.png (100%) diff --git a/README.md b/README.md index 06d4bc4..f8b8f8d 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,28 @@ -# Ergogen    [![Badge License]][License] +# Ergogen -***Keyboard Generator*** *build on* ***[Absolem Keyboard]***. +***Ergonomic Keyboard Generator***
-The project aims to provide a common configuration format to
-describe ***ergonomic*** 2D layouts and generate automatic plates,
-cases, as well as un-routed PCBs for them. +The project aims to provide a common configuration format to describe ***ergonomic*** 2D layouts and generate automatic plates, cases, as well as un-routed PCBs for them. The project grew out of (and is an integral part of) the [Absolem keyboard], and shares its [Discord] server as well. -
-
+
+
+
--- -[![Button Demo]][Demo]    -[![Button Getting Started]][Getting Started]    -[![Button Documentation]][Documentation]    +[![Button WebUI]][WebUI] +[![Button Documentation]][Documentation] [![Button Discord]][Discord] --- @@ -34,32 +32,66 @@ cases, as well as un-routed PCBs for them.

+## Getting Started + +Until there's a proper "Getting started" guide, try getting acquainted with **Ergogen** by following these steps in order: + +
+ +1. Read the **[Documentation]**. + + D'uuh. + They're not complete by any measure, but should give you a fairly good idea what you're dealing with here. + +
+ +2. Try one of the web-based deployments. + + [![Button Official]][WebUI]    + [![Button Unofficial]][Unofficial] + + The unofficial deployment is probably better, tbh, and will soon be replacing the official one. + Choose either one, then click things, look at outputs and see if things start to make sense. + + There is no need for you to download the **CLI** unless you want to do one of the following: + + - Preview in-development features + - Use custom modifications + - Contribute code + +
+ +3. Search the [`ergogen`][Topic] topic on GitHub. + + There, you can look at (and reverse engineer) a variety of real life configs using **Ergogen**. + Pop them into the web UI to see what they do, tinker with them and things should start to make more sense. + +
+ +4. If a question persists after all of the above, feel free to ask it over on **[Discord]** and we'll do our best to help you out. + +
+ ## Contributions -Feature ideas, documentation improvements,
-examples, tests, or pull requests welcome! - -*Get in touch on our **[Discord]**, and we can definitely*
-*find something you can help with, if you'd like to.* +Feature ideas, documentation improvements, examples, tests, or pull requests welcome! +Get in touch on our **[Discord]**, and we can definitely find something you can help with, if you'd like to.
-[Badge License]: https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge - -[Absolem Keyboard]: https://zealot.hu/absolem -[Getting Started]: docs/Getting%20Started.md +[Absolem keyboard]: https://zealot.hu/absolem [Documentation]: https://docs.ergogen.xyz -[Discord]: https://discord.gg/nbKcAZB -[Demo]: https://ergogen.xyz - -[License]: LICENSE - +[Discord]: http://discord.ergogen.xyz +[WebUI]: https://ergogen.xyz +[Unofficial]: https://ergogen.cache.works/ +[Topic]: https://github.com/topics/ergogen -[Button Getting Started]: https://img.shields.io/badge/Getting_Started-F94877?style=for-the-badge&logoColor=white&logo=GitHub +[Button WebUI]: https://img.shields.io/badge/Deployment-37a779?style=for-the-badge&logoColor=white&logo=AppleArcade +[Button Unofficial]: https://img.shields.io/badge/Unofficial-yellow?style=for-the-badge +[Button Official]: https://img.shields.io/badge/Official-37a779?style=for-the-badge [Button Documentation]: https://img.shields.io/badge/Documentation-1793D1?style=for-the-badge&logoColor=white&logo=GitBook [Button Discord]: https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logoColor=white&logo=Discord -[Button Demo]: https://img.shields.io/badge/Demo-37a779?style=for-the-badge&logoColor=white&logo=AppleArcade diff --git a/docs/Getting Started.md b/docs/Getting Started.md deleted file mode 100644 index 1497f57..0000000 --- a/docs/Getting Started.md +++ /dev/null @@ -1,68 +0,0 @@ -# Getting Started - -Until a proper 'Getting started' guide has been written,
-try getting familiar with **Ergogen** doing the following: - -
- -1. Read the **[Documentation]**. - - *It isn't complete by any measure, but should give*
- *you a fairly good idea what you are dealing with.* - -
- -2. Try one of the web-based deployments. - - [![Badge Official]][Deployment Official]    - [![Badge Unofficial]][Deployment Unofficial] - -
- - *The unofficial deployment is probably*
- *better and will soon be official as well.* - - #### CLI - - There is no need for you to download the **CLI**
- unless you want to do one of the following: - - - Preview in-development features - - Use custom modifications - - Contribute code - -
- - *Click things, look at outputs and*
- *see if things start to make sense.* - -
- -3. Search the [`ergogen`][Topic] topic on GitHub
- to look at / reverse engineer a variety
- of real life configs using **Ergogen**. - - Pop them into the web UI to see what
- they do, tinker with them and things
- should start to make more sense. - -
- -4. If a question persists after all of the above,
- feel free to ask it over on **[Discord]** and we'll
- do our best to help you out. - -
- - - - -[Badge Unofficial]: https://img.shields.io/badge/Unofficial-E4405F.svg?style=for-the-badge -[Badge Official]: https://img.shields.io/badge/Official-yellow.svg?style=for-the-badge - -[Deployment Unofficial]: https://ergogen.cache.works/ -[Deployment Official]: https://ergogen.xyz - -[Documentation]: https://docs.ergogen.xyz -[Discord]: https://discord.gg/nbKcAZB -[Topic]: https://github.com/topics/ergogen diff --git a/docs/Showcase.png b/showcase.png similarity index 100% rename from docs/Showcase.png rename to showcase.png From 86a74945cae657aee81cb3d26c57d8492bc7a4b8 Mon Sep 17 00:00:00 2001 From: Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> Date: Mon, 23 Jan 2023 11:22:59 +0000 Subject: [PATCH 075/120] Fix typo in error message if using incorrect type for stagger (#75) --- src/points.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/points.js b/src/points.js index d20bf40..4c8b307 100644 --- a/src/points.js +++ b/src/points.js @@ -117,7 +117,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, key.col.name = col_name key.row = row - key.stagger = a.sane(key.stagger, `${key.name}.shift`, 'number')(units) + key.stagger = a.sane(key.stagger, `${key.name}.stagger`, 'number')(units) key.spread = a.sane(key.spread, `${key.name}.spread`, 'number')(units) key.splay = a.sane(key.splay, `${key.name}.splay`, 'number')(units) key.origin = a.xy(key.origin, `${key.name}.origin`)(units) From 75f907917b0af9c6ec7b46edd0f2a5d99c662d1f Mon Sep 17 00:00:00 2001 From: Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> Date: Mon, 23 Jan 2023 13:46:57 +0000 Subject: [PATCH 076/120] Extra test coverage for `expand_shorthand` (#80) --- test/outlines/expand.yaml | 46 +++ ...expand___outlines_joint-name-combo_dxf.dxf | 346 ++++++++++++++++++ .../expand___outlines_shorthand-combo_dxf.dxf | 346 ++++++++++++++++++ 3 files changed, 738 insertions(+) create mode 100644 test/outlines/expand.yaml create mode 100644 test/outlines/expand___outlines_joint-name-combo_dxf.dxf create mode 100644 test/outlines/expand___outlines_shorthand-combo_dxf.dxf diff --git a/test/outlines/expand.yaml b/test/outlines/expand.yaml new file mode 100644 index 0000000..160f737 --- /dev/null +++ b/test/outlines/expand.yaml @@ -0,0 +1,46 @@ +points: + zones: + matrix: {} +outlines: + base: + - what: rectangle + where: true + size: 20 + bound: false + sh_beveled: + - what: outline + name: base + expand: "5]" + sh_round: + - what: outline + name: base + expand: "6)" + sh_pointy: + - what: outline + name: base + expand: "7>" + shorthand-combo: + - "sh_pointy" + - "-sh_round" + - "+sh_beveled" + - "-base" + jnt_beveled: + - what: outline + name: base + expand: 8 + joints: beveled + jnt_round: + - what: outline + name: base + expand: 9 + joints: round + jnt_pointy: + - what: outline + name: base + expand: 10 + joints: pointy + joint-name-combo: + - "jnt_pointy" + - "-jnt_round" + - "+jnt_beveled" + - "-base" diff --git a/test/outlines/expand___outlines_joint-name-combo_dxf.dxf b/test/outlines/expand___outlines_joint-name-combo_dxf.dxf new file mode 100644 index 0000000..f8b2a82 --- /dev/null +++ b/test/outlines/expand___outlines_joint-name-combo_dxf.dxf @@ -0,0 +1,346 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-20 +20 +-20 +11 +20 +21 +-20 +0 +LINE +8 +0 +10 +20 +20 +-20 +11 +20 +21 +20 +0 +LINE +8 +0 +10 +-20 +20 +20 +11 +20 +21 +20 +0 +LINE +8 +0 +10 +-20 +20 +-20 +11 +-20 +21 +20 +0 +LINE +8 +0 +10 +-10 +20 +-19 +11 +10 +21 +-19 +0 +ARC +8 +0 +10 +10 +20 +-10 +40 +9 +50 +270 +51 +360 +0 +LINE +8 +0 +10 +19 +20 +-10 +11 +19 +21 +10 +0 +ARC +8 +0 +10 +10 +20 +10 +40 +9 +50 +0 +51 +90 +0 +LINE +8 +0 +10 +10 +20 +19 +11 +-10 +21 +19 +0 +ARC +8 +0 +10 +-10 +20 +10 +40 +9 +50 +90 +51 +180 +0 +LINE +8 +0 +10 +-19 +20 +10 +11 +-19 +21 +-10 +0 +ARC +8 +0 +10 +-10 +20 +-10 +40 +9 +50 +180 +51 +270 +0 +LINE +8 +0 +10 +-13.3137085 +20 +-18 +11 +13.3137085 +21 +-18 +0 +LINE +8 +0 +10 +13.3137085 +20 +-18 +11 +18 +21 +-13.3137085 +0 +LINE +8 +0 +10 +18 +20 +-13.3137085 +11 +18 +21 +13.3137085 +0 +LINE +8 +0 +10 +13.3137085 +20 +18 +11 +18 +21 +13.3137085 +0 +LINE +8 +0 +10 +-13.3137085 +20 +18 +11 +13.3137085 +21 +18 +0 +LINE +8 +0 +10 +-18 +20 +13.3137085 +11 +-13.3137085 +21 +18 +0 +LINE +8 +0 +10 +-18 +20 +-13.3137085 +11 +-18 +21 +13.3137085 +0 +LINE +8 +0 +10 +-18 +20 +-13.3137085 +11 +-13.3137085 +21 +-18 +0 +LINE +8 +0 +10 +-10 +20 +-10 +11 +10 +21 +-10 +0 +LINE +8 +0 +10 +10 +20 +-10 +11 +10 +21 +10 +0 +LINE +8 +0 +10 +10 +20 +10 +11 +-10 +21 +10 +0 +LINE +8 +0 +10 +-10 +20 +10 +11 +-10 +21 +-10 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/outlines/expand___outlines_shorthand-combo_dxf.dxf b/test/outlines/expand___outlines_shorthand-combo_dxf.dxf new file mode 100644 index 0000000..6a9b92d --- /dev/null +++ b/test/outlines/expand___outlines_shorthand-combo_dxf.dxf @@ -0,0 +1,346 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-17 +20 +-17 +11 +17 +21 +-17 +0 +LINE +8 +0 +10 +17 +20 +-17 +11 +17 +21 +17 +0 +LINE +8 +0 +10 +-17 +20 +17 +11 +17 +21 +17 +0 +LINE +8 +0 +10 +-17 +20 +-17 +11 +-17 +21 +17 +0 +LINE +8 +0 +10 +-10 +20 +-16 +11 +10 +21 +-16 +0 +ARC +8 +0 +10 +10 +20 +-10 +40 +6 +50 +270 +51 +360 +0 +LINE +8 +0 +10 +16 +20 +-10 +11 +16 +21 +10 +0 +ARC +8 +0 +10 +10 +20 +10 +40 +6 +50 +0 +51 +90 +0 +LINE +8 +0 +10 +10 +20 +16 +11 +-10 +21 +16 +0 +ARC +8 +0 +10 +-10 +20 +10 +40 +6 +50 +90 +51 +180 +0 +LINE +8 +0 +10 +-16 +20 +10 +11 +-16 +21 +-10 +0 +ARC +8 +0 +10 +-10 +20 +-10 +40 +6 +50 +180 +51 +270 +0 +LINE +8 +0 +10 +-12.0710678 +20 +-15 +11 +12.0710678 +21 +-15 +0 +LINE +8 +0 +10 +12.0710678 +20 +-15 +11 +15 +21 +-12.0710678 +0 +LINE +8 +0 +10 +15 +20 +-12.0710678 +11 +15 +21 +12.0710678 +0 +LINE +8 +0 +10 +12.0710678 +20 +15 +11 +15 +21 +12.0710678 +0 +LINE +8 +0 +10 +-12.0710678 +20 +15 +11 +12.0710678 +21 +15 +0 +LINE +8 +0 +10 +-15 +20 +12.0710678 +11 +-12.0710678 +21 +15 +0 +LINE +8 +0 +10 +-15 +20 +-12.0710678 +11 +-15 +21 +12.0710678 +0 +LINE +8 +0 +10 +-15 +20 +-12.0710678 +11 +-12.0710678 +21 +-15 +0 +LINE +8 +0 +10 +-10 +20 +-10 +11 +10 +21 +-10 +0 +LINE +8 +0 +10 +10 +20 +-10 +11 +10 +21 +10 +0 +LINE +8 +0 +10 +10 +20 +10 +11 +-10 +21 +10 +0 +LINE +8 +0 +10 +-10 +20 +10 +11 +-10 +21 +-10 +0 +ENDSEC +0 +EOF \ No newline at end of file From b27e10374e1d59caa014763178af0ea3e36cd5d8 Mon Sep 17 00:00:00 2001 From: Anarion <2185791+anarion80@users.noreply.github.com> Date: Mon, 23 Jan 2023 21:21:49 +0100 Subject: [PATCH 077/120] Add array to footprint param types (#76) --- src/pcbs.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/pcbs.js b/src/pcbs.js index 3289d12..d30ef09 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -169,7 +169,7 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, params = prep.extend(params, mirror_overrides) } a.unexpected(params, `${name}.params`, Object.keys(fp.params)) - + // parsing parameters const parsed_params = {} for (const [param_name, param_def] of Object.entries(fp.params)) { @@ -183,6 +183,8 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, parsed_def = {type: 'number', value: a.mathnum(param_def)(units)} } else if (def_type == 'boolean') { parsed_def = {type: 'boolean', value: param_def} + } else if (def_type == 'array') { + parsed_def = {type: 'array', value: param_def} } else if (def_type == 'undefined') { parsed_def = {type: 'net', value: undefined} } @@ -190,14 +192,15 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, // combine default value with potential user override let value = prep.extend(parsed_def.value, params[param_name]) let type = parsed_def.type - + // templating support, with conversion back to raw datatypes const converters = { string: v => v, number: v => a.sane(v, `${name}.params.${param_name}`, 'number')(units), boolean: v => v === 'true', net: v => v, - anchor: v => v + anchor: v => v, + array: v => v } if (a.type(value)() == 'string') { value = u.template(value, point.meta) @@ -205,7 +208,7 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, } // type-specific processing - if (['string', 'number', 'boolean'].includes(type)) { + if (['string', 'number', 'boolean', 'array'].includes(type)) { parsed_params[param_name] = value } else if (type == 'net') { const net = a.sane(value, `${name}.params.${param_name}`, 'string')(units) From c45523f38ad384e006f1f7d126c175e13716f2d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 23 Jan 2023 23:34:06 +0100 Subject: [PATCH 078/120] Getting coverage to 100% --- package-lock.json | 2993 +++++------------ package.json | 3 +- roadmap.md | 1 + src/outlines.js | 21 +- src/pcbs.js | 36 +- src/points.js | 41 +- test/cli/big/reference/pcbs/_export.kicad_pcb | 4 +- test/cli/big/reference/pcbs/export.kicad_pcb | 4 +- test/cli/big/reference/source/canonical.yaml | 3 + test/cli/big/reference/source/raw.txt | 3 + test/fixtures/big.yaml | 3 + test/helpers/mock_footprints.js | 26 + test/helpers/register.js | 10 +- test/index.js | 79 +- test/pcbs/mock_footprints.yaml | 5 + .../mock_footprints___pcbs_main.kicad_pcb | 13 + test/points/autobind.yaml | 24 + test/points/autobind___outlines_none_dxf.dxf | 146 + test/points/autobind___outlines_some_dxf.dxf | 146 + test/points/mirrors.yaml | 15 + test/points/mirrors___demo_dxf.dxf | 288 ++ test/points/mirrors___points.json | 786 +++++ test/points/samename.yaml | 2 + test/points/samename___EXCEPTION.txt | 1 + test/unit/internals.js | 22 + 25 files changed, 2393 insertions(+), 2282 deletions(-) create mode 100644 test/points/autobind.yaml create mode 100644 test/points/autobind___outlines_none_dxf.dxf create mode 100644 test/points/autobind___outlines_some_dxf.dxf create mode 100644 test/points/mirrors___points.json create mode 100644 test/points/samename.yaml create mode 100644 test/points/samename___EXCEPTION.txt create mode 100644 test/unit/internals.js diff --git a/package-lock.json b/package-lock.json index 2f023cb..fa1b4d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "ergogen", "version": "4.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -29,58 +29,64 @@ "glob": "^8.1.0", "mocha": "^10.2.0", "nyc": "^15.1.0", - "rollup": "^3.10.1" + "rollup": "^3.10.1", + "sinon": "^15.0.1" } }, "node_modules/@ampproject/remapping": { - "version": "2.1.2", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.17.7", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.9", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", + "json5": "^2.2.2", "semver": "^6.3.0" }, "engines": { @@ -92,26 +98,43 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.9", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -122,125 +145,142 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.17.9", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.20.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.17.9", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.13", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.17.9", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -250,8 +290,9 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -261,8 +302,9 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -274,37 +316,42 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -313,9 +360,10 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.9", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -335,31 +383,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.9", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.13", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -368,11 +418,13 @@ } }, "node_modules/@babel/types": { - "version": "7.17.0", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -381,12 +433,14 @@ }, "node_modules/@danmarshall/jscad-typings": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -400,8 +454,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -412,8 +467,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -423,8 +479,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -437,8 +494,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -448,16 +506,40 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -469,12 +551,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@rollup/plugin-commonjs": { @@ -544,9 +627,45 @@ } } }, + "node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-7.0.1.tgz", + "integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, "node_modules/@types/bezier-js": { "version": "0.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", + "integrity": "sha512-kXsAlt8e8N6zt9R6LcMYWB1HkBw3q2g+M9BdI/UE+s4agIONuIscQaRCoInH22+Jas3rw8yLUehL2InaZjyNSA==" }, "node_modules/@types/estree": { "version": "1.0.0", @@ -556,23 +675,27 @@ }, "node_modules/@types/node": { "version": "7.10.14", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", + "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" }, "node_modules/@types/opentype.js": { "version": "0.7.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", + "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" }, "node_modules/@types/pdfkit": { "version": "0.7.36", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", "dependencies": { "@types/node": "*" } }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -583,22 +706,25 @@ }, "node_modules/ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -610,9 +736,10 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -623,8 +750,9 @@ }, "node_modules/append-transform": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, - "license": "MIT", "dependencies": { "default-require-extensions": "^3.0.0" }, @@ -634,8 +762,9 @@ }, "node_modules/archy": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true }, "node_modules/argparse": { "version": "1.0.10", @@ -647,33 +776,38 @@ }, "node_modules/assertion-error": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/bezier-js": { "version": "2.6.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", + "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" }, "node_modules/binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -681,8 +815,9 @@ }, "node_modules/braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -692,11 +827,14 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true }, "node_modules/browserslist": { - "version": "4.20.2", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "funding": [ { @@ -708,13 +846,11 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], - "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" @@ -725,8 +861,9 @@ }, "node_modules/caching-transform": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, - "license": "MIT", "dependencies": { "hasha": "^5.0.0", "make-dir": "^3.0.0", @@ -739,14 +876,17 @@ }, "node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001332", + "version": "1.0.30001447", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001447.tgz", + "integrity": "sha512-bdKU1BQDPeEXe9A39xJnGtY0uRq/z5osrnXUw0TcK+EYno45Y+U7QU9HhHEyzvMDffpYadFXi3idnSNkcwLkTw==", "dev": true, "funding": [ { @@ -757,8 +897,7 @@ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/chai": { "version": "4.3.7", @@ -780,8 +919,9 @@ }, "node_modules/chai-as-promised": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dev": true, - "license": "WTFPL", "dependencies": { "check-error": "^1.0.2" }, @@ -791,8 +931,9 @@ }, "node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -806,8 +947,9 @@ }, "node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -817,14 +959,17 @@ }, "node_modules/check-error": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/chokidar": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -832,7 +977,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -851,32 +995,38 @@ }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/clone": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "engines": { "node": ">=0.8" } }, "node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -886,16 +1036,19 @@ }, "node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/commondir": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true }, "node_modules/complex.js": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", + "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", "engines": { "node": "*" }, @@ -906,25 +1059,26 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/convert-source-map": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/core-util-is": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -953,13 +1107,15 @@ }, "node_modules/debug/node_modules/ms": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -982,62 +1138,74 @@ } }, "node_modules/default-require-extensions": { - "version": "3.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", "dev": true, - "license": "MIT", "dependencies": { "strip-bom": "^4.0.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/diff": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/dir-compare": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.0.0.tgz", + "integrity": "sha512-wC7thVKL3V656tO61rbEDE4LTeeYrUC2pAUL00AaXYghBhjjVNRyBlpH6POzb44ZuK23OSrqF6TbSC/QYeqfAg==", "dev": true, - "license": "MIT", "dependencies": { "minimatch": "^3.0.4", "p-limit": "^3.1.0 " } }, "node_modules/electron-to-chromium": { - "version": "1.4.111", - "dev": true, - "license": "ISC" + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/es6-error": { "version": "4.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true }, "node_modules/escalade": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "engines": { "node": ">=6" } }, "node_modules/escape-latex": { "version": "1.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", + "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" }, "node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -1059,13 +1227,15 @@ }, "node_modules/estree-walker": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true }, "node_modules/fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1075,8 +1245,9 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -1091,8 +1262,9 @@ }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1106,16 +1278,18 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/foreground-child": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, - "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^3.0.2" @@ -1126,7 +1300,8 @@ }, "node_modules/fraction.js": { "version": "4.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "engines": { "node": "*" }, @@ -1137,6 +1312,8 @@ }, "node_modules/fromentries": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true, "funding": [ { @@ -1151,8 +1328,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/fs-extra": { "version": "11.1.0", @@ -1169,8 +1345,9 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.2", @@ -1188,31 +1365,35 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-func-name": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -1238,8 +1419,9 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1270,32 +1452,37 @@ }, "node_modules/globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/graceful-fs": { "version": "4.2.10", - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "node_modules/graham_scan": { "version": "1.0.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", + "integrity": "sha512-jL+zq9xTYXxsDIf+qy9aaudRXx/X4sqrOlbFkg1ElqCznhYAQ/wXv8cifgzRvzFopStDeIvny5sIu6jgSjnRww==" }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hasha": { "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, - "license": "MIT", "dependencies": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" @@ -1309,41 +1496,47 @@ }, "node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "node_modules/immediate": { "version": "3.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1351,12 +1544,14 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1366,23 +1561,26 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1392,32 +1590,36 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-reference": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "*" } }, "node_modules/is-stream": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -1427,13 +1629,15 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -1443,33 +1647,38 @@ }, "node_modules/is-windows": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-hook": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "append-transform": "^2.0.0" }, @@ -1479,8 +1688,9 @@ }, "node_modules/istanbul-lib-instrument": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", @@ -1492,17 +1702,17 @@ } }, "node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, - "license": "ISC", "dependencies": { "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", "rimraf": "^3.0.0", - "uuid": "^3.3.3" + "uuid": "^8.3.2" }, "engines": { "node": ">=8" @@ -1510,8 +1720,9 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -1523,8 +1734,9 @@ }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1534,8 +1746,9 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -1545,18 +1758,11 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/istanbul-reports": { - "version": "3.1.4", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -1567,12 +1773,14 @@ }, "node_modules/javascript-natural-sort": { "version": "0.7.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", @@ -1588,8 +1796,9 @@ }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -1610,7 +1819,8 @@ }, "node_modules/jsonfile": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { "universalify": "^2.0.0" }, @@ -1620,7 +1830,8 @@ }, "node_modules/jszip": { "version": "3.10.1", - "license": "(MIT OR GPL-3.0-or-later)", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -1628,9 +1839,16 @@ "setimmediate": "^1.0.5" } }, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, "node_modules/kdbush": { "version": "2.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", + "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" }, "node_modules/kle-serial": { "name": "@ijprest/kle-serial", @@ -1643,15 +1861,17 @@ }, "node_modules/lie": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dependencies": { "immediate": "~3.0.5" } }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -1664,13 +1884,21 @@ }, "node_modules/lodash.flattendeep": { "version": "4.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -1683,13 +1911,23 @@ } }, "node_modules/loupe": { - "version": "2.3.4", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", "dev": true, - "license": "MIT", "dependencies": { "get-func-name": "^2.0.0" } }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/magic-string": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", @@ -1704,8 +1942,9 @@ }, "node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -1756,8 +1995,9 @@ }, "node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1811,6 +2051,17 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/mocha/node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -1878,8 +2129,9 @@ }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -1895,8 +2147,9 @@ }, "node_modules/ms": { "version": "2.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.3", @@ -1910,10 +2163,24 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/nise": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", + "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^10.0.2", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, "node_modules/node-preload": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, - "license": "MIT", "dependencies": { "process-on-spawn": "^1.0.0" }, @@ -1922,22 +2189,25 @@ } }, "node_modules/node-releases": { - "version": "2.0.3", - "dev": true, - "license": "MIT" + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/nyc": { "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, - "license": "ISC", "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", @@ -1976,8 +2246,9 @@ }, "node_modules/nyc/node_modules/cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -1986,8 +2257,9 @@ }, "node_modules/nyc/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -2018,8 +2290,9 @@ }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -2029,8 +2302,9 @@ }, "node_modules/nyc/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2043,8 +2317,9 @@ }, "node_modules/nyc/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -2054,8 +2329,9 @@ }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2067,13 +2343,15 @@ }, "node_modules/nyc/node_modules/y18n": { "version": "4.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "node_modules/nyc/node_modules/yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -2093,8 +2371,9 @@ }, "node_modules/nyc/node_modules/yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -2105,16 +2384,18 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2127,8 +2408,9 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -2141,8 +2423,9 @@ }, "node_modules/p-map": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -2152,16 +2435,18 @@ }, "node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/package-hash": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, - "license": "ISC", "dependencies": { "graceful-fs": "^4.1.15", "hasha": "^5.0.0", @@ -2174,12 +2459,14 @@ }, "node_modules/pako": { "version": "1.0.11", - "license": "(MIT AND Zlib)" + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -2195,29 +2482,48 @@ }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-to-regexp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, "node_modules/pathval": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/picocolors": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -2227,8 +2533,9 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -2238,8 +2545,9 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -2250,8 +2558,9 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -2261,8 +2570,9 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2275,8 +2585,9 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -2286,12 +2597,14 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/process-on-spawn": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, - "license": "MIT", "dependencies": { "fromentries": "^1.2.0" }, @@ -2301,15 +2614,17 @@ }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/readable-stream": { "version": "2.3.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -2322,8 +2637,9 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -2338,8 +2654,9 @@ }, "node_modules/release-zalgo": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, - "license": "ISC", "dependencies": { "es6-error": "^4.0.1" }, @@ -2349,28 +2666,32 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, "node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2419,41 +2740,48 @@ }, "node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/seedrandom": { "version": "3.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, "node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/serialize-javascript": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-blocking": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, "node_modules/setimmediate": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2463,29 +2791,63 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sinon": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.0.1.tgz", + "integrity": "sha512-PZXKc08f/wcA/BMRGBze2Wmw50CWPiAH3E21EOi4B49vJ616vW4DQh4fQrqsYox2aNR/N3kCqLuB0PwwOucQrg==", "dev": true, - "license": "ISC" + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "10.0.2", + "@sinonjs/samsam": "^7.0.1", + "diff": "^5.0.0", + "nise": "^5.1.2", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/source-map": { - "version": "0.5.7", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/spawn-wrap": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^2.0.0", "is-windows": "^1.0.2", @@ -2505,14 +2867,16 @@ }, "node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string-width": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2524,7 +2888,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2534,16 +2899,18 @@ }, "node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -2553,8 +2920,9 @@ }, "node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2567,8 +2935,9 @@ }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -2600,20 +2969,23 @@ }, "node_modules/tiny-emitter": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, "node_modules/to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2632,8 +3004,9 @@ }, "node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } @@ -2648,35 +3021,66 @@ }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/universalify": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "engines": { "node": ">= 10.0.0" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { - "version": "3.4.0", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "license": "MIT", "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2689,8 +3093,9 @@ }, "node_modules/which-module": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true }, "node_modules/workerpool": { "version": "6.2.1", @@ -2700,7 +3105,8 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2715,13 +3121,15 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -2731,11 +3139,18 @@ }, "node_modules/y18n": { "version": "5.0.8", - "license": "ISC", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "engines": { "node": ">=10" } }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "node_modules/yargs": { "version": "17.6.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", @@ -2755,16 +3170,18 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -2777,8 +3194,9 @@ }, "node_modules/yargs-unparser/node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -2788,8 +3206,9 @@ }, "node_modules/yargs-unparser/node_modules/decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -2797,19 +3216,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -2820,8 +3226,9 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -2829,1827 +3236,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.1.2", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.7", - "dev": true - }, - "@babel/core": { - "version": "7.17.9", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.17.9", - "dev": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.17.7", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.17.9", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.17.7", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "dev": true - }, - "@babel/helpers": { - "version": "7.17.9", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.17.9", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.17.9", - "dev": true - }, - "@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, - "@babel/template": { - "version": "7.16.7", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.17.9", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@danmarshall/jscad-typings": { - "version": "1.0.0" - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "dev": true - }, - "@jridgewell/resolve-uri": { - "version": "3.0.5", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.4", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@rollup/plugin-commonjs": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz", - "integrity": "sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.27.0" - } - }, - "@rollup/plugin-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", - "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1" - } - }, - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - } - }, - "@types/bezier-js": { - "version": "0.0.6" - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "@types/node": { - "version": "7.10.14" - }, - "@types/opentype.js": { - "version": "0.7.2" - }, - "@types/pdfkit": { - "version": "0.7.36", - "requires": { - "@types/node": "*" - } - }, - "aggregate-error": { - "version": "3.1.0", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-colors": { - "version": "4.1.1", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1" - }, - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-transform": { - "version": "2.0.0", - "dev": true, - "requires": { - "default-require-extensions": "^3.0.0" - } - }, - "archy": { - "version": "1.0.0", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "assertion-error": { - "version": "1.1.0", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "dev": true - }, - "bezier-js": { - "version": "2.6.1" - }, - "binary-extensions": { - "version": "2.2.0", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "dev": true - }, - "browserslist": { - "version": "4.20.2", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" - } - }, - "caching-transform": { - "version": "4.0.0", - "dev": true, - "requires": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - } - }, - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001332", - "dev": true - }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chai-as-promised": { - "version": "7.1.1", - "dev": true, - "requires": { - "check-error": "^1.0.2" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "check-error": { - "version": "1.0.2", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "dev": true - }, - "cliui": { - "version": "7.0.4", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4" - }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4" - }, - "commondir": { - "version": "1.0.1", - "dev": true - }, - "complex.js": { - "version": "2.1.1" - }, - "concat-map": { - "version": "0.0.1", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-util-is": { - "version": "1.0.3" - }, - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "dev": true - } - } - }, - "decamelize": { - "version": "1.2.0", - "dev": true - }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "default-require-extensions": { - "version": "3.0.0", - "dev": true, - "requires": { - "strip-bom": "^4.0.0" - } - }, - "diff": { - "version": "5.0.0", - "dev": true - }, - "dir-compare": { - "version": "4.0.0", - "dev": true, - "requires": { - "minimatch": "^3.0.4", - "p-limit": "^3.1.0 " - } - }, - "electron-to-chromium": { - "version": "1.4.111", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0" - }, - "es6-error": { - "version": "4.1.1", - "dev": true - }, - "escalade": { - "version": "3.1.1" - }, - "escape-latex": { - "version": "1.2.0" - }, - "escape-string-regexp": { - "version": "4.0.0", - "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "estree-walker": { - "version": "2.0.2", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "5.0.0", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat": { - "version": "5.0.2", - "dev": true - }, - "foreground-child": { - "version": "2.0.0", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, - "fraction.js": { - "version": "4.2.0" - }, - "fromentries": { - "version": "1.3.2", - "dev": true - }, - "fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5" - }, - "get-func-name": { - "version": "2.0.0", - "dev": true - }, - "get-package-type": { - "version": "0.1.0", - "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "glob-parent": { - "version": "5.1.2", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "dev": true - }, - "graceful-fs": { - "version": "4.2.10" - }, - "graham_scan": { - "version": "1.0.4" - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "hasha": { - "version": "5.2.2", - "dev": true, - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - } - }, - "he": { - "version": "1.2.0", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "dev": true - }, - "immediate": { - "version": "3.0.6" - }, - "imurmurhash": { - "version": "0.1.4", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4" - }, - "is-binary-path": { - "version": "2.1.0", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0" - }, - "is-glob": { - "version": "4.0.3", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "dev": true - }, - "is-reference": { - "version": "1.2.1", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "is-stream": { - "version": "2.0.1", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "dev": true - }, - "isarray": { - "version": "1.0.0" - }, - "isexe": { - "version": "2.0.0", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "dev": true - }, - "istanbul-lib-hook": { - "version": "3.0.0", - "dev": true, - "requires": { - "append-transform": "^2.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - } - }, - "istanbul-lib-processinfo": { - "version": "2.0.2", - "dev": true, - "requires": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.4", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "javascript-natural-sort": { - "version": "0.7.1" - }, - "js-tokens": { - "version": "4.0.0", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jsonfile": { - "version": "6.1.0", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jszip": { - "version": "3.10.1", - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "kdbush": { - "version": "2.0.1" - }, - "kle-serial": { - "version": "git+ssh://git@github.com/ergogen/kle-serial.git#61f29f317d87bbfed0b0b7e646e1b91d4384ac02", - "from": "kle-serial@github:ergogen/kle-serial#ergogen", - "requires": { - "json5": "^2.1.0" - } - }, - "lie": { - "version": "3.3.0", - "requires": { - "immediate": "~3.0.5" - } - }, - "locate-path": { - "version": "6.0.0", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash.flattendeep": { - "version": "4.4.0", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "loupe": { - "version": "2.3.4", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" - } - }, - "make-dir": { - "version": "3.1.0", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "makerjs": { - "version": "git+ssh://git@github.com/ergogen/maker.js.git#a0ca32948845efe8ad5c9ca454f1285926853138", - "from": "makerjs@github:ergogen/maker.js#ergogen", - "requires": { - "@danmarshall/jscad-typings": "^1.0.0", - "@types/bezier-js": "^0.0.6", - "@types/node": "^7.0.5", - "@types/opentype.js": "^0.7.0", - "@types/pdfkit": "^0.7.34", - "bezier-js": "^2.1.0", - "clone": "^1.0.2", - "graham_scan": "^1.0.4", - "kdbush": "^2.0.1" - } - }, - "mathjs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.5.0.tgz", - "integrity": "sha512-vJ/+SqWtxjW6/aeDRt8xL3TlOVKqwN15BIyTGVqGbIWuiqgY4SxZ0yLuna82YH9CB757iFP7uJ4m3KvVBX7Qcg==", - "requires": { - "@babel/runtime": "^7.20.6", - "complex.js": "^2.1.1", - "decimal.js": "^10.4.3", - "escape-latex": "^1.2.0", - "fraction.js": "^4.2.0", - "javascript-natural-sort": "^0.7.1", - "seedrandom": "^3.0.5", - "tiny-emitter": "^2.1.0", - "typed-function": "^4.1.0" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - } - } - }, - "yargs": { - "version": "16.2.0", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "ms": { - "version": "2.1.3", - "dev": true - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, - "node-preload": { - "version": "0.2.1", - "dev": true, - "requires": { - "process-on-spawn": "^1.0.0" - } - }, - "node-releases": { - "version": "2.0.3", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "dev": true - }, - "nyc": { - "version": "15.1.0", - "dev": true, - "requires": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "dependencies": { - "cliui": { - "version": "6.0.0", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "once": { - "version": "1.4.0", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-map": { - "version": "3.0.0", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "package-hash": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, - "pako": { - "version": "1.0.11" - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, - "process-nextick-args": { - "version": "2.0.1" - }, - "process-on-spawn": { - "version": "1.0.0", - "dev": true, - "requires": { - "fromentries": "^1.2.0" - } - }, - "randombytes": { - "version": "2.1.0", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "release-zalgo": { - "version": "1.0.0", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "require-directory": { - "version": "2.1.1" - }, - "require-main-filename": { - "version": "2.0.0", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "rollup": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.1.tgz", - "integrity": "sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "safe-buffer": { - "version": "5.1.2" - }, - "seedrandom": { - "version": "3.0.5" - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "dev": true - }, - "setimmediate": { - "version": "1.0.5" - }, - "shebang-command": { - "version": "2.0.0", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "dev": true - }, - "spawn-wrap": { - "version": "2.0.0", - "dev": true, - "requires": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "string_decoder": { - "version": "1.1.1", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "test-exclude": { - "version": "6.0.0", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "tiny-emitter": { - "version": "2.1.0" - }, - "to-fast-properties": { - "version": "2.0.0", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "dev": true - }, - "typed-function": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.0.tgz", - "integrity": "sha512-DGwUl6cioBW5gw2L+6SMupGwH/kZOqivy17E4nsh1JI9fKF87orMmlQx3KISQPmg3sfnOUGlwVkroosvgddrlg==" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "universalify": { - "version": "2.0.0" - }, - "util-deprecate": { - "version": "1.0.2" - }, - "uuid": { - "version": "3.4.0", - "dev": true - }, - "which": { - "version": "2.0.2", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "dev": true - }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "y18n": { - "version": "5.0.8" - }, - "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - } - } - }, - "yargs-parser": { - "version": "20.2.4", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "dev": true - }, - "decamelize": { - "version": "4.0.0", - "dev": true - } - } - }, - "yocto-queue": { - "version": "0.1.0", - "dev": true - } } } diff --git a/package.json b/package.json index 10cc7ae..41358ac 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "glob": "^8.1.0", "mocha": "^10.2.0", "nyc": "^15.1.0", - "rollup": "^3.10.1" + "rollup": "^3.10.1", + "sinon": "^15.0.1" }, "nyc": { "all": true, diff --git a/roadmap.md b/roadmap.md index 679313a..fa31aed 100644 --- a/roadmap.md +++ b/roadmap.md @@ -15,6 +15,7 @@ ### Minor - Add full anchor support to individual points (via `adjust`, probably) +- Allow footprints to access raw array/object fields from points with templating - Include raw kicad footprint integrations - pull torik's script to be able to convert raw kicad footprints into positionable ergogen ones - have a `dummy` footprint which can just be updated from schematic diff --git a/src/outlines.js b/src/outlines.js index f4e7dce..afce975 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -136,20 +136,15 @@ const whats = { outline } -const expand_shorthand = (config, units) => { +const expand_shorthand = (config, name, units) => { if (a.type(config.expand)(units) == 'string') { const prefix = config.expand.slice(0, -1) const suffix = config.expand.slice(-1) - let expand = prefix - let joints = 0 - - if (suffix == ')') ; // noop - else if (suffix == '>') joints = 1 - else if (suffix == ']') joints = 2 - else expand = config.expand - - config.expand = parseFloat(expand) - config.joints = config.joints || joints + const valid_suffixes = [')', '>', ']'] + a.assert(valid_suffixes.includes(suffix), `If field "${name}" is a string, ` + + `it should end with one of [${valid_suffixes.map(s => `'${s}'`).join(', ')}]!`) + config.expand = prefix + config.joints = config.joints || valid_suffixes.indexOf(suffix) } if (a.type(config.joints)(units) == 'string') { @@ -159,7 +154,7 @@ const expand_shorthand = (config, units) => { } } -exports.parse = (config = {}, points = {}, units = {}) => { +exports.parse = (config, points, units) => { // output outlines will be collected here const outlines = {} @@ -201,7 +196,7 @@ exports.parse = (config = {}, points = {}, units = {}) => { const original_adjust = part.adjust // same as above const adjust = start => anchor(original_adjust || {}, `${name}.adjust`, points, start)(units) const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) - expand_shorthand(part, units) + expand_shorthand(part, `${name}.expand`, units) const expand = a.sane(part.expand || 0, `${name}.expand`, 'number')(units) const joints = a.in(a.sane(part.joints || 0, `${name}.joints`, 'number')(units), `${name}.joints`, [0, 1, 2]) const scale = a.sane(part.scale || 1, `${name}.scale`, 'number')(units) diff --git a/src/pcbs.js b/src/pcbs.js index d30ef09..e49c86e 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -115,7 +115,7 @@ const kicad_netclass = ` ) ` -const makerjs2kicad = exports._makerjs2kicad = (model, layer='Edge.Cuts') => { +const makerjs2kicad = exports._makerjs2kicad = (model, layer) => { const grs = [] const xy = val => `${val[0]} ${-val[1]}` m.model.walk(model, { @@ -185,30 +185,40 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, parsed_def = {type: 'boolean', value: param_def} } else if (def_type == 'array') { parsed_def = {type: 'array', value: param_def} - } else if (def_type == 'undefined') { + } else if (def_type == 'object') { + // parsed param definitions also expand to an object + // so to detect whether this is an arbitrary object, + // we first have to make sure it's not an expanded param def + // (this has to be a heuristic, but should be pretty reliable) + const defarr = Object.keys(param_def) + const already_expanded = defarr.length == 2 && defarr.includes('type') && defarr.includes('value') + if (!already_expanded) { + parsed_def = {type: 'object', value: param_def} + } + } else { parsed_def = {type: 'net', value: undefined} } // combine default value with potential user override - let value = prep.extend(parsed_def.value, params[param_name]) - let type = parsed_def.type + let value = params[param_name] !== undefined ? params[param_name] : parsed_def.value + const type = parsed_def.type + a.in(type, `${name}.params.${param_name}.type`, [ + 'string', 'number', 'boolean', 'array', 'object', 'net', 'anchor' + ]) // templating support, with conversion back to raw datatypes const converters = { string: v => v, number: v => a.sane(v, `${name}.params.${param_name}`, 'number')(units), - boolean: v => v === 'true', - net: v => v, - anchor: v => v, - array: v => v + boolean: v => v === 'true' } - if (a.type(value)() == 'string') { + if (a.type(value)() == 'string' && Object.keys(converters).includes(type)) { value = u.template(value, point.meta) value = converters[type](value) } // type-specific processing - if (['string', 'number', 'boolean', 'array'].includes(type)) { + if (['string', 'number', 'boolean', 'array', 'object'].includes(type)) { parsed_params[param_name] = value } else if (type == 'net') { const net = a.sane(value, `${name}.params.${param_name}`, 'string')(units) @@ -218,8 +228,8 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, index: index, str: `(net ${index} "${net}")` } - } else if (type == 'anchor') { - let parsed_anchor = anchor(value || {}, `${name}.params.${param_name}`, points, point)(units) + } else { // anchor + let parsed_anchor = anchor(value, `${name}.params.${param_name}`, points, point)(units) parsed_anchor.y = -parsed_anchor.y // kicad mirror, as per usual parsed_params[param_name] = parsed_anchor } @@ -236,7 +246,7 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, const sign = point.meta.mirrored ? -1 : 1 return `${sign * x} ${y}` } - const xyfunc = (x, y, resist=true) => { + const xyfunc = (x, y, resist) => { const new_anchor = anchor({ shift: [x, -y], resist: resist diff --git a/src/points.js b/src/points.js index 4c8b307..39b5752 100644 --- a/src/points.js +++ b/src/points.js @@ -244,7 +244,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, const parse_axis = exports._parse_axis = (config, name, points, units) => { if (!['number', 'undefined'].includes(a.type(config)(units))) { - const mirror_obj = a.sane(config || {}, name, 'object')() + const mirror_obj = a.sane(config, name, 'object')() const distance = a.sane(mirror_obj.distance || 0, `${name}.distance`, 'number')(units) delete mirror_obj.distance let axis = anchor_lib.parse(mirror_obj, name, points)(units).x @@ -254,21 +254,18 @@ const parse_axis = exports._parse_axis = (config, name, points, units) => { } const perform_mirror = exports._perform_mirror = (point, axis) => { - if (axis !== undefined) { - point.meta.mirrored = false - if (point.meta.asym == 'source') return ['', null] - const mp = point.clone().mirror(axis) - const mirrored_name = `mirror_${point.meta.name}` - mp.meta = prep.extend(mp.meta, mp.meta.mirror || {}) - mp.meta.name = mirrored_name - mp.meta.colrow = `mirror_${mp.meta.colrow}` - mp.meta.mirrored = true - if (point.meta.asym == 'clone') { - point.meta.skip = true - } - return [mirrored_name, mp] + point.meta.mirrored = false + if (point.meta.asym == 'source') return ['', null] + const mp = point.clone().mirror(axis) + const mirrored_name = `mirror_${point.meta.name}` + mp.meta = prep.extend(mp.meta, mp.meta.mirror || {}) + mp.meta.name = mirrored_name + mp.meta.colrow = `mirror_${mp.meta.colrow}` + mp.meta.mirrored = true + if (point.meta.asym == 'clone') { + point.meta.skip = true } - return ['', null] + return [mirrored_name, mp] } exports.parse = (config, units) => { @@ -300,13 +297,11 @@ exports.parse = (config, units) => { // simplifying the names in individual point "zones" and single-key columns while (Object.keys(new_points).some(k => k.endsWith('_default'))) { - for (const key of Object.keys(new_points)) { - if (key.endsWith('_default')) { - const new_key = key.slice(0, -8) - new_points[new_key] = new_points[key] - new_points[new_key].meta.name = new_key - delete new_points[key] - } + for (const key of Object.keys(new_points).filter(k => k.endsWith('_default'))) { + const new_key = key.slice(0, -8) + new_points[new_key] = new_points[key] + new_points[new_key].meta.name = new_key + delete new_points[key] } } @@ -352,7 +347,7 @@ exports.parse = (config, units) => { const global_axis = parse_axis(global_mirror, `points.mirror`, points, units) const global_mirrored_points = {} for (const point of Object.values(points)) { - if (global_axis !== undefined && point.mirrored === undefined) { + if (global_axis !== undefined && point.meta.mirrored === undefined) { const [mname, mp] = perform_mirror(point, global_axis) if (mp) { global_mirrored_points[mname] = mp diff --git a/test/cli/big/reference/pcbs/_export.kicad_pcb b/test/cli/big/reference/pcbs/_export.kicad_pcb index 8644559..53faa54 100644 --- a/test/cli/big/reference/pcbs/_export.kicad_pcb +++ b/test/cli/big/reference/pcbs/_export.kicad_pcb @@ -5,8 +5,8 @@ (page A3) (title_block (title _export) - (rev v1.0.0) - (company Unknown) + (rev v3.14) + (company MrZealot) ) (general diff --git a/test/cli/big/reference/pcbs/export.kicad_pcb b/test/cli/big/reference/pcbs/export.kicad_pcb index d2e5a7b..e52b3b8 100644 --- a/test/cli/big/reference/pcbs/export.kicad_pcb +++ b/test/cli/big/reference/pcbs/export.kicad_pcb @@ -5,8 +5,8 @@ (page A3) (title_block (title export) - (rev v1.0.0) - (company Unknown) + (rev v3.14) + (company MrZealot) ) (general diff --git a/test/cli/big/reference/source/canonical.yaml b/test/cli/big/reference/source/canonical.yaml index 41858d8..409691a 100644 --- a/test/cli/big/reference/source/canonical.yaml +++ b/test/cli/big/reference/source/canonical.yaml @@ -1,3 +1,6 @@ +meta: + author: MrZealot + version: v3.14 units: a: 28 + u points: diff --git a/test/cli/big/reference/source/raw.txt b/test/cli/big/reference/source/raw.txt index 9d6d2e7..843cf13 100644 --- a/test/cli/big/reference/source/raw.txt +++ b/test/cli/big/reference/source/raw.txt @@ -1,3 +1,6 @@ +meta: + author: MrZealot + version: v3.14 units: a: 28 + u points.zones.matrix: diff --git a/test/fixtures/big.yaml b/test/fixtures/big.yaml index 9d6d2e7..843cf13 100644 --- a/test/fixtures/big.yaml +++ b/test/fixtures/big.yaml @@ -1,3 +1,6 @@ +meta: + author: MrZealot + version: v3.14 units: a: 28 + u points.zones.matrix: diff --git a/test/helpers/mock_footprints.js b/test/helpers/mock_footprints.js index 788628d..0854335 100644 --- a/test/helpers/mock_footprints.js +++ b/test/helpers/mock_footprints.js @@ -107,6 +107,32 @@ exports.inject = (ergogen) => { } }) + ergogen.inject('footprint', 'arrobj_test', { + params: { + designator: 'T', + side: 'F', + start: {x: 0, y: 0}, + end: [[1, 0], [0, 1]] + }, + body: p => { + lines = '' + for (const item of p.end) { + lines += `(fp_line (start ${p.start.x} ${p.start.y}) (end ${item[0]} ${item[1]}) (layer Dwgs.User) (width 0.05))\n` + } + return ` + + (module arrobj_test (layer ${p.side}.Cu) (tedit 5CF31DEF) + + ${p.at /* parametric position */} + + ${lines} + + ) + + ` + } + }) + ergogen.inject('references_test', { params: {}, body: p => { diff --git a/test/helpers/register.js b/test/helpers/register.js index 8007d73..36a7e79 100644 --- a/test/helpers/register.js +++ b/test/helpers/register.js @@ -1,4 +1,12 @@ global.chai = require('chai') global.chai.use(require('chai-as-promised')) global.expect = global.chai.expect -global.should = global.chai.should() \ No newline at end of file +global.should = global.chai.should() +global.sinon = require('sinon') + +// Restore the default sandbox after every test +exports.mochaHooks = { + afterEach() { + sinon.restore() + } +} \ No newline at end of file diff --git a/test/index.js b/test/index.js index 5d60974..d77df5a 100644 --- a/test/index.js +++ b/test/index.js @@ -9,6 +9,7 @@ require('./helpers/mock_footprints').inject(ergogen) let what = process.env.npm_config_what const dump = process.env.npm_config_dump +const lineends = /(?:\r\n|\r|\n)/g @@ -30,6 +31,19 @@ for (const unit of glob.sync(path.join(__dirname, 'unit', '*.js'))) { // as well as individual tests using slash-notation (like `points/default`) // the --dump switch can output the new results, overriding the old reference +const dump_structure = (obj, depth=-1, prefix='', breadcrumbs=[]) => { + if (a.type(obj)() != 'object') { + console.log(prefix + breadcrumbs.join('_')) + return + } + if (depth == 0) return + for (const [key, val] of Object.entries(obj)) { + breadcrumbs.push(key) + dump_structure(val, depth-1, prefix, breadcrumbs) + breadcrumbs.pop() + } +} + const cap = s => s.charAt(0).toUpperCase() + s.slice(1) const test = function(input_path) { @@ -37,33 +51,52 @@ const test = function(input_path) { this.slow(120000) title = path.basename(input_path, '.yaml').split('_').join(' ') it(title, async function() { + const input = yaml.load(fs.readFileSync(input_path).toString()) + const base = path.join(path.dirname(input_path), path.basename(input_path, '.yaml')) + const references = glob.sync(base + '___*') + + // handle deliberately wrong inputs + const exception = base + '___EXCEPTION.txt' + if (fs.existsSync(exception)) { + const exception_snippet = fs.readFileSync(exception).toString() + return await ergogen.process(input, true).should.be.rejectedWith(exception_snippet) + } + const output = await ergogen.process(input, true) // compare output vs. reference - const base = path.join(path.dirname(input_path), path.basename(input_path, '.yaml')) - for (const expected_path of glob.sync(base + '___*')) { - let expected = fs.readFileSync(expected_path).toString() - if (expected_path.endsWith('.json')) { - expected = JSON.parse(expected) - } - const comp_path = expected_path.split('___')[1].split('.')[0].split('_').join('.') - const output_part = u.deep(output, comp_path) - if (dump) { - if (a.type(output_part)() == 'string') { - fs.writeFileSync(expected_path, output_part) - } else { - fs.writeJSONSync(expected_path, output_part, {spaces: 4}) + if (references.length) { + for (const expected_path of references) { + let expected = fs.readFileSync(expected_path).toString() + if (expected_path.endsWith('.json')) { + expected = JSON.parse(expected) } - } else { - if (a.type(output_part)() == 'string') { - const parse_out = output_part.replace(/(?:\r\n|\r|\n)/g,"\n") - const parse_exp = expected.replace(/(?:\r\n|\r|\n)/g,"\n") - parse_out.should.deep.equal(parse_exp) + const comp_path = expected_path.split('___')[1].split('.')[0].split('_').join('.') + const output_part = u.deep(output, comp_path) + if (dump) { + if (a.type(output_part)() == 'string') { + fs.writeFileSync(expected_path, output_part) + } else { + fs.writeJSONSync(expected_path, output_part, {spaces: 4}) + } } else { - output_part.should.deep.equal(expected) + if (a.type(output_part)() == 'string') { + const parse_out = output_part.replace(lineends, '\n') + const parse_exp = expected.replace(lineends, '\n') + parse_out.should.deep.equal(parse_exp) + } else { + // JSON can hide negative zeroes, for example, so we canonical-ize first + const canonical_part = JSON.parse(JSON.stringify(output_part)) + canonical_part.should.deep.equal(expected) + } } } + + // explicit dump-ing above only works, if there are already files with the right name + // if there aren't, dump now outputs a list of candidates that could be referenced + } else if (dump) { + dump_structure(output, 3, base + '___') } }) } @@ -140,17 +173,17 @@ for (let w of cli_what) { } const comp_res = dircompare.compareSync(output_path, ref_path, { compareContent: true, + ignoreLineEnding: true, compareFileSync: dircompare.fileCompareHandlers.lineBasedFileCompare.compareSync, - compareFileAsync: dircompare.fileCompareHandlers.lineBasedFileCompare.compareAsync, - ignoreLineEnding: true + compareFileAsync: dircompare.fileCompareHandlers.lineBasedFileCompare.compareAsync }) if (dump) { fs.moveSync(output_path, ref_path, {overwrite: true}) } else { fs.removeSync(output_path) } - const parse_act_log = actual_log.replace(/(?:\r\n|\r|\n)/g,"\n") - const parse_ref_log = ref_log.replace(/(?:\r\n|\r|\n)/g,"\n") + const parse_act_log = actual_log.replace(lineends, '\n') + const parse_ref_log = ref_log.replace(lineends, '\n') parse_act_log.should.equal(parse_ref_log) comp_res.same.should.be.true // deliberately incorrect execution diff --git a/test/pcbs/mock_footprints.yaml b/test/pcbs/mock_footprints.yaml index 8eb2df9..b46d95f 100644 --- a/test/pcbs/mock_footprints.yaml +++ b/test/pcbs/mock_footprints.yaml @@ -39,3 +39,8 @@ pcbs: what: anchor_test params: end: matrix + arrobj: + what: arrobj_test + params: + start: {x: 5, y: 5} + end: [[6, 6], [7, 7]] diff --git a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb index 37fc693..7ce5985 100644 --- a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb +++ b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb @@ -242,6 +242,19 @@ ) + + + (module arrobj_test (layer F.Cu) (tedit 5CF31DEF) + + (at 0 0 0) + + (fp_line (start 5 5) (end 6 6) (layer Dwgs.User) (width 0.05)) +(fp_line (start 5 5) (end 7 7) (layer Dwgs.User) (width 0.05)) + + + ) + + (gr_line (start -9.5 9.5) (end 9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 9.5 9.5) (end 9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 9.5 -9.5) (end -9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) diff --git a/test/points/autobind.yaml b/test/points/autobind.yaml new file mode 100644 index 0000000..0e61c63 --- /dev/null +++ b/test/points/autobind.yaml @@ -0,0 +1,24 @@ +points.zones: + none: + key: + autobind: 0 + columns: + a: + b: + some: + key: + autobind: 1 + columns: + a: + b: +outlines: + none: + - what: rectangle + where: /none_.*/ + size: 5 + bound: true + some: + - what: rectangle + where: /some_.*/ + size: 5 + bound: true \ No newline at end of file diff --git a/test/points/autobind___outlines_none_dxf.dxf b/test/points/autobind___outlines_none_dxf.dxf new file mode 100644 index 0000000..93a857b --- /dev/null +++ b/test/points/autobind___outlines_none_dxf.dxf @@ -0,0 +1,146 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-2.5 +20 +-2.5 +11 +2.5 +21 +-2.5 +0 +LINE +8 +0 +10 +2.5 +20 +-2.5 +11 +2.5 +21 +2.5 +0 +LINE +8 +0 +10 +2.5 +20 +2.5 +11 +-2.5 +21 +2.5 +0 +LINE +8 +0 +10 +-2.5 +20 +2.5 +11 +-2.5 +21 +-2.5 +0 +LINE +8 +0 +10 +16.5 +20 +-2.5 +11 +21.5 +21 +-2.5 +0 +LINE +8 +0 +10 +21.5 +20 +-2.5 +11 +21.5 +21 +2.5 +0 +LINE +8 +0 +10 +21.5 +20 +2.5 +11 +16.5 +21 +2.5 +0 +LINE +8 +0 +10 +16.5 +20 +2.5 +11 +16.5 +21 +-2.5 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/points/autobind___outlines_some_dxf.dxf b/test/points/autobind___outlines_some_dxf.dxf new file mode 100644 index 0000000..46d46c2 --- /dev/null +++ b/test/points/autobind___outlines_some_dxf.dxf @@ -0,0 +1,146 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-2.5 +20 +-2.5 +11 +3.5 +21 +-2.5 +0 +LINE +8 +0 +10 +-2.5 +20 +2.5 +11 +3.5 +21 +2.5 +0 +LINE +8 +0 +10 +-2.5 +20 +2.5 +11 +-2.5 +21 +-2.5 +0 +LINE +8 +0 +10 +3.5 +20 +-2.5 +11 +3.5 +21 +2.5 +0 +LINE +8 +0 +10 +15.5 +20 +-2.5 +11 +21.5 +21 +-2.5 +0 +LINE +8 +0 +10 +21.5 +20 +-2.5 +11 +21.5 +21 +2.5 +0 +LINE +8 +0 +10 +15.5 +20 +2.5 +11 +21.5 +21 +2.5 +0 +LINE +8 +0 +10 +15.5 +20 +-2.5 +11 +15.5 +21 +2.5 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/points/mirrors.yaml b/test/points/mirrors.yaml index a38565b..eb95a42 100644 --- a/test/points/mirrors.yaml +++ b/test/points/mirrors.yaml @@ -13,3 +13,18 @@ points: rows: bottom: top: + other: + anchor: + ref: matrix_right_top + shift: [100, 100] + # default mirror object, ref = [0, 0], distance = 0 + mirror: {} + columns: + left: + rows: + bottom.asym: source + top.asym: clone + right: + rows: + bottom: + top: diff --git a/test/points/mirrors___demo_dxf.dxf b/test/points/mirrors___demo_dxf.dxf index 799f5bd..e1c7ea2 100644 --- a/test/points/mirrors___demo_dxf.dxf +++ b/test/points/mirrors___demo_dxf.dxf @@ -193,6 +193,294 @@ LINE 8 0 10 +110 +20 +128 +11 +128 +21 +128 +0 +LINE +8 +0 +10 +128 +20 +128 +11 +128 +21 +110 +0 +LINE +8 +0 +10 +128 +20 +110 +11 +110 +21 +110 +0 +LINE +8 +0 +10 +110 +20 +110 +11 +110 +21 +128 +0 +LINE +8 +0 +10 +129 +20 +128 +11 +147 +21 +128 +0 +LINE +8 +0 +10 +147 +20 +128 +11 +147 +21 +110 +0 +LINE +8 +0 +10 +147 +20 +110 +11 +129 +21 +110 +0 +LINE +8 +0 +10 +129 +20 +110 +11 +129 +21 +128 +0 +LINE +8 +0 +10 +129 +20 +147 +11 +147 +21 +147 +0 +LINE +8 +0 +10 +147 +20 +147 +11 +147 +21 +129 +0 +LINE +8 +0 +10 +147 +20 +129 +11 +129 +21 +129 +0 +LINE +8 +0 +10 +129 +20 +129 +11 +129 +21 +147 +0 +LINE +8 +0 +10 +-128 +20 +147 +11 +-110 +21 +147 +0 +LINE +8 +0 +10 +-110 +20 +147 +11 +-110 +21 +129 +0 +LINE +8 +0 +10 +-110 +20 +129 +11 +-128 +21 +129 +0 +LINE +8 +0 +10 +-128 +20 +129 +11 +-128 +21 +147 +0 +LINE +8 +0 +10 +-147 +20 +128 +11 +-129 +21 +128 +0 +LINE +8 +0 +10 +-129 +20 +128 +11 +-129 +21 +110 +0 +LINE +8 +0 +10 +-129 +20 +110 +11 +-147 +21 +110 +0 +LINE +8 +0 +10 +-147 +20 +110 +11 +-147 +21 +128 +0 +LINE +8 +0 +10 +-147 +20 +147 +11 +-129 +21 +147 +0 +LINE +8 +0 +10 +-129 +20 +147 +11 +-129 +21 +129 +0 +LINE +8 +0 +10 +-129 +20 +129 +11 +-147 +21 +129 +0 +LINE +8 +0 +10 +-147 +20 +129 +11 +-147 +21 +147 +0 +LINE +8 +0 +10 48.05 20 28 diff --git a/test/points/mirrors___points.json b/test/points/mirrors___points.json new file mode 100644 index 0000000..7893290 --- /dev/null +++ b/test/points/mirrors___points.json @@ -0,0 +1,786 @@ +{ + "matrix_left_bottom": { + "x": 0, + "y": 0, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "source", + "colrow": "left_bottom", + "name": "matrix_left_bottom", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "row": "bottom", + "bind": [ + 10, + 10, + 0, + 0 + ], + "mirrored": false + } + }, + "matrix_right_bottom": { + "x": 19, + "y": 0, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "right_bottom", + "name": "matrix_right_bottom", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": {}, + "key": {}, + "name": "right" + }, + "row": "bottom", + "bind": [ + 10, + 0, + 0, + 10 + ], + "mirrored": false + } + }, + "matrix_right_top": { + "x": 19, + "y": 19, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "right_top", + "name": "matrix_right_top", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": {}, + "key": {}, + "name": "right" + }, + "row": "top", + "bind": [ + 0, + 0, + 10, + 10 + ], + "mirrored": false + } + }, + "other_left_bottom": { + "x": 119, + "y": 119, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "source", + "colrow": "left_bottom", + "name": "other_left_bottom", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "other" + }, + "col": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "row": "bottom", + "bind": [ + 10, + 10, + 0, + 0 + ], + "mirrored": false + } + }, + "other_right_bottom": { + "x": 138, + "y": 119, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "right_bottom", + "name": "other_right_bottom", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "other" + }, + "col": { + "rows": {}, + "key": {}, + "name": "right" + }, + "row": "bottom", + "bind": [ + 10, + 0, + 0, + 10 + ], + "mirrored": false + } + }, + "other_right_top": { + "x": 138, + "y": 138, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "right_top", + "name": "other_right_top", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "other" + }, + "col": { + "rows": {}, + "key": {}, + "name": "right" + }, + "row": "top", + "bind": [ + 0, + 0, + 10, + 10 + ], + "mirrored": false + } + }, + "mirror_other_left_top": { + "x": -119, + "y": 138, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "clone", + "colrow": "mirror_left_top", + "name": "mirror_other_left_top", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "other" + }, + "col": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "row": "top", + "bind": [ + 0, + 10, + 10, + 0 + ], + "mirrored": true + } + }, + "mirror_other_right_bottom": { + "x": -138, + "y": 119, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "mirror_right_bottom", + "name": "mirror_other_right_bottom", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "other" + }, + "col": { + "rows": {}, + "key": {}, + "name": "right" + }, + "row": "bottom", + "bind": [ + 10, + 0, + 0, + 10 + ], + "mirrored": true + } + }, + "mirror_other_right_top": { + "x": -138, + "y": 138, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "mirror_right_top", + "name": "mirror_other_right_top", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "other" + }, + "col": { + "rows": {}, + "key": {}, + "name": "right" + }, + "row": "top", + "bind": [ + 0, + 0, + 10, + 10 + ], + "mirrored": true + } + }, + "mirror_matrix_left_top": { + "x": 57.05, + "y": 19, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "clone", + "colrow": "mirror_left_top", + "name": "mirror_matrix_left_top", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "row": "top", + "bind": [ + 0, + 10, + 10, + 0 + ], + "mirrored": true + } + }, + "mirror_matrix_right_bottom": { + "x": 38.05, + "y": 0, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "mirror_right_bottom", + "name": "mirror_matrix_right_bottom", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": {}, + "key": {}, + "name": "right" + }, + "row": "bottom", + "bind": [ + 10, + 0, + 0, + 10 + ], + "mirrored": true + } + }, + "mirror_matrix_right_top": { + "x": 38.05, + "y": 19, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "mirror_right_top", + "name": "mirror_matrix_right_top", + "zone": { + "columns": { + "left": { + "rows": { + "bottom": { + "asym": "source" + }, + "top": { + "asym": "clone" + } + }, + "key": {}, + "name": "left" + }, + "right": null + }, + "rows": { + "bottom": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": {}, + "key": {}, + "name": "right" + }, + "row": "top", + "bind": [ + 0, + 0, + 10, + 10 + ], + "mirrored": true + } + } +} diff --git a/test/points/samename.yaml b/test/points/samename.yaml new file mode 100644 index 0000000..0e365ae --- /dev/null +++ b/test/points/samename.yaml @@ -0,0 +1,2 @@ +points.zones.matrix.key.name: samename +points.zones.other.key.name: samename diff --git a/test/points/samename___EXCEPTION.txt b/test/points/samename___EXCEPTION.txt new file mode 100644 index 0000000..daec189 --- /dev/null +++ b/test/points/samename___EXCEPTION.txt @@ -0,0 +1 @@ +defined more than once \ No newline at end of file diff --git a/test/unit/internals.js b/test/unit/internals.js new file mode 100644 index 0000000..2449d34 --- /dev/null +++ b/test/unit/internals.js @@ -0,0 +1,22 @@ +const m = require('makerjs') +const pcb_lib = require('../../src/pcbs') +const ergogen = require('../../src/ergogen') + +describe('Internals', function() { + + it('makerjs2kicad', function() { + // warn on unknown path type + sinon.stub(m.model, 'walk').callsFake(function(model, config) { + config.onPath({pathContext: {type: 'nonexistent'}}) + }) + pcb_lib._makerjs2kicad.bind(this).should.throw("Can't convert path type") + }) + + it('injection', function() { + // warn on unknown injection type + ergogen.inject.bind(this, 'nonexistent', 'name', 'value').should.throw('Unknown injection type') + }) +}) + + + From 480c362c1e3dd9eb8e2cc7eb87cc7bfbae1b8136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 30 Jan 2023 14:57:24 +0100 Subject: [PATCH 079/120] Preprocessing bugfix --- roadmap.md | 2 ++ src/prepare.js | 5 ++++- test/unit/prepare.js | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/roadmap.md b/roadmap.md index fa31aed..f8dea91 100644 --- a/roadmap.md +++ b/roadmap.md @@ -14,7 +14,9 @@ ### Minor +- Support "direct" anchors, as in, recognize num arrays and parse them as x/y/r - Add full anchor support to individual points (via `adjust`, probably) +- Handle unnecessary (but seemingly consistent, so easy to confuse) `key` subfield of row-level overrides - Allow footprints to access raw array/object fields from points with templating - Include raw kicad footprint integrations - pull torik's script to be able to convert raw kicad footprints into positionable ergogen ones diff --git a/src/prepare.js b/src/prepare.js index 2314542..48edd7f 100644 --- a/src/prepare.js +++ b/src/prepare.js @@ -42,11 +42,14 @@ const traverse = exports.traverse = (config, root, breadcrumbs, op) => { } return result } else if (a.type(config)() == 'array') { + // needed so that arrays can set output the same way as objects within ops + const dummy = {} const result = [] let index = 0 for (const val of config) { breadcrumbs.push(`[${index}]`) - result[index] = traverse(val, root, breadcrumbs, op) + op(dummy, 'dummykey', traverse(val, root, breadcrumbs, op), root, breadcrumbs) + result[index] = dummy.dummykey breadcrumbs.pop() index++ } diff --git a/test/unit/prepare.js b/test/unit/prepare.js index 225e0da..0b416f5 100644 --- a/test/unit/prepare.js +++ b/test/unit/prepare.js @@ -24,6 +24,7 @@ describe('Prepare', function() { }) it('inherit', function() { + // normal case p.inherit({ a: { x: 1, @@ -43,6 +44,23 @@ describe('Prepare', function() { z: 3, w: 4 }) + // should apply to objects within arrays as well! + p.inherit({ + a: { + x: 1, + y: 2 + }, + b: [ + { + $extends: 'a', + z: 3 + } + ] + }).b[0].should.deep.equal({ + x: 1, + y: 2, + z: 3 + }) }) it('parameterize', function() { From f0d22328cd155bc2938298a31aed61132ae6a523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Thu, 9 Feb 2023 23:50:18 +0100 Subject: [PATCH 080/120] Filter/mirror bugfix --- src/filter.js | 16 ++++-- src/point.js | 7 +++ .../mock_footprints___pcbs_main.kicad_pcb | 52 ++++--------------- test/unit/filter.js | 38 ++++++++------ 4 files changed, 52 insertions(+), 61 deletions(-) diff --git a/src/filter.js b/src/filter.js index ca1ef01..397dfd3 100644 --- a/src/filter.js +++ b/src/filter.js @@ -123,7 +123,11 @@ exports.parse = (config, name, points={}, units={}, asym='source') => { } if (['clone', 'both'].includes(asym)) { // this is strict: if the ref of the anchor doesn't have a mirror pair, it will error out - result.push(anchor(config, name, points, undefined, true)(units)) + // also, we check for duplicates as ref-less anchors mirror to themselves + const clone = anchor(config, name, points, undefined, true)(units) + if (result.every(p => !p.equals(clone))) { + result.push(clone) + } } // otherwise, it is treated as a condition to filter all available points @@ -132,9 +136,15 @@ exports.parse = (config, name, points={}, units={}, asym='source') => { if (['source', 'both'].includes(asym)) { result = result.concat(source) } - if (['source', 'both'].includes(asym)) { + if (['clone', 'both'].includes(asym)) { // this is permissive: we only include mirrored versions if they exist, and don't fuss if they don't - result = result.concat(source.map(p => points[anchor_lib.mirror(p.meta.name)]).filter(p => !!p)) + // also, we check for duplicates as clones can potentially refer back to their sources, too + const pool = result.map(p => p.meta.name) + result = result.concat( + source.map(p => points[anchor_lib.mirror(p.meta.name)]) + .filter(p => !!p) + .filter(p => !pool.includes(p.meta.name)) + ) } } diff --git a/src/point.js b/src/point.js index 160e1fa..27e538a 100644 --- a/src/point.js +++ b/src/point.js @@ -76,4 +76,11 @@ module.exports = class Point { const dy = other.y - this.y return -Math.atan2(dx, dy) * (180 / Math.PI) } + + equals(other) { + return this.x === other.x + && this.y === other.y + && this.r === other.r + && JSON.stringify(this.meta) === JSON.stringify(other.meta) + } } diff --git a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb index 7ce5985..6cde5ae 100644 --- a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb +++ b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb @@ -94,9 +94,9 @@ (net 0 "") (net 1 "P1") -(net 2 "T6_1") -(net 3 "T6_2") -(net 4 "T6_3") +(net 2 "T4_1") +(net 3 "T4_2") +(net 4 "T4_3") (net_class Default "This is the default net class." (clearance 0.2) @@ -107,9 +107,9 @@ (uvia_drill 0.1) (add_net "") (add_net "P1") -(add_net "T6_1") -(add_net "T6_2") -(add_net "T6_3") +(add_net "T4_1") +(add_net "T4_2") +(add_net "T4_3") ) @@ -148,40 +148,6 @@ - (module trace_test (layer B.Cu) (tedit 5CF31DEF) - - (at 19 -1 -30) - - (pad 1 smd rect (at 0 0 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - (pad 2 smd rect (at -5 5 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - ) - - (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.475) (layer B.Cu) (net 1)) - - - - - (module trace_test (layer F.Cu) (tedit 5CF31DEF) - - (at 1 -1 30) - - (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - ) - - (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.475) (layer F.Cu) (net 1)) - - - - (module zone_test (layer F.Cu) (tedit 5CF31DEF) (at 1 -1 30) @@ -209,13 +175,13 @@ (at 0 0 0) (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 2 "T6_1") (solder_mask_margin 0.2)) + (net 2 "T4_1") (solder_mask_margin 0.2)) (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 3 "T6_2") (solder_mask_margin 0.2)) + (net 3 "T4_2") (solder_mask_margin 0.2)) (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 4 "T6_3") (solder_mask_margin 0.2)) + (net 4 "T4_3") (solder_mask_margin 0.2)) ) diff --git a/test/unit/filter.js b/test/unit/filter.js index 6097150..c040687 100644 --- a/test/unit/filter.js +++ b/test/unit/filter.js @@ -4,48 +4,56 @@ const Point = require('../../src/point') describe('Filter', function() { - it('empty', function() { - filter(undefined, '').should.deep.equal([new Point()]) - filter(true, '').should.deep.equal([]) - filter(false, '').should.deep.equal([]) + it('without points', function() { + filter(undefined, '').should.deep.equal([new Point()]) + filter(true, '').should.deep.equal([]) + filter(false, '').should.deep.equal([]) + filter({}, '').should.deep.equal([anchor({}, '', points)()]) }) const points = { one: new Point(0, 1, 0, {name: 'one', tags: ['odd']}), two: new Point(0, 2, 0, {name: 'two', tags: ['even', 'prime']}), - three: new Point(0, 3, 0, {name: 'three', tags: {odd: 'yes', prime: 'yupp'}}) + three: new Point(0, 3, 0, {name: 'three', tags: {odd: 'yes', prime: 'yupp'}}), + mirror_one: new Point(0, 1, 0, {name: 'mirror_one', tags: ['odd'], mirrored: true}) } - const names = points => points.map(p => p.meta.name) - - it('similar', function() { + it('empty filter', function() { // an undefined config leads to a default point filter(undefined, '', points).should.deep.equal([new Point()]) // true shouldn't filter anything, while false should filter everything filter(true, '', points).should.deep.equal(Object.values(points)) filter(false, '', points).should.deep.equal([]) // points should only be returned on their respective halves + // - so `source` is every match filter(true, '', points, undefined, 'source').should.deep.equal(Object.values(points)) - filter(true, '', points, undefined, 'clone').should.deep.equal([]) + // - `clone` is the mirror image of every match, which maps one to mirror_one, mirror_one to one, and two/three to nothing (as they don't have mirror parts) + filter(true, '', points, undefined, 'clone').should.deep.equal([points.mirror_one, points.one]) + // - and `both` is every match plus its mirror image as well filter(true, '', points, undefined, 'both').should.deep.equal(Object.values(points)) // objects just propagate to anchor (and then wrap in array for consistency) filter({}, '', points).should.deep.equal([anchor({}, '', points)()]) filter({}, '', points, undefined, 'source').should.deep.equal([anchor({}, '', points)()]) filter({}, '', points, undefined, 'clone').should.deep.equal([anchor({}, '', points)()]) - filter({}, '', points, undefined, 'both').should.deep.equal([anchor({}, '', points)(), anchor({}, '', points)()]) + filter({}, '', points, undefined, 'both').should.deep.equal([anchor({}, '', points)()]) + }) + + const names = points => points.map(p => p.meta.name) + + it('similar', function() { // simple name string names(filter('one', '', points)).should.deep.equal(['one']) // simple name regex names(filter('/^t/', '', points)).should.deep.equal(['two', 'three']) - // tags should count, too (one for the name, three for the odd tag) - names(filter('/^o/', '', points)).should.deep.equal(['one', 'three']) + // tags should count, too (one and mirror_one for the name, three for the odd tag) + names(filter('/^o/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) // middle spec, should be the same as above, only explicit - names(filter('~ /^o/', '', points)).should.deep.equal(['one', 'three']) + names(filter('~ /^o/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) // full spec (n would normally match both one and even, but on the tags level, it's just even) names(filter('meta.tags ~ /n/', '', points)).should.deep.equal(['two']) // negation - names(filter('meta.tags ~ -/n/', '', points)).should.deep.equal(['one', 'three']) - // arrays OR by default at odd levels levels (including top level)... + names(filter('meta.tags ~ -/n/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) + // arrays OR by default at odd levels (including top level)... names(filter(['one', 'two'], '', points)).should.deep.equal(['one', 'two']) // ...and AND at even levels names(filter([['even', 'prime']], '', points)).should.deep.equal(['two']) From 9ad080d24cd1750096fa08e36a6c02b8641fcd88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Fri, 17 Mar 2023 10:29:09 +0100 Subject: [PATCH 081/120] Templating bugfix (#86) --- src/pcbs.js | 16 ++++++++++------ src/utils.js | 2 +- test/pcbs/mock_footprints.yaml | 9 +++++++++ test/pcbs/mock_footprints___pcbs_main.kicad_pcb | 13 +++++++++++++ test/unit/utils.js | 1 + 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/pcbs.js b/src/pcbs.js index e49c86e..4eb9610 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -1,4 +1,6 @@ const m = require('makerjs') +const yaml = require('js-yaml') + const u = require('./utils') const a = require('./assert') const prep = require('./prepare') @@ -202,22 +204,24 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, // combine default value with potential user override let value = params[param_name] !== undefined ? params[param_name] : parsed_def.value const type = parsed_def.type - a.in(type, `${name}.params.${param_name}.type`, [ - 'string', 'number', 'boolean', 'array', 'object', 'net', 'anchor' - ]) // templating support, with conversion back to raw datatypes const converters = { string: v => v, number: v => a.sane(v, `${name}.params.${param_name}`, 'number')(units), - boolean: v => v === 'true' + boolean: v => v === 'true', + array: v => yaml.load(v), + object: v => yaml.load(v), + net: v => v, + anchor: v => yaml.load(v) } - if (a.type(value)() == 'string' && Object.keys(converters).includes(type)) { + a.in(type, `${name}.params.${param_name}.type`, Object.keys(converters)) + if (a.type(value)() == 'string') { value = u.template(value, point.meta) value = converters[type](value) } - // type-specific processing + // type-specific postprocessing if (['string', 'number', 'boolean', 'array', 'object'].includes(type)) { parsed_params[param_name] = value } else if (type == 'net') { diff --git a/src/utils.js b/src/utils.js index de9cb5f..34a852d 100644 --- a/src/utils.js +++ b/src/utils.js @@ -23,7 +23,7 @@ exports.template = (str, vals={}) => { let res = str let shift = 0 for (const match of str.matchAll(regex)) { - const replacement = deep(vals, match[1]) || '' + const replacement = (deep(vals, match[1]) || '') + '' res = res.substring(0, match.index + shift) + replacement + res.substring(match.index + shift + match[0].length) diff --git a/test/pcbs/mock_footprints.yaml b/test/pcbs/mock_footprints.yaml index b46d95f..14e9821 100644 --- a/test/pcbs/mock_footprints.yaml +++ b/test/pcbs/mock_footprints.yaml @@ -1,5 +1,7 @@ points.zones.matrix: mirror: 10 + key: + magic_value: 5 outlines: edge: - what: rectangle @@ -44,3 +46,10 @@ pcbs: params: start: {x: 5, y: 5} end: [[6, 6], [7, 7]] + arrobj_templated: + what: arrobj_test + where: + ref: matrix + params: + start: '{x: {{magic_value}}, y: {{magic_value}}}' + end: '[[6, 6], [7, {{magic_value}}]]' diff --git a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb index 6cde5ae..463dd01 100644 --- a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb +++ b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb @@ -221,6 +221,19 @@ ) + + + (module arrobj_test (layer F.Cu) (tedit 5CF31DEF) + + (at 0 0 0) + + (fp_line (start 5 5) (end 6 6) (layer Dwgs.User) (width 0.05)) +(fp_line (start 5 5) (end 7 5) (layer Dwgs.User) (width 0.05)) + + + ) + + (gr_line (start -9.5 9.5) (end 9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 9.5 9.5) (end 9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 9.5 -9.5) (end -9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) diff --git a/test/unit/utils.js b/test/unit/utils.js index e702791..7ac48b8 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -33,6 +33,7 @@ describe('Utils', function() { {longlonglong: 'long', short: 'shortshortshort'} ).should.equal('long_shortshortshort') u.template('{{a.b.c}}', {a: {b: {c: 'deep'}}}).should.equal('deep') + u.template('{x: {{number}}, y: {{number}}}', {number: 5}).should.equal('{x: 5, y: 5}') }) it('eq', function() { From 244fc53eae5276a5dd31d5d1112a575d8c2dc1f1 Mon Sep 17 00:00:00 2001 From: Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> Date: Tue, 31 Jan 2023 22:30:01 +0000 Subject: [PATCH 082/120] Handle backslashes in windows tests (#82) --- test/index.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/test/index.js b/test/index.js index d77df5a..fc0444b 100644 --- a/test/index.js +++ b/test/index.js @@ -11,6 +11,13 @@ let what = process.env.npm_config_what const dump = process.env.npm_config_dump const lineends = /(?:\r\n|\r|\n)/g +const handle_slash = (() => { + if (path.sep == '\\') { + return str => str.replace(/\\/g,'/') + } else { + return str => str + } +})() // Unit tests @@ -18,7 +25,7 @@ const lineends = /(?:\r\n|\r|\n)/g // the --dump switch does nothing here what = what ? what.split(',') : false -for (const unit of glob.sync(path.join(__dirname, 'unit', '*.js'))) { +for (const unit of glob.sync(handle_slash(path.join(__dirname, 'unit', '*.js')))) { const base = path.basename(unit, '.js') if (what && !what.includes(base)) continue require(`./unit/${base}.js`) @@ -54,7 +61,7 @@ const test = function(input_path) { const input = yaml.load(fs.readFileSync(input_path).toString()) const base = path.join(path.dirname(input_path), path.basename(input_path, '.yaml')) - const references = glob.sync(base + '___*') + const references = glob.sync(handle_slash(base) + '___*') // handle deliberately wrong inputs const exception = base + '___EXCEPTION.txt' @@ -113,7 +120,7 @@ if (what) { regex = path.join(__dirname, w, '*.yaml') } describe(title, function() { - for (const i of glob.sync(regex)) { + for (const i of glob.sync(handle_slash(regex))) { test.call(this, i) } }) @@ -121,7 +128,7 @@ if (what) { } else { for (const part of ['points', 'outlines', 'cases', 'pcbs', 'footprints']) { describe(cap(part), function() { - for (const i of glob.sync(path.join(__dirname, part, '*.yaml'))) { + for (const i of glob.sync(handle_slash(path.join(__dirname, part, '*.yaml')))) { test.call(this, i) } }) @@ -148,7 +155,7 @@ for (let w of cli_what) { describe('CLI', function() { this.timeout(120000) this.slow(120000) - for (const t of glob.sync(path.join(__dirname, w))) { + for (const t of glob.sync(handle_slash(path.join(__dirname, w)))) { it(path.basename(t).split('_').join(' '), function() { const command = read(t, 'command') const output_path = exists(t, 'path') ? read(t, 'path') : 'output' @@ -206,4 +213,4 @@ for (let w of cli_what) { }) } }) -} \ No newline at end of file +} From 5761266260e30fae50ad7efc83cfab2fe9b98ba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Fri, 17 Mar 2023 23:44:22 +0100 Subject: [PATCH 083/120] 4.0.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fa1b4d7..e6be89f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ergogen", - "version": "4.0.0", + "version": "4.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ergogen", - "version": "4.0.0", + "version": "4.0.1", "license": "MIT", "dependencies": { "fs-extra": "^11.1.0", diff --git a/package.json b/package.json index 41358ac..2d7215a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "4.0.0", + "version": "4.0.1", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", From 3eac7f8e6dc7d2a09b32c72bcc28bf4683e183cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 18 Mar 2023 00:04:38 +0100 Subject: [PATCH 084/120] Rollup CJS changes --- rollup.config.js => rollup.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename rollup.config.js => rollup.config.mjs (90%) diff --git a/rollup.config.js b/rollup.config.mjs similarity index 90% rename from rollup.config.js rename to rollup.config.mjs index 95bc171..002aff5 100644 --- a/rollup.config.js +++ b/rollup.config.mjs @@ -1,4 +1,4 @@ -import pkg from './package.json' +import pkg from './package.json' assert { type: 'json' } import json from '@rollup/plugin-json' import commonjs from '@rollup/plugin-commonjs' From 4d65eb19a6358bd2621c1bd98b9d466808e2324d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 18 Mar 2023 16:23:05 +0100 Subject: [PATCH 085/120] Filter negation bugfix --- src/filter.js | 30 +++++++++++++++++------------- test/unit/filter.js | 8 ++++++-- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/filter.js b/src/filter.js index 397dfd3..ca091b6 100644 --- a/src/filter.js +++ b/src/filter.js @@ -9,9 +9,8 @@ const _false = () => false const _and = arr => p => arr.map(e => e(p)).reduce((a, b) => a && b) const _or = arr => p => arr.map(e => e(p)).reduce((a, b) => a || b) -const similar = (key, reference, name, units) => { +const similar = (keys, reference, name, units) => { let neg = false - if (reference.startsWith('-')) { neg = true reference = reference.slice(1) @@ -20,15 +19,19 @@ const similar = (key, reference, name, units) => { // support both string or regex as reference let internal_tester = val => (''+val) == reference if (reference.startsWith('/')) { - const regex_parts = reference.split('/') - regex_parts.shift() // remove starting slash - const flags = regex_parts.pop() - const regex = new RegExp(regex_parts.join('/'), flags) - internal_tester = val => regex.test(''+val) + try { + const regex_parts = reference.split('/') + regex_parts.shift() // remove starting slash + const flags = regex_parts.pop() + const regex = new RegExp(regex_parts.join('/'), flags) + internal_tester = val => regex.test(''+val) + } catch (ex) { + throw new Error(`Invalid regex "${reference}" found at filter "${name}"!`) + } } // support strings, arrays, or objects as key - const external_tester = point => { + const external_tester = (point, key) => { const value = u.deep(point, key) if (a.type(value)() == 'array') { return value.some(subkey => internal_tester(subkey)) @@ -39,11 +42,12 @@ const similar = (key, reference, name, units) => { } } - // negation happens at the end + // consider negation if (neg) { - return point => !external_tester(point) + return point => keys.every(key => !external_tester(point, key)) + } else { + return point => keys.some(key => external_tester(point, key)) } - return external_tester } const comparators = { @@ -75,7 +79,7 @@ const simple = (exp, name, units) => { value = exp } - return point => keys.some(key => comparators[op](key, value, name, units)(point)) + return point => comparators[op](keys, value, name, units)(point) } const complex = (config, name, units, aggregator=_or) => { @@ -109,7 +113,7 @@ const contains_object = (val) => { } exports.parse = (config, name, points={}, units={}, asym='source') => { - + let result = [] // if a filter decl is undefined, it's just the default point at [0, 0] diff --git a/test/unit/filter.js b/test/unit/filter.js index c040687..3972e93 100644 --- a/test/unit/filter.js +++ b/test/unit/filter.js @@ -49,17 +49,21 @@ describe('Filter', function() { names(filter('/^o/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) // middle spec, should be the same as above, only explicit names(filter('~ /^o/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) - // full spec (n would normally match both one and even, but on the tags level, it's just even) + // full spec (/n/ would normally match both "one" and "even", but on the tags level, it's just even) names(filter('meta.tags ~ /n/', '', points)).should.deep.equal(['two']) + names(filter('meta.name,meta.tags ~ /n/', '', points)).should.deep.equal(['one', 'two', 'mirror_one']) // negation names(filter('meta.tags ~ -/n/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) + names(filter('meta.name,meta.tags ~ -/n/', '', points)).should.deep.equal(['three']) // arrays OR by default at odd levels (including top level)... names(filter(['one', 'two'], '', points)).should.deep.equal(['one', 'two']) // ...and AND at even levels names(filter([['even', 'prime']], '', points)).should.deep.equal(['two']) // arbitrary nesting should be possible names(filter([[['even', 'odd'], 'prime']], '', points)).should.deep.equal(['two', 'three']) - // anything other than string/array/object/undefined is an error + // invalid regexes should throw meaningful errors + filter.bind(this, '/\\/', '', points).should.throw('Invalid regex') + // anything other than string/array/object/undefined is also an error filter.bind(this, 28, '', points).should.throw('Unexpected type') }) From daaef0af7912c7e011ec424421c36210969e3fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 18 Mar 2023 16:24:47 +0100 Subject: [PATCH 086/120] 4.0.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e6be89f..8f307c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ergogen", - "version": "4.0.1", + "version": "4.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ergogen", - "version": "4.0.1", + "version": "4.0.2", "license": "MIT", "dependencies": { "fs-extra": "^11.1.0", diff --git a/package.json b/package.json index 2d7215a..ec2f110 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "4.0.1", + "version": "4.0.2", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", From d74f657f24d80c9452ff6e72b66dacee5cba49ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 1 May 2023 13:25:16 +0200 Subject: [PATCH 087/120] Add sponsorship button --- .github/FUNDING.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..3c9a7fb --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +github: [mrzealot] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] From 63684e33d76579548dd0ff88a9db88ca4cec26c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 1 May 2023 13:37:48 +0200 Subject: [PATCH 088/120] Add donate button to readme --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index f8b8f8d..1af6611 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ The project aims to provide a common configuration format to describe ***ergonom [![Button WebUI]][WebUI] [![Button Documentation]][Documentation] [![Button Discord]][Discord] +[![Button Donate]][Donate] --- @@ -87,6 +88,7 @@ Get in touch on our **[Discord]**, and we can definitely find something you can [WebUI]: https://ergogen.xyz [Unofficial]: https://ergogen.cache.works/ [Topic]: https://github.com/topics/ergogen +[Donate]: https://github.com/sponsors/mrzealot @@ -95,3 +97,4 @@ Get in touch on our **[Discord]**, and we can definitely find something you can [Button Official]: https://img.shields.io/badge/Official-37a779?style=for-the-badge [Button Documentation]: https://img.shields.io/badge/Documentation-1793D1?style=for-the-badge&logoColor=white&logo=GitBook [Button Discord]: https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logoColor=white&logo=Discord +[Button Donate]: https://img.shields.io/badge/Donate-EA4AAA?style=for-the-badge&logoColor=white&logo=githubsponsors From 89981199d972b7f7829dab7e6da605511352c335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 8 May 2023 17:42:43 +0200 Subject: [PATCH 089/120] Initial list of distinguished sponsors --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 1af6611..627f3dc 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,16 @@ Get in touch on our **[Discord]**, and we can definitely find something you can
+## Sponsors + +Huge thanks go to everyone who chooses to support my work! +But even huger thanks are due to the following, *distinguished* sponsors: + +- [Perce](https://madebyperce.com/) +- [Neil Gilmour](https://github.com/neilgilmour) +- [ochief](https://github.com/ochief) +- [Alyx Brett](https://github.com/alyx-brett) + [Absolem keyboard]: https://zealot.hu/absolem From 9832489d41de26531b087d80e9a2d8fa54aacdb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 8 May 2023 18:46:26 +0200 Subject: [PATCH 090/120] Sponsor fixes --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 627f3dc..ae404e1 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,8 @@ Get in touch on our **[Discord]**, and we can definitely find something you can Huge thanks go to everyone who chooses to support my work! But even huger thanks are due to the following, *distinguished* sponsors: -- [Perce](https://madebyperce.com/) +- [perce](https://madebyperce.com/) +- [Cache](https://github.com/MvEerd) - [Neil Gilmour](https://github.com/neilgilmour) - [ochief](https://github.com/ochief) - [Alyx Brett](https://github.com/alyx-brett) From 9f644c2e2bcc0d4e710815f1e8446d0ced556a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 20 May 2023 22:02:19 +0200 Subject: [PATCH 091/120] Independent per-point adjustment --- roadmap.md | 2 +- src/points.js | 10 +- test/cli/big/reference/points/points.yaml | 1 + test/cli/minimal/reference/points/points.yaml | 1 + test/points/adjustments.yaml | 8 +- test/points/adjustments___demo_dxf.dxf | 296 +++++++- test/points/adjustments___points.json | 634 +++++++++++++++++- test/points/basic_2x2___points.json | 4 + test/points/default___points.json | 2 + test/points/mirrors___points.json | 12 + test/points/overrides___points.json | 7 + 11 files changed, 910 insertions(+), 67 deletions(-) diff --git a/roadmap.md b/roadmap.md index f8dea91..aa1c837 100644 --- a/roadmap.md +++ b/roadmap.md @@ -15,7 +15,7 @@ ### Minor - Support "direct" anchors, as in, recognize num arrays and parse them as x/y/r -- Add full anchor support to individual points (via `adjust`, probably) +- Add `origin` to zone-wide and global rotation in points - Handle unnecessary (but seemingly consistent, so easy to confuse) `key` subfield of row-level overrides - Allow footprints to access raw array/object fields from points with templating - Include raw kicad footprint integrations diff --git a/src/points.js b/src/points.js index 39b5752..72eecc8 100644 --- a/src/points.js +++ b/src/points.js @@ -92,6 +92,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, orient: 0, shift: [0, 0], rotate: 0, + adjust: {}, width: units.$default_width, height: units.$default_height, padding: units.$default_padding, @@ -168,11 +169,17 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, // copy the current column anchor let point = running_anchor.clone() - // apply per-key adjustments + // apply cumulative per-key adjustments point.r += key.orient point.shift(key.shift) point.r += key.rotate + // commit running anchor + running_anchor = point.clone() + + // apply independent adjustments + point = anchor_lib.parse(key.adjust, `${key.name}.adjust`, {}, point)(units) + // save new key point.meta = key points[key.name] = point @@ -182,7 +189,6 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, col_minmax[col_name].max = Math.max(col_minmax[col_name].max, point.y) // advance the running anchor to the next position - running_anchor = point.clone() running_anchor.shift([0, key.padding]) } diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index 911c06d..79b590d 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -14,6 +14,7 @@ matrix: - 0 - 0 rotate: 0 + adjust: {} width: 18 height: 18 padding: 19 diff --git a/test/cli/minimal/reference/points/points.yaml b/test/cli/minimal/reference/points/points.yaml index 63b3d11..9728c56 100644 --- a/test/cli/minimal/reference/points/points.yaml +++ b/test/cli/minimal/reference/points/points.yaml @@ -14,6 +14,7 @@ matrix_col_row: - 0 - 0 rotate: 0 + adjust: {} width: 18 height: 18 padding: 19 diff --git a/test/points/adjustments.yaml b/test/points/adjustments.yaml index 77850a8..8b1063d 100644 --- a/test/points/adjustments.yaml +++ b/test/points/adjustments.yaml @@ -3,17 +3,21 @@ points: matrix: columns: left: + middle.rows.home.adjust: + shift: [-2u, 0] + rotate: 45 right: key: stagger: 5 spread: 25 - splay: 5 + splay: -5 origin: [-9, -9] rows: - top: + home: orient: -90 shift: [0, 10] rotate: 90 rows: bottom: + home: top: \ No newline at end of file diff --git a/test/points/adjustments___demo_dxf.dxf b/test/points/adjustments___demo_dxf.dxf index 6f18f2b..f23b53e 100644 --- a/test/points/adjustments___demo_dxf.dxf +++ b/test/points/adjustments___demo_dxf.dxf @@ -145,35 +145,227 @@ LINE 8 0 10 -14.4311966 +-9 +20 +47 +11 +9 +21 +47 +0 +LINE +8 +0 +10 +9 +20 +47 +11 +9 +21 +29 +0 +LINE +8 +0 +10 +9 +20 +29 +11 +-9 +21 +29 +0 +LINE +8 +0 +10 +-9 +20 +29 +11 +-9 +21 +47 +0 +LINE +8 +0 +10 +10 +20 +9 +11 +28 +21 +9 +0 +LINE +8 +0 +10 +28 +20 +9 +11 +28 +21 +-9 +0 +LINE +8 +0 +10 +28 +20 +-9 +11 +10 +21 +-9 +0 +LINE +8 +0 +10 +10 +20 +-9 +11 +10 +21 +9 +0 +LINE +8 +0 +10 +-31.7279221 +20 +19 +11 +-19 +21 +31.7279221 +0 +LINE +8 +0 +10 +-19 +20 +31.7279221 +11 +-6.2720779 +21 +19 +0 +LINE +8 +0 +10 +-6.2720779 +20 +19 +11 +-19 +21 +6.2720779 +0 +LINE +8 +0 +10 +-19 +20 +6.2720779 +11 +-31.7279221 +21 +19 +0 +LINE +8 +0 +10 +10 +20 +47 +11 +28 +21 +47 +0 +LINE +8 +0 +10 +28 +20 +47 +11 +28 +21 +29 +0 +LINE +8 +0 +10 +28 +20 +29 +11 +10 +21 +29 +0 +LINE +8 +0 +10 +10 +20 +29 +11 +10 +21 +47 +0 +LINE +8 +0 +10 +36.5688034 20 13.9315046 11 -32.3627012 +54.500308 21 -15.500308 +12.3627012 0 LINE 8 0 10 -32.3627012 +54.500308 20 -15.500308 +12.3627012 11 -33.9315046 +52.9315046 21 --2.4311966 +-5.5688034 0 LINE 8 0 10 -33.9315046 +52.9315046 20 --2.4311966 +-5.5688034 11 -16 +35 21 -4 0 @@ -181,11 +373,11 @@ LINE 8 0 10 -16 +35 20 -4 11 -14.4311966 +36.5688034 21 13.9315046 0 @@ -193,49 +385,97 @@ LINE 8 0 10 -22.7371845 +48.1867095 20 -33.7307613 +31.9876465 11 -40.6686891 +66.1182141 21 -35.2995647 +30.4188431 0 LINE 8 0 10 -40.6686891 +66.1182141 20 -35.2995647 +30.4188431 11 -42.2374925 +64.5494107 21 -17.3680601 +12.4873385 0 LINE 8 0 10 -42.2374925 +64.5494107 20 -17.3680601 +12.4873385 11 -24.3059879 +46.6179061 21 -15.7992567 +14.0561419 0 LINE 8 0 10 -24.3059879 +46.6179061 20 -15.7992567 +14.0561419 11 -22.7371845 +48.1867095 21 -33.7307613 +31.9876465 +0 +LINE +8 +0 +10 +49.8426686 +20 +50.9153458 +11 +67.7741732 +21 +49.3465424 +0 +LINE +8 +0 +10 +67.7741732 +20 +49.3465424 +11 +66.2053698 +21 +31.4150378 +0 +LINE +8 +0 +10 +66.2053698 +20 +31.4150378 +11 +48.2738652 +21 +32.9838412 +0 +LINE +8 +0 +10 +48.2738652 +20 +32.9838412 +11 +49.8426686 +21 +50.9153458 0 ENDSEC 0 diff --git a/test/points/adjustments___points.json b/test/points/adjustments___points.json index 92f7b09..ff8bd04 100644 --- a/test/points/adjustments___points.json +++ b/test/points/adjustments___points.json @@ -17,6 +17,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -28,18 +29,33 @@ "zone": { "columns": { "left": null, + "middle": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, "right": { "key": { "stagger": 5, "spread": 25, - "splay": 5, + "splay": -5, "origin": [ -9, -9 ] }, "rows": { - "top": { + "home": { "orient": -90, "shift": [ 0, @@ -53,6 +69,7 @@ }, "rows": { "bottom": {}, + "home": {}, "top": {} }, "name": "matrix" @@ -65,13 +82,13 @@ "row": "bottom", "bind": [ 10, - 0, + 10, 0, 0 ] } }, - "matrix_left_top": { + "matrix_left_home": { "x": 0, "y": 19, "r": 0, @@ -89,29 +106,45 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, "autobind": 10, "skip": false, "asym": "both", - "colrow": "left_top", - "name": "matrix_left_top", + "colrow": "left_home", + "name": "matrix_left_home", "zone": { "columns": { "left": null, + "middle": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, "right": { "key": { "stagger": 5, "spread": 25, - "splay": 5, + "splay": -5, "origin": [ -9, -9 ] }, "rows": { - "top": { + "home": { "orient": -90, "shift": [ 0, @@ -125,6 +158,96 @@ }, "rows": { "bottom": {}, + "home": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": {}, + "key": {}, + "name": "left" + }, + "row": "home", + "bind": [ + 10, + 10, + 10, + 0 + ] + } + }, + "matrix_left_top": { + "x": 0, + "y": 38, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "adjust": {}, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "left_top", + "name": "matrix_left_top", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": 5, + "spread": 25, + "splay": -5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "home": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {}, "top": {} }, "name": "matrix" @@ -143,17 +266,17 @@ ] } }, - "matrix_right_bottom": { - "x": 24.181350600000002, - "y": 5.750154, - "r": 5, + "matrix_middle_bottom": { + "x": 19, + "y": 0, + "r": 0, "meta": { - "stagger": 5, - "spread": 25, - "splay": 5, + "stagger": 0, + "spread": 19, + "splay": 0, "origin": [ - -9, - -9 + 0, + 0 ], "orient": 0, "shift": [ @@ -161,29 +284,45 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, "autobind": 10, "skip": false, "asym": "both", - "colrow": "right_bottom", - "name": "matrix_right_bottom", + "colrow": "middle_bottom", + "name": "matrix_middle_bottom", "zone": { "columns": { "left": null, + "middle": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, "right": { "key": { "stagger": 5, "spread": 25, - "splay": 5, + "splay": -5, "origin": [ -9, -9 ] }, "rows": { - "top": { + "home": { "orient": -90, "shift": [ 0, @@ -197,6 +336,310 @@ }, "rows": { "bottom": {}, + "home": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, + "row": "bottom", + "bind": [ + 10, + 0, + 0, + 10 + ] + } + }, + "matrix_middle_home": { + "x": -19, + "y": 19, + "r": 45, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + }, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "middle_home", + "name": "matrix_middle_home", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": 5, + "spread": 25, + "splay": -5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "home": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, + "row": "home", + "bind": [ + 10, + 10, + 10, + 10 + ] + } + }, + "matrix_middle_top": { + "x": 19, + "y": 38, + "r": 0, + "meta": { + "stagger": 0, + "spread": 19, + "splay": 0, + "origin": [ + 0, + 0 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "adjust": {}, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "middle_top", + "name": "matrix_middle_top", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": 5, + "spread": 25, + "splay": -5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "home": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, + "row": "top", + "bind": [ + 0, + 10, + 10, + 10 + ] + } + }, + "matrix_right_bottom": { + "x": 44.750154, + "y": 4.1813506, + "r": -5, + "meta": { + "stagger": 5, + "spread": 25, + "splay": -5, + "origin": [ + -9, + -9 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "adjust": {}, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "right_bottom", + "name": "matrix_right_bottom", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": 5, + "spread": 25, + "splay": -5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "home": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {}, "top": {} }, "name": "matrix" @@ -205,14 +648,14 @@ "key": { "stagger": 5, "spread": 25, - "splay": 5, + "splay": -5, "origin": [ -9, -9 ] }, "rows": { - "top": { + "home": { "orient": -90, "shift": [ 0, @@ -232,14 +675,14 @@ ] } }, - "matrix_right_top": { - "x": 32.4873385, - "y": 25.549410700000003, - "r": 5, + "matrix_right_home": { + "x": 56.3680601, + "y": 22.237492500000002, + "r": -5, "meta": { "stagger": 5, "spread": 25, - "splay": 5, + "splay": -5, "origin": [ -9, -9 @@ -250,29 +693,45 @@ 10 ], "rotate": 90, + "adjust": {}, "width": 18, "height": 18, "padding": 19, "autobind": 10, "skip": false, "asym": "both", - "colrow": "right_top", - "name": "matrix_right_top", + "colrow": "right_home", + "name": "matrix_right_home", "zone": { "columns": { "left": null, + "middle": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, "right": { "key": { "stagger": 5, "spread": 25, - "splay": 5, + "splay": -5, "origin": [ -9, -9 ] }, "rows": { - "top": { + "home": { "orient": -90, "shift": [ 0, @@ -286,6 +745,7 @@ }, "rows": { "bottom": {}, + "home": {}, "top": {} }, "name": "matrix" @@ -294,14 +754,120 @@ "key": { "stagger": 5, "spread": 25, - "splay": 5, + "splay": -5, "origin": [ -9, -9 ] }, "rows": { - "top": { + "home": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + }, + "row": "home", + "bind": [ + 10, + 0, + 10, + 10 + ] + } + }, + "matrix_right_top": { + "x": 58.0240192, + "y": 41.1651918, + "r": -5, + "meta": { + "stagger": 5, + "spread": 25, + "splay": -5, + "origin": [ + -9, + -9 + ], + "orient": 0, + "shift": [ + 0, + 0 + ], + "rotate": 0, + "adjust": {}, + "width": 18, + "height": 18, + "padding": 19, + "autobind": 10, + "skip": false, + "asym": "both", + "colrow": "right_top", + "name": "matrix_right_top", + "zone": { + "columns": { + "left": null, + "middle": { + "rows": { + "home": { + "adjust": { + "shift": [ + "-2u", + 0 + ], + "rotate": 45 + } + } + }, + "key": {}, + "name": "middle" + }, + "right": { + "key": { + "stagger": 5, + "spread": 25, + "splay": -5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "home": { + "orient": -90, + "shift": [ + 0, + 10 + ], + "rotate": 90 + } + }, + "name": "right" + } + }, + "rows": { + "bottom": {}, + "home": {}, + "top": {} + }, + "name": "matrix" + }, + "col": { + "key": { + "stagger": 5, + "spread": 25, + "splay": -5, + "origin": [ + -9, + -9 + ] + }, + "rows": { + "home": { "orient": -90, "shift": [ 0, diff --git a/test/points/basic_2x2___points.json b/test/points/basic_2x2___points.json index 61d9968..140cf1a 100644 --- a/test/points/basic_2x2___points.json +++ b/test/points/basic_2x2___points.json @@ -17,6 +17,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -68,6 +69,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -119,6 +121,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -170,6 +173,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, diff --git a/test/points/default___points.json b/test/points/default___points.json index 60e486d..cc98b68 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -17,6 +17,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -60,6 +61,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, diff --git a/test/points/mirrors___points.json b/test/points/mirrors___points.json index 7893290..51aafec 100644 --- a/test/points/mirrors___points.json +++ b/test/points/mirrors___points.json @@ -17,6 +17,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -87,6 +88,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -150,6 +152,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -213,6 +216,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -283,6 +287,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -346,6 +351,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -409,6 +415,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -479,6 +486,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -542,6 +550,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -605,6 +614,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -675,6 +685,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -738,6 +749,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, diff --git a/test/points/overrides___points.json b/test/points/overrides___points.json index 2a763b7..88fbfe6 100644 --- a/test/points/overrides___points.json +++ b/test/points/overrides___points.json @@ -17,6 +17,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -85,6 +86,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -153,6 +155,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -223,6 +226,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -293,6 +297,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -363,6 +368,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, @@ -437,6 +443,7 @@ 0 ], "rotate": 0, + "adjust": {}, "width": 18, "height": 18, "padding": 19, From 7baa6a3b3aee8b9170ed7cacb445ba44e6b099cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 20 May 2023 22:02:38 +0200 Subject: [PATCH 092/120] 4.0.3 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f307c2..7d92547 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ergogen", - "version": "4.0.2", + "version": "4.0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ergogen", - "version": "4.0.2", + "version": "4.0.3", "license": "MIT", "dependencies": { "fs-extra": "^11.1.0", diff --git a/package.json b/package.json index ec2f110..e73e6f4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "4.0.2", + "version": "4.0.3", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", From 14cd4991820ca605f573b3d45b7147e83ac46b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Sat, 20 May 2023 22:07:22 +0200 Subject: [PATCH 093/120] 4.0.4 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7d92547..f5b3fc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ergogen", - "version": "4.0.3", + "version": "4.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ergogen", - "version": "4.0.3", + "version": "4.0.4", "license": "MIT", "dependencies": { "fs-extra": "^11.1.0", diff --git a/package.json b/package.json index e73e6f4..6b7afb9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "4.0.3", + "version": "4.0.4", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", From e924352763d1a159fe918b3c6f8f0e37220b216d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Wed, 31 May 2023 11:01:43 +0200 Subject: [PATCH 094/120] Allow outline adjusts to use shape-specific units --- src/outlines.js | 2 +- test/outlines/outlines.yaml | 6 ++ .../outlines___outlines_adjust_dxf.dxf | 90 +++++++++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 test/outlines/outlines___outlines_adjust_dxf.dxf diff --git a/src/outlines.js b/src/outlines.js index afce975..f837cde 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -194,7 +194,6 @@ exports.parse = (config, points, units) => { const where = units => filter(original_where, `${name}.where`, points, units, asym) const original_adjust = part.adjust // same as above - const adjust = start => anchor(original_adjust || {}, `${name}.adjust`, points, start)(units) const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) expand_shorthand(part, `${name}.expand`, units) const expand = a.sane(part.expand || 0, `${name}.expand`, 'number')(units) @@ -215,6 +214,7 @@ exports.parse = (config, points, units) => { // a prototype "shape" maker (and its units) are computed const [shape_maker, shape_units] = whats[what](part, name, points, outlines, units) + const adjust = start => anchor(original_adjust || {}, `${name}.adjust`, points, start)(shape_units) // and then the shape is repeated for all where positions for (const w of where(shape_units)) { diff --git a/test/outlines/outlines.yaml b/test/outlines/outlines.yaml index 9c58ce3..99a70b6 100644 --- a/test/outlines/outlines.yaml +++ b/test/outlines/outlines.yaml @@ -16,6 +16,12 @@ outlines: where: true size: cy bound: true + adjust: + - what: circle + where: true + radius: 2 + # adjust works, and it can use shape-specific units + adjust.shift: [0, r] fillet: - name: base fillet: 2 diff --git a/test/outlines/outlines___outlines_adjust_dxf.dxf b/test/outlines/outlines___outlines_adjust_dxf.dxf new file mode 100644 index 0000000..5a902b7 --- /dev/null +++ b/test/outlines/outlines___outlines_adjust_dxf.dxf @@ -0,0 +1,90 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +CIRCLE +8 +0 +10 +0 +20 +2 +40 +2 +0 +CIRCLE +8 +0 +10 +0 +20 +19 +40 +2 +0 +CIRCLE +8 +0 +10 +19 +20 +2 +40 +2 +0 +CIRCLE +8 +0 +10 +19 +20 +19 +40 +2 +0 +ENDSEC +0 +EOF \ No newline at end of file From 6e520e745a438d10ae84656a476c8f50348d9a56 Mon Sep 17 00:00:00 2001 From: Kim Date: Wed, 19 Jul 2023 15:00:44 -0600 Subject: [PATCH 095/120] Add intersect aggregator (#102) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added intersect aggregator * Addressed stylistic PR feedback * Set the rotation of the intersected point to the second point’s rotation * Revert "Set the rotation of the intersected point to the second point’s rotation" This reverts commit d210a98f79a8866519fc9695487a9ea235167b8b. * Adjusted aggregate function to not need axis1 and axis2 parameters * Add assert to check for exactly 2 parts * Add unit tests for the aggregate intersect method * Change the assert string to use ${name.length} * Change test group name to align with style guide * Update intersect logic to consider negative Y axis --------- Co-authored-by: Marco Massarelli <60667061+ceoloide@users.noreply.github.com> --- src/anchor.js | 39 +++++++++++++++++++++-- test/unit/anchor.js | 77 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 2 deletions(-) diff --git a/src/anchor.js b/src/anchor.js index 169ff3c..3d892ee 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -1,6 +1,7 @@ const u = require('./utils') const a = require('./assert') const Point = require('./point') +const m = require('makerjs') const mirror_ref = exports.mirror = (ref, mirror=true) => { if (mirror) { @@ -28,7 +29,41 @@ const aggregators = { r += part.r } return new Point(x / len, y / len, r / len) - } + }, + intersect: (config, name, parts) => { + // a line is generated from a point by taking their + // (rotated) Y axis. The line is not extended to + // +/- Infinity as that doesn't work with makerjs. + // An arbitrary offset of 1 meter is considered + // sufficient for practical purposes, and the point + // coordinates are used as pivot point for the rotation. + const get_line_from_point = (point, offset=1000) => { + const origin = [point.x, point.y] + const p1 = [point.x, point.y - offset] + const p2 = [point.x, point.y + offset] + + let line = new m.paths.Line(p1, p2) + line = m.path.rotate(line, point.r, origin) + + return line + } + + a.unexpected(config, name, aggregator_common) + a.assert(parts.length==2, `Intersect expects exactly two parts, but it got ${parts.length}!`) + + const line1 = get_line_from_point(parts[0]) + const line2 = get_line_from_point(parts[1]) + const intersection = m.path.intersection(line1, line2) + + a.assert(intersection, `The points under "${name}.parts" do not intersect!`) + + const intersection_point_arr = intersection.intersectionPoints[0] + const intersection_point = new Point( + intersection_point_arr[0], intersection_point_arr[1], 0 + ) + + return intersection_point + }, } const anchor = exports.parse = (raw, name, points={}, start=new Point(), mirror=false) => units => { @@ -56,7 +91,7 @@ const anchor = exports.parse = (raw, name, points={}, start=new Point(), mirror= // // Reference or aggregate handling // - + let point = start.clone() if (raw.ref !== undefined && raw.aggregate !== undefined) { throw new Error(`Fields "ref" and "aggregate" cannot appear together in anchor "${name}"!`) diff --git a/test/unit/anchor.js b/test/unit/anchor.js index d32c981..342d59a 100644 --- a/test/unit/anchor.js +++ b/test/unit/anchor.js @@ -6,6 +6,10 @@ describe('Anchor', function() { const points = { o: new Point(0, 0, 0, {label: 'o'}), + rotated_o: new Point(0, 0, 90, {label: 'rotated_o'}), + o_five: new Point(0, 5, 0, {label: 'o_five'}), + five_o: new Point(5, 0, 0, {label: 'five_o'}), + five: new Point(5, 5, 90, {label: 'five'}), ten: new Point(10, 10, -90, {label: 'ten'}), mirror_ten: new Point(-10, 10, 90, {mirrored: true}) } @@ -72,6 +76,79 @@ describe('Anchor', function() { ref : 'ten' }, 'name', points).should.throw() }) + it('intersect', function() { + // points that intersect on a negative Y axis + check( + parse({ + aggregate: { + parts: ['o','ten'], + method: 'intersect' + } + }, 'name', points)(), + [0,10,0,{}] + ) + + // points that have parallel Y axis, i.e. never intersect + parse({ + aggregate: { + parts: ['o','five_o'], + method: 'intersect' + } + }, 'name', points).should.throw(`The points under "name.aggregate.parts" do not intersect!`) + + // points intersect on their positive Y axis + check( + parse({ + aggregate: { + parts: ['o','five'], + method: 'intersect' + } + }, 'name', points)(), + [0, 5, 0, {}] + ) + + // intersecting points with the same coordinates, but different rotations + check( + parse({ + aggregate: { + parts: ['o','rotated_o'], + method: 'intersect' + } + }, 'name', points)(), + [0, 0, 0, {}] + ) + + // points with overlapping Y axis + parse({ + aggregate: { + parts: ['o','o_five'], + method: 'intersect' + } + }, 'name', points).should.throw(`The points under "name.aggregate.parts" do not intersect!`) + + // more than two parts + parse({ + aggregate: { + parts: ['o', `five`, `ten`], + method: 'intersect' + } + }, 'name', points).should.throw(`Intersect expects exactly two parts, but it got 3!`) + + // only one part + parse({ + aggregate: { + parts: ['o'], + method: 'intersect' + } + }, 'name', points).should.throw(`Intersect expects exactly two parts, but it got 1!`) + + // no parts + parse({ + aggregate: { + method: 'intersect' + } + }, 'name', points).should.throw(`Intersect expects exactly two parts, but it got 0!`) + }) it('shift', function() { // normal shift From 1f57ec4e190785b0a02576b7aac7cafbe5d0fb34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 14 Aug 2023 19:00:37 +0200 Subject: [PATCH 096/120] Footprint param streamlining --- src/footprints/alps.js | 4 +- src/footprints/button.js | 8 +-- src/footprints/choc.js | 8 +-- src/footprints/chocmini.js | 4 +- src/footprints/diode.js | 12 ++--- src/footprints/jstph.js | 4 +- src/footprints/jumper.js | 8 +-- src/footprints/mx.js | 8 +-- src/footprints/oled.js | 16 +++--- src/footprints/omron.js | 8 +-- src/footprints/pad.js | 4 +- src/footprints/promicro.js | 96 ++++++++++++++++----------------- src/footprints/rgb.js | 16 +++--- src/footprints/rotary.js | 14 ++--- src/footprints/scrollwheel.js | 18 +++---- src/footprints/slider.js | 14 ++--- src/footprints/trrs.js | 8 +-- src/footprints/via.js | 2 +- src/pcbs.js | 54 ++++++++++++------- test/helpers/mock_footprints.js | 32 +++++------ 20 files changed, 178 insertions(+), 160 deletions(-) diff --git a/src/footprints/alps.js b/src/footprints/alps.js index 9ab6218..e998a99 100644 --- a/src/footprints/alps.js +++ b/src/footprints/alps.js @@ -25,8 +25,8 @@ module.exports = { (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) ${''/* pins */} - (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.from.str}) - (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.to.str}) + (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.from}) + (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.to}) ) ` diff --git a/src/footprints/button.js b/src/footprints/button.js index bbf7786..25fc333 100644 --- a/src/footprints/button.js +++ b/src/footprints/button.js @@ -28,10 +28,10 @@ module.exports = { (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer ${p.side}.SilkS) (width 0.15)) ${'' /* pins */} - (pad 1 smd rect (at -3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from.str}) - (pad 1 smd rect (at 3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from.str}) - (pad 2 smd rect (at -3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to.str}) - (pad 2 smd rect (at 3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to.str}) + (pad 1 smd rect (at -3.1 -1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) + (pad 1 smd rect (at 3.1 -1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) + (pad 2 smd rect (at -3.1 1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) + (pad 2 smd rect (at 3.1 1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) ) ` diff --git a/src/footprints/choc.js b/src/footprints/choc.js index 792b1c8..52484e5 100644 --- a/src/footprints/choc.js +++ b/src/footprints/choc.js @@ -62,14 +62,14 @@ module.exports = { (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) - (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) + (pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.r}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from}) + (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.r}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to}) ` } else { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.from.str}) - (pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.to.str}) + (pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.from}) + (pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.to}) ` } } diff --git a/src/footprints/chocmini.js b/src/footprints/chocmini.js index b09b865..060bc52 100644 --- a/src/footprints/chocmini.js +++ b/src/footprints/chocmini.js @@ -69,8 +69,8 @@ module.exports = { function pins(def_neg, def_pos) { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_neg}4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.from.str} (clearance 0.2)) - (pad 2 thru_hole circle (at ${def_pos}2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.to.str} (clearance 0.2)) + (pad 1 thru_hole circle (at ${def_neg}4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.from} (clearance 0.2)) + (pad 2 thru_hole circle (at ${def_pos}2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.to} (clearance 0.2)) ` } if(p.reverse){ diff --git a/src/footprints/diode.js b/src/footprints/diode.js index 741b747..16d4288 100644 --- a/src/footprints/diode.js +++ b/src/footprints/diode.js @@ -32,14 +32,14 @@ module.exports = { (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) ${''/* SMD pads on both sides */} - (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.to.str}) - (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.from.str}) - (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.to.str}) - (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.from.str}) + (pad 1 smd rect (at -1.65 0 ${p.r}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.to}) + (pad 2 smd rect (at 1.65 0 ${p.r}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.from}) + (pad 1 smd rect (at -1.65 0 ${p.r}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.to}) + (pad 2 smd rect (at 1.65 0 ${p.r}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.from}) ${''/* THT terminals */} - (pad 1 thru_hole rect (at -3.81 0 ${p.rot}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.to.str}) - (pad 2 thru_hole circle (at 3.81 0 ${p.rot}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.from.str}) + (pad 1 thru_hole rect (at -3.81 0 ${p.r}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.to}) + (pad 2 thru_hole circle (at 3.81 0 ${p.r}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.from}) ) ` diff --git a/src/footprints/jstph.js b/src/footprints/jstph.js index c93bb6a..7bdac1d 100644 --- a/src/footprints/jstph.js +++ b/src/footprints/jstph.js @@ -30,8 +30,8 @@ module.exports = { (fp_line (start -1 1.5) (end -1 2.0) (layer ${p.side}.SilkS) (width 0.15)) (fp_line (start -1.25 1.75) (end -0.75 1.75) (layer ${p.side}.SilkS) (width 0.15)) - (pad 1 thru_hole rect (at -1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.pos.str}) - (pad 2 thru_hole oval (at 1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.neg.str}) + (pad 1 thru_hole rect (at -1 0 ${p.r}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.pos}) + (pad 2 thru_hole oval (at 1 0 ${p.r}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.neg}) ) diff --git a/src/footprints/jumper.js b/src/footprints/jumper.js index 22b7d40..f5203e2 100644 --- a/src/footprints/jumper.js +++ b/src/footprints/jumper.js @@ -14,9 +14,9 @@ module.exports = { (fp_text value Jumper (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* pins */} - (pad 1 smd rect (at -0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - (clearance 0.1905) ${p.from.str}) - (pad 2 smd rect (at 0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - (clearance 0.1905) ${p.to.str})) + (pad 1 smd rect (at -0.50038 0 ${p.r}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + (clearance 0.1905) ${p.from}) + (pad 2 smd rect (at 0.50038 0 ${p.r}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + (clearance 0.1905) ${p.to})) ` } \ No newline at end of file diff --git a/src/footprints/mx.js b/src/footprints/mx.js index 11d8de8..458b999 100644 --- a/src/footprints/mx.js +++ b/src/footprints/mx.js @@ -62,14 +62,14 @@ module.exports = { (pad "" np_thru_hole circle (at ${def_neg}3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) - (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) + (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.r}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from}) + (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.r}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to}) ` } else { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_pos}2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.from.str}) - (pad 2 thru_hole circle (at ${def_neg}3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.to.str}) + (pad 1 thru_hole circle (at ${def_pos}2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.from}) + (pad 2 thru_hole circle (at ${def_neg}3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.to}) ` } } diff --git a/src/footprints/oled.js b/src/footprints/oled.js index 5a8a536..3addacf 100644 --- a/src/footprints/oled.js +++ b/src/footprints/oled.js @@ -16,14 +16,14 @@ module.exports = { (fp_text value OLED (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* pins */} - (pad 4 thru_hole oval (at 1.6 2.18 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.SDA.str}) - (pad 3 thru_hole oval (at 1.6 4.72 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.SCL.str}) - (pad 2 thru_hole oval (at 1.6 7.26 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.VCC.str}) - (pad 1 thru_hole rect (at 1.6 9.8 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.GND.str}) + (pad 4 thru_hole oval (at 1.6 2.18 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.SDA}) + (pad 3 thru_hole oval (at 1.6 4.72 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.SCL}) + (pad 2 thru_hole oval (at 1.6 7.26 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.VCC}) + (pad 1 thru_hole rect (at 1.6 9.8 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.GND}) ) ` } \ No newline at end of file diff --git a/src/footprints/omron.js b/src/footprints/omron.js index 7669c6c..ff95eba 100644 --- a/src/footprints/omron.js +++ b/src/footprints/omron.js @@ -24,10 +24,10 @@ module.exports = { (fp_line (start -6 6) (end -6 -6) (layer Dwgs.User) (width 0.15)) ${'' /* pins */} - (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from.str}) - (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from.str}) - (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to.str}) - (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to.str}) + (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from}) + (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from}) + (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to}) + (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to}) ) ` diff --git a/src/footprints/pad.js b/src/footprints/pad.js index debfe8b..34d5cb9 100644 --- a/src/footprints/pad.js +++ b/src/footprints/pad.js @@ -28,9 +28,9 @@ module.exports = { if (align == 'down') y -= p.height / 2 + plus let text = '' if (p.text.length) { - text = `(fp_text user ${p.text} (at ${x} ${y} ${p.rot}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` + text = `(fp_text user ${p.text} (at ${x} ${y} ${p.r}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` } - return `(pad 1 smd rect (at 0 0 ${p.rot}) (size ${p.width} ${p.height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net.str})\n${text}` + return `(pad 1 smd rect (at 0 0 ${p.r}) (size ${p.width} ${p.height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net})\n${text}` } return ` diff --git a/src/footprints/promicro.js b/src/footprints/promicro.js index 6d55c0c..fc11a5c 100644 --- a/src/footprints/promicro.js +++ b/src/footprints/promicro.js @@ -60,58 +60,58 @@ module.exports = { (fp_line (start -12.7 ${def_pos}6.35) (end -12.7 ${def_pos}8.89) (layer F.SilkS) (width 0.15)) ${''/* pin names */} - (fp_text user RAW (at -13.97 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -11.43 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user RST (at -8.89 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user VCC (at -6.35 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P21 (at -3.81 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P20 (at -1.27 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P19 (at 1.27 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P18 (at 3.81 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P15 (at 6.35 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P14 (at 8.89 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P16 (at 11.43 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P10 (at 13.97 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RAW (at -13.97 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -11.43 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RST (at -8.89 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user VCC (at -6.35 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P21 (at -3.81 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P20 (at -1.27 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P19 (at 1.27 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P18 (at 3.81 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P15 (at 6.35 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P14 (at 8.89 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P16 (at 11.43 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P10 (at 13.97 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P01 (at -13.97 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P00 (at -11.43 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -8.89 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -6.35 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P02 (at -3.81 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P03 (at -1.27 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P04 (at 1.27 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P05 (at 3.81 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P06 (at 6.35 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P07 (at 8.89 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P08 (at 11.43 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P09 (at 13.97 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P01 (at -13.97 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P00 (at -11.43 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -8.89 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -6.35 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P02 (at -3.81 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P03 (at -1.27 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P04 (at 1.27 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P05 (at 3.81 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P06 (at 6.35 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P07 (at 8.89 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P08 (at 11.43 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P09 (at 13.97 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) ${''/* and now the actual pins */} - (pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW.str}) - (pad 2 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND.str}) - (pad 3 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RST.str}) - (pad 4 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.VCC.str}) - (pad 5 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P21.str}) - (pad 6 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P20.str}) - (pad 7 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P19.str}) - (pad 8 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P18.str}) - (pad 9 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P15.str}) - (pad 10 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P14.str}) - (pad 11 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P16.str}) - (pad 12 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P10.str}) + (pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.r}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW}) + (pad 2 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) + (pad 3 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RST}) + (pad 4 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.VCC}) + (pad 5 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P21}) + (pad 6 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P20}) + (pad 7 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P19}) + (pad 8 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P18}) + (pad 9 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P15}) + (pad 10 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P14}) + (pad 11 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P16}) + (pad 12 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P10}) - (pad 13 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P1.str}) - (pad 14 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P0.str}) - (pad 15 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND.str}) - (pad 16 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND.str}) - (pad 17 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P2.str}) - (pad 18 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P3.str}) - (pad 19 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P4.str}) - (pad 20 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P5.str}) - (pad 21 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P6.str}) - (pad 22 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P7.str}) - (pad 23 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P8.str}) - (pad 24 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P9.str}) + (pad 13 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P1}) + (pad 14 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P0}) + (pad 15 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) + (pad 16 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) + (pad 17 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P2}) + (pad 18 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P3}) + (pad 19 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P4}) + (pad 20 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P5}) + (pad 21 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P6}) + (pad 22 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P7}) + (pad 23 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P8}) + (pad 24 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P9}) ` } if(p.orientation == 'down') { diff --git a/src/footprints/rgb.js b/src/footprints/rgb.js index 45be1b0..12e19ff 100644 --- a/src/footprints/rgb.js +++ b/src/footprints/rgb.js @@ -29,15 +29,15 @@ module.exports = { (fp_poly (pts (xy 4 2.2) (xy 4 0.375) (xy 5 1.2875)) (layer ${p.side}.SilkS) (width 0.1)) - (pad 1 smd rect (at -2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC.str}) - (pad 2 smd rect (at -2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout.str}) - (pad 3 smd rect (at 2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND.str}) - (pad 4 smd rect (at 2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din.str}) + (pad 1 smd rect (at -2.2 -0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC}) + (pad 2 smd rect (at -2.2 0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout}) + (pad 3 smd rect (at 2.2 0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND}) + (pad 4 smd rect (at 2.2 -0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din}) - (pad 11 smd rect (at -2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC.str}) - (pad 22 smd rect (at -2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout.str}) - (pad 33 smd rect (at 2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND.str}) - (pad 44 smd rect (at 2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din.str}) + (pad 11 smd rect (at -2.5 -1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC}) + (pad 22 smd rect (at -2.5 1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout}) + (pad 33 smd rect (at 2.5 1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND}) + (pad 44 smd rect (at 2.5 -1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din}) ) diff --git a/src/footprints/rotary.js b/src/footprints/rotary.js index 60092bf..771eeea 100644 --- a/src/footprints/rotary.js +++ b/src/footprints/rotary.js @@ -56,15 +56,15 @@ module.exports = { (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) ${''/* pin names */} - (pad A thru_hole rect (at -7.62 -2.54 ${p.rot}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.A.str}) - (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.C.str}) - (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.B.str}) - (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.from.str}) - (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.to.str}) + (pad A thru_hole rect (at -7.62 -2.54 ${p.r}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.A}) + (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.C}) + (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.B}) + (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.from}) + (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.to}) ${''/* Legs */} - (pad "" thru_hole rect (at -0.12 -5.64 ${p.rot}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) - (pad "" thru_hole rect (at -0.12 5.56 ${p.rot}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) + (pad "" thru_hole rect (at -0.12 -5.64 ${p.r}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) + (pad "" thru_hole rect (at -0.12 5.56 ${p.r}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) ) ` } diff --git a/src/footprints/scrollwheel.js b/src/footprints/scrollwheel.js index 3024d29..e7cc2de 100644 --- a/src/footprints/scrollwheel.js +++ b/src/footprints/scrollwheel.js @@ -35,8 +35,8 @@ module.exports = { const standard = ` (module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C) ${p.at /* parametric position */} - (fp_text reference REF** (at 0 0 ${p.rot}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 ${p.rot}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text reference REF** (at 0 0 ${p.r}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 ${p.r}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* corner marks */} (fp_line (start -8.4 -6.4) (end 8.4 -6.4) (layer Dwgs.User) (width 0.12)) @@ -57,15 +57,15 @@ module.exports = { (fp_arc (start ${def_pos}9.5 -6.3) (end ${def_pos}9.8 -6.3) (angle ${def_neg}90) (layer Edge.Cuts) (width 0.15)) ${'' /* pins */} - (pad S1 thru_hole circle (at ${def_neg}6.85 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.from.str}) - (pad S2 thru_hole circle (at ${def_neg}5 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.to.str}) - (pad A thru_hole circle (at ${def_neg}5.625 -3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.A.str}) - (pad B thru_hole circle (at ${def_neg}5.625 -1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.B.str}) - (pad C thru_hole circle (at ${def_neg}5.625 1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.C.str}) - (pad D thru_hole circle (at ${def_neg}5.625 3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.D.str}) + (pad S1 thru_hole circle (at ${def_neg}6.85 -6.2 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.from}) + (pad S2 thru_hole circle (at ${def_neg}5 -6.2 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.to}) + (pad A thru_hole circle (at ${def_neg}5.625 -3.81 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.A}) + (pad B thru_hole circle (at ${def_neg}5.625 -1.27 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.B}) + (pad C thru_hole circle (at ${def_neg}5.625 1.27 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.C}) + (pad D thru_hole circle (at ${def_neg}5.625 3.81 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.D}) ${'' /* stabilizer */} - (pad "" np_thru_hole circle (at ${def_neg}5.625 6.3 ${p.rot}) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at ${def_neg}5.625 6.3 ${p.r}) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) ` } if(p.reverse) { diff --git a/src/footprints/slider.js b/src/footprints/slider.js index fa117fd..12b3fd9 100644 --- a/src/footprints/slider.js +++ b/src/footprints/slider.js @@ -38,15 +38,15 @@ module.exports = { (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) ${'' /* pins */} - (pad 1 smd rect (at ${right}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from.str}) - (pad 2 smd rect (at ${left}0.75 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to.str}) - (pad 3 smd rect (at ${left}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad 1 smd rect (at ${right}2.25 2.075 ${p.r}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) + (pad 2 smd rect (at ${left}0.75 2.075 ${p.r}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) + (pad 3 smd rect (at ${left}2.25 2.075 ${p.r}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) ${'' /* side mounts */} - (pad "" smd rect (at 3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) - (pad "" smd rect (at 3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) - (pad "" smd rect (at -3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) - (pad "" smd rect (at -3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at 3.7 -1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at 3.7 1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at -3.7 1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at -3.7 -1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) ) ` diff --git a/src/footprints/trrs.js b/src/footprints/trrs.js index 6728e7b..ede0002 100644 --- a/src/footprints/trrs.js +++ b/src/footprints/trrs.js @@ -71,10 +71,10 @@ module.exports = { } function pins(def_neg, def_pos) { return ` - (pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.A.str}) - (pad 2 thru_hole oval (at ${def_pos} 10.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.B.str}) - (pad 3 thru_hole oval (at ${def_pos} 6.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.C.str}) - (pad 4 thru_hole oval (at ${def_pos} 3.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.D.str}) + (pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.A}) + (pad 2 thru_hole oval (at ${def_pos} 10.2 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.B}) + (pad 3 thru_hole oval (at ${def_pos} 6.2 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.C}) + (pad 4 thru_hole oval (at ${def_pos} 3.2 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.D}) ` } if(p.reverse & p.symmetric) { diff --git a/src/footprints/via.js b/src/footprints/via.js index c83924a..1b6dc5c 100644 --- a/src/footprints/via.js +++ b/src/footprints/via.js @@ -14,7 +14,7 @@ module.exports = { (fp_text value VIA-0.6mm (at 0 -1.4) (layer F.Fab) hide (effects (font (size 1 1) (thickness 0.15)))) ${'' /* via */} - (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net.str}) + (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net}) ) ` } \ No newline at end of file diff --git a/src/pcbs.js b/src/pcbs.js index 4eb9610..59515d7 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -153,6 +153,24 @@ exports.inject_footprint = (name, fp) => { footprint_types[name] = fp } +const xy_obj = (x, y) => { + return { + x, + y, + str: `${x} ${y}`, + toString: function() { return this.str } + } +} + +const net_obj = (name, index) => { + return { + name, + index, + str: `(net ${index} "${name}")`, + toString: function() { return this.str } + } +} + const footprint = exports._footprint = (points, net_indexer, component_indexer, units, extra) => (config, name, point) => { // config sanitization @@ -227,11 +245,7 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, } else if (type == 'net') { const net = a.sane(value, `${name}.params.${param_name}`, 'string')(units) const index = net_indexer(net) - parsed_params[param_name] = { - name: net, - index: index, - str: `(net ${index} "${net}")` - } + parsed_params[param_name] = net_obj(net, index) } else { // anchor let parsed_anchor = anchor(value, `${name}.params.${param_name}`, points, point)(units) parsed_anchor.y = -parsed_anchor.y // kicad mirror, as per usual @@ -244,31 +258,35 @@ const footprint = exports._footprint = (points, net_indexer, component_indexer, parsed_params.ref_hide = extra.references ? '' : 'hide' // footprint positioning + parsed_params.x = point.x + parsed_params.y = -point.y + parsed_params.r = point.r + parsed_params.rot = point.r // to be deprecated + parsed_params.xy = `${point.x} ${-point.y}` parsed_params.at = `(at ${point.x} ${-point.y} ${point.r})` - parsed_params.rot = point.r - parsed_params.ixy = (x, y) => { - const sign = point.meta.mirrored ? -1 : 1 - return `${sign * x} ${y}` + + const internal_xyfunc = (x, y, resist) => { + const sign = resist ? 1 : (point.meta.mirrored ? -1 : 1) + return xy_obj(sign * x, y) } - const xyfunc = (x, y, resist) => { + parsed_params.isxy = (x, y) => internal_xyfunc(x, y, false) + parsed_params.iaxy = (x, y) => internal_xyfunc(x, y, true) + + const external_xyfunc = (x, y, resist) => { const new_anchor = anchor({ shift: [x, -y], resist: resist }, '_internal_footprint_xy', points, point)(units) - return `${new_anchor.x} ${-new_anchor.y}` + return xy_obj(new_anchor.x, -new_anchor.y) } - parsed_params.xy = (x, y) => xyfunc(x, y, true) - parsed_params.sxy = (x, y) => xyfunc(x, y, false) + parsed_params.esxy = (x, y) => external_xyfunc(x, y, false) + parsed_params.eaxy = (x, y) => external_xyfunc(x, y, true) // allowing footprints to add dynamic nets parsed_params.local_net = suffix => { const net = `${component_ref}_${suffix}` const index = net_indexer(net) - return { - name: net, - index: index, - str: `(net ${index} "${net}")` - } + return net_obj(net, index) } return fp.body(parsed_params) diff --git a/test/helpers/mock_footprints.js b/test/helpers/mock_footprints.js index 0854335..14edaf3 100644 --- a/test/helpers/mock_footprints.js +++ b/test/helpers/mock_footprints.js @@ -13,15 +13,15 @@ exports.inject = (ergogen) => { ${p.at /* parametric position */} - (pad 1 smd rect (at ${p.ixy(0, 0)} ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1.str} (solder_mask_margin 0.2)) + (pad 1 smd rect (at ${p.isxy(0, 0)} ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.P1} (solder_mask_margin 0.2)) - (pad 2 smd rect (at ${p.ixy(5, 5)} ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1.str} (solder_mask_margin 0.2)) + (pad 2 smd rect (at ${p.isxy(5, 5)} ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.P1} (solder_mask_margin 0.2)) ) - (segment (start ${p.sxy(0, 0)}) (end ${p.sxy(5, 5)}) (width ${p.width}) (layer ${p.side}.Cu) (net ${p.P1.index})) + (segment (start ${p.esxy(0, 0)}) (end ${p.esxy(5, 5)}) (width ${p.width}) (layer ${p.side}.Cu) (net ${p.P1.index})) ` } @@ -40,11 +40,11 @@ exports.inject = (ergogen) => { ${p.at /* parametric position */} - (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1.str} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.P1} (solder_mask_margin 0.2)) - (pad 2 smd rect (at 5 5 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1.str} (solder_mask_margin 0.2)) + (pad 2 smd rect (at ${p.iaxy(5, 5)} ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.P1} (solder_mask_margin 0.2)) ) @@ -52,7 +52,7 @@ exports.inject = (ergogen) => { (connect_pads (clearance 0.508)) (min_thickness 0.254) (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) - (polygon (pts (xy ${p.xy(5, 5)}) (xy ${p.xy(5, -5)}) (xy ${p.xy(-5, -5)}) (xy ${p.xy(-5, 5)}))) + (polygon (pts (xy ${p.eaxy(5, 5)}) (xy ${p.eaxy(5, -5)}) (xy ${p.eaxy(-5, -5)}) (xy ${p.eaxy(-5, 5)}))) ) ` @@ -71,14 +71,14 @@ exports.inject = (ergogen) => { ${p.at /* parametric position */} - (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.local_net('1').str} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.local_net('1')} (solder_mask_margin 0.2)) - (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.local_net('2').str} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.local_net('2')} (solder_mask_margin 0.2)) - (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.local_net('3').str} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) + ${p.local_net('3')} (solder_mask_margin 0.2)) ) From e1697e367f7a74a6508a3fa86d3ea57cd151f1d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 22 Jan 2024 15:56:45 +0100 Subject: [PATCH 097/120] Autobind vs. mirroring bugfix (#119) --- src/cli.js | 6 +- src/points.js | 134 ++++++++++-------- test/cli/big/reference/points/points.yaml | 5 + test/cli/minimal/reference/points/points.yaml | 7 +- test/points/default___points.json | 7 + test/points/mirrors___points.json | 64 ++++----- 6 files changed, 130 insertions(+), 93 deletions(-) diff --git a/src/cli.js b/src/cli.js index bdaeac0..fe0615b 100755 --- a/src/cli.js +++ b/src/cli.js @@ -132,12 +132,14 @@ try { // output helpers +const yamldump = data => yaml.dump(data, {indent: 4, noRefs: true}) + const single = (data, rel) => { if (!data) return const abs = path.join(args.o, rel) fs.mkdirpSync(path.dirname(abs)) if (abs.endsWith('.yaml')) { - fs.writeFileSync(abs, yaml.dump(data, {indent: 4})) + fs.writeFileSync(abs, yamldump(data)) } else { fs.writeFileSync(abs, data) } @@ -148,7 +150,7 @@ const composite = (data, rel) => { const abs = path.join(args.o, rel) if (data.yaml) { fs.mkdirpSync(path.dirname(abs)) - fs.writeFileSync(abs + '.yaml', yaml.dump(data.yaml, {indent: 4})) + fs.writeFileSync(abs + '.yaml', yamldump(data.yaml)) } for (const format of ['svg', 'dxf', 'jscad']) { if (data[format]) { diff --git a/src/points.js b/src/points.js index 72eecc8..8f50904 100644 --- a/src/points.js +++ b/src/points.js @@ -21,7 +21,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, a.unexpected(zone, `points.zones.${zone_name}`, ['columns', 'rows', 'key']) // the anchor comes from "above", because it needs other zones too (for references) - const cols = a.sane(zone.columns || {}, `points.zones.${zone_name}.columns`, 'object')() + const cols = zone.columns = a.sane(zone.columns || {}, `points.zones.${zone_name}.columns`, 'object')() const zone_wide_rows = a.sane(zone.rows || {}, `points.zones.${zone_name}.rows`, 'object')() for (const [key, val] of Object.entries(zone_wide_rows)) { zone_wide_rows[key] = val || {} // no check yet, as it will be extended later @@ -43,7 +43,6 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, // column layout - const col_minmax = {} if (!Object.keys(cols).length) { cols.default = {} } @@ -53,7 +52,6 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, // column-level sanitization col = col || {} - col_minmax[col_name] = {min: Infinity, max: -Infinity} a.unexpected( col, @@ -184,10 +182,6 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, point.meta = key points[key.name] = point - // collect minmax stats for autobind - col_minmax[col_name].min = Math.min(col_minmax[col_name].min, point.y) - col_minmax[col_name].max = Math.max(col_minmax[col_name].max, point.y) - // advance the running anchor to the next position running_anchor.shift([0, key.padding]) } @@ -195,56 +189,6 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, first_col = false } - // autobind - - let col_names = Object.keys(col_minmax) - let col_index = 0 - for (const [col_name, bounds] of Object.entries(col_minmax)) { - for (const point of Object.values(points)) { - if (point.meta.col.name != col_name) continue - if (!point.meta.autobind) continue - const autobind = a.sane(point.meta.autobind, `${point.meta.name}.autobind`, 'number')(units) - // specify default as -1, so we can recognize where it was left undefined even after number-ification - const bind = point.meta.bind = a.trbl(point.meta.bind, `${point.meta.name}.bind`, -1)(units) - - // up - if (bind[0] == -1) { - if (point.y < bounds.max) bind[0] = autobind - else bind[0] = 0 - - } - - // right - if (bind[1] == -1) { - bind[1] = 0 - if (col_index < col_names.length - 1) { - const right = col_minmax[col_names[col_index + 1]] - if (point.y >= right.min && point.y <= right.max) { - bind[1] = autobind - } - } - } - - // down - if (bind[2] == -1) { - if (point.y > bounds.min) bind[2] = autobind - else bind[2] = 0 - } - - // left - if (bind[3] == -1) { - bind[3] = 0 - if (col_index > 0) { - const left = col_minmax[col_names[col_index - 1]] - if (point.y >= left.min && point.y <= left.max) { - bind[3] = autobind - } - } - } - } - col_index++ - } - return points } @@ -274,6 +218,79 @@ const perform_mirror = exports._perform_mirror = (point, axis) => { return [mirrored_name, mp] } +const perform_autobind = exports._perform_autobind = (points, units) => { + + const bounds = {} + const col_lists = {} + const mirrorzone = p => (p.meta.mirrored ? 'mirror_' : '') + p.meta.zone.name + + // round one: get column upper/lower bounds and per-zone column lists + for (const p of Object.values(points)) { + + const zone = mirrorzone(p) + const col = p.meta.col.name + + if (!bounds[zone]) bounds[zone] = {} + if (!bounds[zone][col]) bounds[zone][col] = {min: Infinity, max: -Infinity} + if (!col_lists[zone]) col_lists[zone] = Object.keys(p.meta.zone.columns) + + bounds[zone][col].min = Math.min(bounds[zone][col].min, p.y) + bounds[zone][col].max = Math.max(bounds[zone][col].max, p.y) + } + + // round two: apply autobind as appropriate + for (const p of Object.values(points)) { + + const autobind = a.sane(p.meta.autobind, `${p.meta.name}.autobind`, 'number')(units) + if (!autobind) continue + + const zone = mirrorzone(p) + const col = p.meta.col.name + const col_list = col_lists[zone] + const col_bounds = bounds[zone][col] + + + // specify default as -1, so we can recognize where it was left undefined even after number-ification + const bind = p.meta.bind = a.trbl(p.meta.bind, `${p.meta.name}.bind`, -1)(units) + + // up + if (bind[0] == -1) { + if (p.y < col_bounds.max) bind[0] = autobind + else bind[0] = 0 + } + + // down + if (bind[2] == -1) { + if (p.y > col_bounds.min) bind[2] = autobind + else bind[2] = 0 + } + + // left + if (bind[3] == -1) { + bind[3] = 0 + const col_index = col_list.indexOf(col) + if (col_index > 0) { + const left = bounds[zone][col_list[col_index - 1]] + if (left && p.y >= left.min && p.y <= left.max) { + bind[3] = autobind + } + } + } + + // right + if (bind[1] == -1) { + bind[1] = 0 + const col_index = col_list.indexOf(col) + if (col_index < col_list.length - 1) { + const right = bounds[zone][col_list[col_index + 1]] + if (right && p.y >= right.min && p.y <= right.max) { + bind[1] = autobind + } + } + } + } +} + exports.parse = (config, units) => { // config sanitization @@ -369,6 +386,9 @@ exports.parse = (config, units) => { filtered[k] = p } + // apply autobind + perform_autobind(filtered, units) + // done return filtered } diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index 79b590d..fc6b036 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -24,6 +24,11 @@ matrix: colrow: default_default name: matrix zone: + columns: + default: + rows: {} + key: {} + name: default name: matrix col: rows: {} diff --git a/test/cli/minimal/reference/points/points.yaml b/test/cli/minimal/reference/points/points.yaml index 9728c56..a2c7bb5 100644 --- a/test/cli/minimal/reference/points/points.yaml +++ b/test/cli/minimal/reference/points/points.yaml @@ -25,14 +25,17 @@ matrix_col_row: name: matrix_col_row zone: columns: - col: &ref_0 + col: rows: {} key: {} name: col rows: row: {} name: matrix - col: *ref_0 + col: + rows: {} + key: {} + name: col row: row bind: - 0 diff --git a/test/points/default___points.json b/test/points/default___points.json index cc98b68..4536086 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -27,6 +27,13 @@ "colrow": "default_default", "name": "matrix", "zone": { + "columns": { + "default": { + "rows": {}, + "key": {}, + "name": "default" + } + }, "name": "matrix" }, "col": { diff --git a/test/points/mirrors___points.json b/test/points/mirrors___points.json index 51aafec..96b7841 100644 --- a/test/points/mirrors___points.json +++ b/test/points/mirrors___points.json @@ -61,13 +61,13 @@ "name": "left" }, "row": "bottom", + "mirrored": false, "bind": [ - 10, + 0, 10, 0, 0 - ], - "mirrored": false + ] } }, "matrix_right_bottom": { @@ -125,13 +125,13 @@ "name": "right" }, "row": "bottom", + "mirrored": false, "bind": [ 10, 0, 0, 10 - ], - "mirrored": false + ] } }, "matrix_right_top": { @@ -189,13 +189,13 @@ "name": "right" }, "row": "top", + "mirrored": false, "bind": [ 0, 0, 10, - 10 - ], - "mirrored": false + 0 + ] } }, "other_left_bottom": { @@ -260,13 +260,13 @@ "name": "left" }, "row": "bottom", + "mirrored": false, "bind": [ - 10, + 0, 10, 0, 0 - ], - "mirrored": false + ] } }, "other_right_bottom": { @@ -324,13 +324,13 @@ "name": "right" }, "row": "bottom", + "mirrored": false, "bind": [ 10, 0, 0, 10 - ], - "mirrored": false + ] } }, "other_right_top": { @@ -388,13 +388,13 @@ "name": "right" }, "row": "top", + "mirrored": false, "bind": [ 0, 0, 10, - 10 - ], - "mirrored": false + 0 + ] } }, "mirror_other_left_top": { @@ -459,13 +459,13 @@ "name": "left" }, "row": "top", + "mirrored": true, "bind": [ 0, 10, - 10, + 0, 0 - ], - "mirrored": true + ] } }, "mirror_other_right_bottom": { @@ -523,13 +523,13 @@ "name": "right" }, "row": "bottom", + "mirrored": true, "bind": [ 10, 0, 0, - 10 - ], - "mirrored": true + 0 + ] } }, "mirror_other_right_top": { @@ -587,13 +587,13 @@ "name": "right" }, "row": "top", + "mirrored": true, "bind": [ 0, 0, 10, 10 - ], - "mirrored": true + ] } }, "mirror_matrix_left_top": { @@ -658,13 +658,13 @@ "name": "left" }, "row": "top", + "mirrored": true, "bind": [ 0, 10, - 10, + 0, 0 - ], - "mirrored": true + ] } }, "mirror_matrix_right_bottom": { @@ -722,13 +722,13 @@ "name": "right" }, "row": "bottom", + "mirrored": true, "bind": [ 10, 0, 0, - 10 - ], - "mirrored": true + 0 + ] } }, "mirror_matrix_right_top": { @@ -786,13 +786,13 @@ "name": "right" }, "row": "top", + "mirrored": true, "bind": [ 0, 0, 10, 10 - ], - "mirrored": true + ] } } } From 353e07654daae3f732d710f756210a9df9132ded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 22 Jan 2024 17:33:56 +0100 Subject: [PATCH 098/120] Package audit --- package-lock.json | 207 +++++++++++++++++++++++++++++++--------------- 1 file changed, 140 insertions(+), 67 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5b3fc3..a3cc5ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,17 +47,89 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { "version": "7.20.10", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", @@ -98,13 +170,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -145,34 +218,34 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -222,30 +295,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -275,13 +348,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -360,9 +433,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -383,34 +456,34 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", - "debug": "^4.1.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -418,13 +491,13 @@ } }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1381,9 +1454,9 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" @@ -2749,9 +2822,9 @@ "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" From 21e50cb11d6a77eb556ac215613f1f8a297fd188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1n=20D=C3=A9nes?= Date: Mon, 22 Jan 2024 17:34:20 +0100 Subject: [PATCH 099/120] 4.0.5 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a3cc5ab..35bdcc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ergogen", - "version": "4.0.4", + "version": "4.0.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ergogen", - "version": "4.0.4", + "version": "4.0.5", "license": "MIT", "dependencies": { "fs-extra": "^11.1.0", diff --git a/package.json b/package.json index 6b7afb9..8cd2a34 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "4.0.4", + "version": "4.0.5", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", From 96d043126aa755de307d40984083593fcd7e2e81 Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Tue, 22 Mar 2022 20:10:26 +0100 Subject: [PATCH 100/120] wip --- .envrc | 1 + 45treus.yaml | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++ shell.nix | 8 +++++ 3 files changed, 100 insertions(+) create mode 100644 .envrc create mode 100644 45treus.yaml create mode 100644 shell.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..051d09d --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +eval "$(lorri direnv)" diff --git a/45treus.yaml b/45treus.yaml new file mode 100644 index 0000000..ff11f2e --- /dev/null +++ b/45treus.yaml @@ -0,0 +1,91 @@ +points: + key: + footprints: + mx_hotswap: + type: mx + params: + hotswap: true + reverse: true + keycaps: true + nets: + # from: P1 + # to: P2 + from: =colrow + to: =column_net + diode: + type: diode + nets: + # from: P3 + # to: P4 + from: =colrow + to: =row_net + anchor: + shift: [0, -5] + zones: + matrix: + columns: + pinky: + key: { column_net: P20 } + ring: + stagger: 3 + key: { column_net: P19 } + middle: + stagger: 5 + key: { column_net: P18 } + index: + stagger: -5 + key: { column_net: P17 } + inner: + stagger: -6 + key: { column_net: P16 } + thumb: + stagger: 10 + row_overrides: + bottom: + key: { column_net: P15 } + rows: + bottom: + row_net: P6 + home: + row_net: P5 + top: + row_net: P4 + num: + row_net: P3 + + rotate: -23 + mirror: + ref: matrix_thumb_bottom + distance: 42 + +outlines: + exports: + plate: + - type: keys + side: both + size: 30 + corner: 3 + - type: polygon + points: + - ref: matrix_inner_num + shift: [0, 10] + - ref: matrix_inner_bottom + shift: [0, -10] + - ref: mirror_matrix_inner_bottom + shift: [0, -10] + - ref: mirror_matrix_inner_num + shift: [0, 10] + +cases: + case: + - type: outline + name: plate + +pcbs: + main: + outlines: + plate: + outline: plate + footprints: + mcu: + type: promicro diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..cdbce81 --- /dev/null +++ b/shell.nix @@ -0,0 +1,8 @@ +{ pkgs ? import {} }: + +pkgs.mkShell { + buildInputs = with pkgs; [ + bashInteractive + nodejs-16_x + ]; +} From 52af7f0a20b3d1b9a60005ce0cbedb7d43faa61a Mon Sep 17 00:00:00 2001 From: foosinn Date: Wed, 23 Mar 2022 10:19:18 +0100 Subject: [PATCH 101/120] fix case --- 45treus.yaml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/45treus.yaml b/45treus.yaml index ff11f2e..c3cee66 100644 --- a/45treus.yaml +++ b/45treus.yaml @@ -21,6 +21,7 @@ points: to: =row_net anchor: shift: [0, -5] + zones: matrix: columns: @@ -63,18 +64,18 @@ outlines: plate: - type: keys side: both - size: 30 - corner: 3 + size: 25 + corner: 1 - type: polygon points: - ref: matrix_inner_num - shift: [0, 10] - - ref: matrix_inner_bottom - shift: [0, -10] - - ref: mirror_matrix_inner_bottom - shift: [0, -10] + shift: [0, -5] + - ref: matrix_thumb_bottom + shift: [-15, 0] + - ref: mirror_matrix_thumb_bottom + shift: [-15, 0] - ref: mirror_matrix_inner_num - shift: [0, 10] + shift: [0, -5] cases: case: @@ -89,3 +90,7 @@ pcbs: footprints: mcu: type: promicro + anchor: + rotate: 270 + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [0, -8] From 1190f35c66cbdfec96c44f38f880e944d167becf Mon Sep 17 00:00:00 2001 From: foosinn Date: Wed, 23 Mar 2022 10:19:25 +0100 Subject: [PATCH 102/120] add makefile and kicad project --- .gitignore | 4 +++- Makefile | 3 +++ kicad/45treus/45treus.kicad_pcb | 1 + kicad/45treus/45treus.pro | 33 +++++++++++++++++++++++++++++++++ kicad/45treus/45treus.sch | 4 ++++ kicad/45treus/fp-info-cache | 1 + 6 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 Makefile create mode 100644 kicad/45treus/45treus.kicad_pcb create mode 100644 kicad/45treus/45treus.pro create mode 100644 kicad/45treus/45treus.sch create mode 100644 kicad/45treus/fp-info-cache diff --git a/.gitignore b/.gitignore index 8e410d4..db1e38c 100644 --- a/.gitignore +++ b/.gitignore @@ -117,4 +117,6 @@ dist # Project specific output -temp* \ No newline at end of file +temp* +kicad/45treus/main.pro +kicad/45treus/main.kicad_pcb diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5dab740 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +all: + node src/cli.js 45treus.yaml -o output + cp output/pcbs/main.kicad_pcb kicad/45treus/ diff --git a/kicad/45treus/45treus.kicad_pcb b/kicad/45treus/45treus.kicad_pcb new file mode 100644 index 0000000..02c8ecb --- /dev/null +++ b/kicad/45treus/45treus.kicad_pcb @@ -0,0 +1 @@ +(kicad_pcb (version 4) (host kicad "dummy file") ) diff --git a/kicad/45treus/45treus.pro b/kicad/45treus/45treus.pro new file mode 100644 index 0000000..152769c --- /dev/null +++ b/kicad/45treus/45treus.pro @@ -0,0 +1,33 @@ +update=22/05/2015 07:44:53 +version=1 +last_client=kicad +[general] +version=1 +RootSch= +BoardNm= +[pcbnew] +version=1 +LastNetListRead= +UseCmpFile=1 +PadDrill=0.600000000000 +PadDrillOvalY=0.600000000000 +PadSizeH=1.500000000000 +PadSizeV=1.500000000000 +PcbTextSizeV=1.500000000000 +PcbTextSizeH=1.500000000000 +PcbTextThickness=0.300000000000 +ModuleTextSizeV=1.000000000000 +ModuleTextSizeH=1.000000000000 +ModuleTextSizeThickness=0.150000000000 +SolderMaskClearance=0.000000000000 +SolderMaskMinWidth=0.000000000000 +DrawSegmentWidth=0.200000000000 +BoardOutlineThickness=0.100000000000 +ModuleOutlineThickness=0.150000000000 +[cvpcb] +version=1 +NetIExt=net +[eeschema] +version=1 +LibDir= +[eeschema/libraries] diff --git a/kicad/45treus/45treus.sch b/kicad/45treus/45treus.sch new file mode 100644 index 0000000..fff8c68 --- /dev/null +++ b/kicad/45treus/45treus.sch @@ -0,0 +1,4 @@ +EESchema Schematic File Version 2 +EELAYER 25 0 +EELAYER END +$EndSCHEMATC diff --git a/kicad/45treus/fp-info-cache b/kicad/45treus/fp-info-cache new file mode 100644 index 0000000..573541a --- /dev/null +++ b/kicad/45treus/fp-info-cache @@ -0,0 +1 @@ +0 From 99acabbd124c10ed7acb245c57e5cd31e0c51ad7 Mon Sep 17 00:00:00 2001 From: foosinn Date: Wed, 23 Mar 2022 12:56:58 +0100 Subject: [PATCH 103/120] fix pin assignments --- 45treus.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/45treus.yaml b/45treus.yaml index c3cee66..325a97d 100644 --- a/45treus.yaml +++ b/45treus.yaml @@ -35,15 +35,15 @@ points: key: { column_net: P18 } index: stagger: -5 - key: { column_net: P17 } + key: { column_net: P15 } inner: stagger: -6 - key: { column_net: P16 } + key: { column_net: P14 } thumb: stagger: 10 row_overrides: bottom: - key: { column_net: P15 } + key: { column_net: P16 } rows: bottom: row_net: P6 From bec14b17058c14a03688e916d9e55e862889a3e8 Mon Sep 17 00:00:00 2001 From: foosinn Date: Wed, 23 Mar 2022 12:57:07 +0100 Subject: [PATCH 104/120] remove reverse option --- 45treus.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/45treus.yaml b/45treus.yaml index 325a97d..3f3b93c 100644 --- a/45treus.yaml +++ b/45treus.yaml @@ -5,7 +5,7 @@ points: type: mx params: hotswap: true - reverse: true + reverse: false keycaps: true nets: # from: P1 From 6afbf0385a9a29564174ab9ed6fc235e675490d2 Mon Sep 17 00:00:00 2001 From: foosinn Date: Wed, 23 Mar 2022 12:57:19 +0100 Subject: [PATCH 105/120] rotate the diode for cleaner wireing --- 45treus.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/45treus.yaml b/45treus.yaml index 3f3b93c..24fb533 100644 --- a/45treus.yaml +++ b/45treus.yaml @@ -21,6 +21,8 @@ points: to: =row_net anchor: shift: [0, -5] + rotate: 180 + zones: matrix: From 85a13fa4e7a19587bb89832f471d5cc6fa3f5481 Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Wed, 23 Mar 2022 13:42:08 +0100 Subject: [PATCH 106/120] add first routed version --- .gitignore | 245 +- kicad/45treus/main_version_001.kicad_pcb | 3876 ++++++++++++++++++++++ kicad/45treus/main_version_001.pro | 33 + 3 files changed, 4032 insertions(+), 122 deletions(-) create mode 100644 kicad/45treus/main_version_001.kicad_pcb create mode 100644 kicad/45treus/main_version_001.pro diff --git a/.gitignore b/.gitignore index db1e38c..da89f90 100644 --- a/.gitignore +++ b/.gitignore @@ -1,122 +1,123 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env -.env.test - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* - -# Project specific -output -temp* -kicad/45treus/main.pro -kicad/45treus/main.kicad_pcb +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# Project specific +output +temp* +kicad/45treus/main.pro +kicad/45treus/main.kicad_pcb +kicad/45treus/main.kicad_pcb-bak diff --git a/kicad/45treus/main_version_001.kicad_pcb b/kicad/45treus/main_version_001.kicad_pcb new file mode 100644 index 0000000..1cd15ca --- /dev/null +++ b/kicad/45treus/main_version_001.kicad_pcb @@ -0,0 +1,3876 @@ +(kicad_pcb (version 20171130) (host pcbnew 5.1.12) + + (general + (thickness 1.6) + (drawings 86) + (tracks 596) + (zones 0) + (modules 85) + (nets 65) + ) + + (page A3) + (title_block + (title main) + (rev v1.0.0) + (company Unknown) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + (net 1 pinky_bottom) + (net 2 P20) + (net 3 P6) + (net 4 pinky_home) + (net 5 P5) + (net 6 pinky_top) + (net 7 P4) + (net 8 pinky_num) + (net 9 P3) + (net 10 ring_bottom) + (net 11 P19) + (net 12 ring_home) + (net 13 ring_top) + (net 14 ring_num) + (net 15 middle_bottom) + (net 16 P18) + (net 17 middle_home) + (net 18 middle_top) + (net 19 middle_num) + (net 20 index_bottom) + (net 21 P15) + (net 22 index_home) + (net 23 index_top) + (net 24 index_num) + (net 25 inner_bottom) + (net 26 P14) + (net 27 inner_home) + (net 28 inner_top) + (net 29 inner_num) + (net 30 thumb_bottom) + (net 31 P16) + (net 32 mirror_pinky_bottom) + (net 33 mirror_pinky_home) + (net 34 mirror_pinky_top) + (net 35 mirror_pinky_num) + (net 36 mirror_ring_bottom) + (net 37 mirror_ring_home) + (net 38 mirror_ring_top) + (net 39 mirror_ring_num) + (net 40 mirror_middle_bottom) + (net 41 mirror_middle_home) + (net 42 mirror_middle_top) + (net 43 mirror_middle_num) + (net 44 mirror_index_bottom) + (net 45 mirror_index_home) + (net 46 mirror_index_top) + (net 47 mirror_index_num) + (net 48 mirror_inner_bottom) + (net 49 mirror_inner_home) + (net 50 mirror_inner_top) + (net 51 mirror_inner_num) + (net 52 mirror_thumb_bottom) + (net 53 RAW) + (net 54 GND) + (net 55 RST) + (net 56 VCC) + (net 57 P21) + (net 58 P10) + (net 59 P1) + (net 60 P0) + (net 61 P2) + (net 62 P7) + (net 63 P8) + (net 64 P9) + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net GND) + (add_net P0) + (add_net P1) + (add_net P10) + (add_net P14) + (add_net P15) + (add_net P16) + (add_net P18) + (add_net P19) + (add_net P2) + (add_net P20) + (add_net P21) + (add_net P3) + (add_net P4) + (add_net P5) + (add_net P6) + (add_net P7) + (add_net P8) + (add_net P9) + (add_net RAW) + (add_net RST) + (add_net VCC) + (add_net index_bottom) + (add_net index_home) + (add_net index_num) + (add_net index_top) + (add_net inner_bottom) + (add_net inner_home) + (add_net inner_num) + (add_net inner_top) + (add_net middle_bottom) + (add_net middle_home) + (add_net middle_num) + (add_net middle_top) + (add_net mirror_index_bottom) + (add_net mirror_index_home) + (add_net mirror_index_num) + (add_net mirror_index_top) + (add_net mirror_inner_bottom) + (add_net mirror_inner_home) + (add_net mirror_inner_num) + (add_net mirror_inner_top) + (add_net mirror_middle_bottom) + (add_net mirror_middle_home) + (add_net mirror_middle_num) + (add_net mirror_middle_top) + (add_net mirror_pinky_bottom) + (add_net mirror_pinky_home) + (add_net mirror_pinky_num) + (add_net mirror_pinky_top) + (add_net mirror_ring_bottom) + (add_net mirror_ring_home) + (add_net mirror_ring_num) + (add_net mirror_ring_top) + (add_net mirror_thumb_bottom) + (add_net pinky_bottom) + (add_net pinky_home) + (add_net pinky_num) + (add_net pinky_top) + (add_net ring_bottom) + (add_net ring_home) + (add_net ring_num) + (add_net ring_top) + (add_net thumb_bottom) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 0 0 337) + (fp_text reference S1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 1 pinky_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at -1.953656 4.602524 157) + (fp_text reference D1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 1 pinky_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 1 pinky_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 1 pinky_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 7.423891 -17.489592 337) + (fp_text reference S2 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 4 pinky_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 5.470236 -12.887068 157) + (fp_text reference D2 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 4 pinky_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 4 pinky_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 4 pinky_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 14.847783 -34.979184 337) + (fp_text reference S3 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 6 pinky_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 12.894127 -30.37666 157) + (fp_text reference D3 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 6 pinky_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 6 pinky_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 6 pinky_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 22.271674 -52.468777 337) + (fp_text reference S4 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 8 pinky_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 20.318019 -47.866252 157) + (fp_text reference D4 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 8 pinky_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 8 pinky_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 8 pinky_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 18.661786 4.662377 337) + (fp_text reference S5 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 10 ring_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 16.70813 9.264901 157) + (fp_text reference D5 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 10 ring_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 10 ring_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 10 ring_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 26.085677 -12.827215 337) + (fp_text reference S6 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 12 ring_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 24.132021 -8.224691 157) + (fp_text reference D6 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 12 ring_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 12 ring_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 12 ring_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 33.509569 -30.316808 337) + (fp_text reference S7 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 13 ring_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 31.555913 -25.714283 157) + (fp_text reference D7 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 13 ring_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 13 ring_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 13 ring_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 40.93346 -47.8064 337) + (fp_text reference S8 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 14 ring_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 38.979804 -43.203876 157) + (fp_text reference D8 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 14 ring_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 14 ring_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 14 ring_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 38.105034 7.483744 337) + (fp_text reference S9 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 15 middle_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 36.151378 12.086268 157) + (fp_text reference D9 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 15 middle_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 15 middle_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 15 middle_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 45.528925 -10.005848 337) + (fp_text reference S10 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 17 middle_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 43.575269 -5.403324 157) + (fp_text reference D10 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 17 middle_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 17 middle_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 17 middle_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 52.952816 -27.49544 337) + (fp_text reference S11 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 18 middle_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 50.999161 -22.892916 157) + (fp_text reference D11 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 18 middle_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 18 middle_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 18 middle_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 60.376708 -44.985033 337) + (fp_text reference S12 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 19 middle_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 58.423052 -40.382508 157) + (fp_text reference D12 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 19 middle_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 19 middle_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 19 middle_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 53.64097 19.51016 337) + (fp_text reference S13 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 20 index_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 51.687314 24.112684 157) + (fp_text reference D13 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 20 index_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 20 index_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 20 index_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 61.064862 2.020567 337) + (fp_text reference S14 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 22 index_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 59.111206 6.623092 157) + (fp_text reference D14 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 22 index_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 22 index_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 22 index_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 68.488753 -15.469025 337) + (fp_text reference S15 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 23 index_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 66.535097 -10.8665 157) + (fp_text reference D15 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 23 index_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 23 index_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 23 index_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 75.912644 -32.958617 337) + (fp_text reference S16 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 24 index_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 73.958989 -28.356093 157) + (fp_text reference D16 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 24 index_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 24 index_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 24 index_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 68.786176 32.45708 337) + (fp_text reference S17 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 25 inner_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 66.83252 37.059605 157) + (fp_text reference D17 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 25 inner_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 25 inner_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 25 inner_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 76.210067 14.967488 337) + (fp_text reference S18 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 27 inner_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 74.256411 19.570012 157) + (fp_text reference D18 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 27 inner_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 27 inner_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 27 inner_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 83.633958 -2.522104 337) + (fp_text reference S19 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 28 inner_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 81.680303 2.08042 157) + (fp_text reference D19 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 28 inner_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 28 inner_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 28 inner_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 91.05785 -20.011696 337) + (fp_text reference S20 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 29 inner_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 89.104194 -15.409172 157) + (fp_text reference D20 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 29 inner_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 29 inner_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 29 inner_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 90.183079 30.675923 337) + (fp_text reference S21 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 30 thumb_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 31 P16)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 88.229423 35.278448 157) + (fp_text reference D21 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 30 thumb_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 30 thumb_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 30 thumb_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 222.366158 0 23) + (fp_text reference S22 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 32 mirror_pinky_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 224.319814 4.602524 203) + (fp_text reference D22 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 32 mirror_pinky_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 32 mirror_pinky_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 32 mirror_pinky_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 214.942267 -17.489592 23) + (fp_text reference S23 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 33 mirror_pinky_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 216.895922 -12.887068 203) + (fp_text reference D23 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 33 mirror_pinky_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 33 mirror_pinky_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 33 mirror_pinky_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 207.518375 -34.979184 23) + (fp_text reference S24 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 34 mirror_pinky_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 209.472031 -30.37666 203) + (fp_text reference D24 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 34 mirror_pinky_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 34 mirror_pinky_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 34 mirror_pinky_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 200.094484 -52.468777 23) + (fp_text reference S25 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 35 mirror_pinky_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 202.048139 -47.866252 203) + (fp_text reference D25 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 35 mirror_pinky_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 35 mirror_pinky_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 35 mirror_pinky_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 203.704372 4.662377 23) + (fp_text reference S26 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 36 mirror_ring_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 205.658028 9.264901 203) + (fp_text reference D26 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 36 mirror_ring_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 36 mirror_ring_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 36 mirror_ring_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 196.280481 -12.827215 23) + (fp_text reference S27 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 37 mirror_ring_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 198.234137 -8.224691 203) + (fp_text reference D27 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 37 mirror_ring_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 37 mirror_ring_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 37 mirror_ring_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 188.85659 -30.316808 23) + (fp_text reference S28 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 38 mirror_ring_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 190.810245 -25.714283 203) + (fp_text reference D28 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 38 mirror_ring_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 38 mirror_ring_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 38 mirror_ring_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 181.432698 -47.8064 23) + (fp_text reference S29 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 39 mirror_ring_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 183.386354 -43.203876 203) + (fp_text reference D29 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 39 mirror_ring_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 39 mirror_ring_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 39 mirror_ring_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 184.261125 7.483744 23) + (fp_text reference S30 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 40 mirror_middle_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 186.21478 12.086268 203) + (fp_text reference D30 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 40 mirror_middle_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 40 mirror_middle_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 40 mirror_middle_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 176.837233 -10.005848 23) + (fp_text reference S31 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 41 mirror_middle_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 178.790889 -5.403324 203) + (fp_text reference D31 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 41 mirror_middle_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 41 mirror_middle_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 41 mirror_middle_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 169.413342 -27.49544 23) + (fp_text reference S32 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 42 mirror_middle_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 171.366997 -22.892916 203) + (fp_text reference D32 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 42 mirror_middle_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 42 mirror_middle_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 42 mirror_middle_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 161.98945 -44.985033 23) + (fp_text reference S33 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 43 mirror_middle_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 163.943106 -40.382508 203) + (fp_text reference D33 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 43 mirror_middle_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 43 mirror_middle_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 43 mirror_middle_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 168.725188 19.51016 23) + (fp_text reference S34 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 44 mirror_index_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 170.678844 24.112684 203) + (fp_text reference D34 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 44 mirror_index_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 44 mirror_index_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 44 mirror_index_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 161.301297 2.020567 23) + (fp_text reference S35 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 45 mirror_index_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 163.254952 6.623092 203) + (fp_text reference D35 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 45 mirror_index_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 45 mirror_index_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 45 mirror_index_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 153.877405 -15.469025 23) + (fp_text reference S36 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 46 mirror_index_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 155.831061 -10.8665 203) + (fp_text reference D36 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 46 mirror_index_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 46 mirror_index_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 46 mirror_index_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 146.453514 -32.958617 23) + (fp_text reference S37 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 47 mirror_index_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 148.407169 -28.356093 203) + (fp_text reference D37 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 47 mirror_index_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 47 mirror_index_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 47 mirror_index_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 153.579983 32.45708 23) + (fp_text reference S38 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 48 mirror_inner_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 155.533638 37.059605 203) + (fp_text reference D38 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 48 mirror_inner_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 48 mirror_inner_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 48 mirror_inner_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 146.156091 14.967488 23) + (fp_text reference S39 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 49 mirror_inner_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 148.109747 19.570012 203) + (fp_text reference D39 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 49 mirror_inner_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 49 mirror_inner_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 49 mirror_inner_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 138.7322 -2.522104 23) + (fp_text reference S40 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 50 mirror_inner_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 140.685855 2.08042 203) + (fp_text reference D40 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 50 mirror_inner_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 50 mirror_inner_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 50 mirror_inner_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 131.308308 -20.011696 23) + (fp_text reference S41 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 51 mirror_inner_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 133.261964 -15.409172 203) + (fp_text reference D41 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 51 mirror_inner_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 51 mirror_inner_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 51 mirror_inner_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 132.183079 30.675923 23) + (fp_text reference S42 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 52 mirror_thumb_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 31 P16)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 134.136735 35.278448 203) + (fp_text reference D42 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 52 mirror_thumb_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 52 mirror_thumb_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 52 mirror_thumb_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module ProMicro (layer F.Cu) (tedit 5B307E4C) (tstamp 0) + (at 111.183079 5.477896 270) + (fp_text reference MCU1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_text user RAW (at -13.97 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user GND (at -11.43 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user RST (at -8.89 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user VCC (at -6.35 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P21 (at -3.81 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P20 (at -1.27 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P19 (at 1.27 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P18 (at 3.81 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P15 (at 6.35 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P14 (at 8.89 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P16 (at 11.43 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P10 (at 13.97 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P01 (at -13.97 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P00 (at -11.43 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user GND (at -8.89 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user GND (at -6.35 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P02 (at -3.81 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P03 (at -1.27 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P04 (at 1.27 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P05 (at 3.81 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P06 (at 6.35 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P07 (at 8.89 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P08 (at 11.43 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P09 (at 13.97 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at -13.97 7.62 270) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 53 RAW)) + (pad 2 thru_hole circle (at -11.43 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 54 GND)) + (pad 3 thru_hole circle (at -8.89 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 55 RST)) + (pad 4 thru_hole circle (at -6.35 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 56 VCC)) + (pad 5 thru_hole circle (at -3.81 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 57 P21)) + (pad 6 thru_hole circle (at -1.27 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 2 P20)) + (pad 7 thru_hole circle (at 1.27 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 11 P19)) + (pad 8 thru_hole circle (at 3.81 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 16 P18)) + (pad 9 thru_hole circle (at 6.35 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 21 P15)) + (pad 10 thru_hole circle (at 8.89 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 26 P14)) + (pad 11 thru_hole circle (at 11.43 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 31 P16)) + (pad 12 thru_hole circle (at 13.97 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 58 P10)) + (pad 13 thru_hole circle (at -13.97 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 59 P1)) + (pad 14 thru_hole circle (at -11.43 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 60 P0)) + (pad 15 thru_hole circle (at -8.89 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 54 GND)) + (pad 16 thru_hole circle (at -6.35 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 54 GND)) + (pad 17 thru_hole circle (at -3.81 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 61 P2)) + (pad 18 thru_hole circle (at -1.27 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 9 P3)) + (pad 19 thru_hole circle (at 1.27 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 7 P4)) + (pad 20 thru_hole circle (at 3.81 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 5 P5)) + (pad 21 thru_hole circle (at 6.35 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 3 P6)) + (pad 22 thru_hole circle (at 8.89 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 62 P7)) + (pad 23 thru_hole circle (at 11.43 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 63 P8)) + (pad 24 thru_hole circle (at 13.97 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 64 P9)) + ) + + (gr_line (start -15.469945 7.012903) (end 5.701667 15.999719) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 6.092398 15.079214) (end 5.701667 15.999719) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 7.012903 15.469945) (end 7.794365 13.628935) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start -8.575827 -11.787926) (end 0.410989 -32.959537) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start -8.576002 -11.787514) (end -15.999719 5.701667) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start -15.079214 6.092398) (end -15.999719 5.701667) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 1.331494 -32.568806) (end 0.411164 -32.959949) (angle -0.02562647278) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start -7.655322 -11.397194) (end -8.575827 -11.787926) (angle -0.02562484615) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 6.271956 -46.76711) (end 15.258772 -67.938722) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 6.271781 -46.766698) (end 0.411164 -32.959949) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 33.139095 -61.435335) (end 16.570008 -68.468495) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 16.179277 -67.54799) (end 16.570008 -68.468495) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 7.192461 -46.376379) (end 6.271956 -46.76711) (angle -0.02562484615) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 7.794365 13.628935) (end 24.363452 20.662096) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 24.754183 19.741591) (end 24.363452 20.662096) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 25.674688 20.132322) (end 27.237613 16.450302) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 51.800881 -56.772958) (end 35.231793 -63.806118) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 34.841062 -62.885614) (end 35.231793 -63.806119) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 33.920557 -63.276345) (end 33.139095 -61.435335) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 27.237613 16.450302) (end 39.204176 21.529807) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 74.813502 -47.00468) (end 76.376426 -50.686699) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 75.455922 -51.07743) (end 76.376427 -50.686699) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 75.846653 -51.997935) (end 54.675041 -60.984751) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 54.28431 -60.064246) (end 54.675041 -60.984751) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 53.363805 -60.454978) (end 51.800881 -56.772958) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 38.171025 26.523063) (end 54.740113 33.556223) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 39.204176 21.529807) (end 37.641251 25.211827) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 38.561756 25.602558) (end 37.641251 25.211827) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 89.958707 -34.057759) (end 91.912363 -38.660284) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 90.991858 -39.051015) (end 91.912363 -38.660284) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 91.382589 -39.97152) (end 74.813502 -47.00468) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 53.316231 39.469983) (end 74.487842 48.456799) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 74.878573 47.536294) (end 74.487842 48.456799) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 75.799078 47.927025) (end 79.315658 39.642482) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 54.740113 33.556223) (end 52.786457 38.158747) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 53.706962 38.549478) (end 52.786457 38.158747) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 102.683699 -15.409172) (end 107.057568 -25.713363) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 106.137064 -26.104094) (end 107.057569 -25.713363) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 106.527795 -27.024599) (end 89.958707 -34.057759) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 79.315658 39.642482) (end 95.884746 46.675642) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 96.275477 45.755137) (end 95.884746 46.675642) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 97.195982 46.145868) (end 106.182798 24.974257) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 105.262293 24.583525) (end 106.182798 24.974257) (angle -9.618669957) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 216.664491 15.999719) (end 237.836103 7.012903) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 237.445372 6.092398) (end 237.836103 7.012903) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 238.365877 5.701667) (end 230.94216 -11.787514) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 221.955169 -32.959537) (end 230.941985 -11.787926) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 214.571793 13.628935) (end 215.353255 15.469945) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 216.27376 15.079214) (end 215.353255 15.469945) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 221.954994 -32.959949) (end 216.094377 -46.766698) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 207.107386 -67.938722) (end 216.094202 -46.76711) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 215.173698 -46.376379) (end 216.094377 -46.766698) (angle -0.02562484615) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 206.186882 -67.54799) (end 207.107386 -67.938722) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 205.79615 -68.468495) (end 189.227063 -61.435335) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 198.002706 20.662096) (end 214.571793 13.628935) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 195.128545 16.450302) (end 196.69147 20.132322) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 197.611975 19.741591) (end 196.69147 20.132322) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 189.227063 -61.435335) (end 188.445601 -63.276345) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 187.525096 -62.885614) (end 188.445601 -63.276345) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 187.134365 -63.806118) (end 170.565277 -56.772958) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 183.161982 21.529807) (end 195.128545 16.450302) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 170.565277 -56.772958) (end 169.002353 -60.454978) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 168.081848 -60.064246) (end 169.002353 -60.454978) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 167.691117 -60.984751) (end 146.519505 -51.997935) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 146.910236 -51.07743) (end 146.519505 -51.997935) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 145.989732 -50.686699) (end 147.552656 -47.00468) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 167.626045 33.556223) (end 184.195133 26.523063) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 183.804402 25.602558) (end 184.195133 26.523063) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 184.724907 25.211827) (end 183.161982 21.529807) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 147.552656 -47.00468) (end 130.983569 -39.97152) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 131.3743 -39.051015) (end 130.983569 -39.97152) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 130.453795 -38.660284) (end 132.407451 -34.057759) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 147.878316 48.456799) (end 169.049927 39.469983) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 168.659196 38.549478) (end 169.049927 39.469983) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 169.579701 38.158747) (end 167.626045 33.556223) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 143.0505 39.642482) (end 146.56708 47.927025) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 147.487585 47.536294) (end 146.56708 47.927025) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 132.407451 -34.057759) (end 115.838363 -27.024599) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 116.229094 -26.104094) (end 115.838363 -27.024599) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 115.30859 -25.713363) (end 119.682459 -15.409172) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 126.481412 46.675642) (end 143.0505 39.642482) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 117.103865 24.583525) (end 116.131014 24.814956) (angle -9.618669957) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 116.18336 24.974257) (end 125.170176 46.145868) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_arc (start 126.090681 45.755137) (end 125.170176 46.145868) (angle -90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 119.682459 -15.409172) (end 102.683699 -15.409172) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 106.235144 24.814956) (end 116.131014 24.814956) (angle 90) (layer Edge.Cuts) (width 0.15)) + + (via (at 171.45 11.43) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 21)) + (via (at 60.96 17.78) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 21)) + (via (at 180.34 -17.78) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16)) + (via (at 55.88 -19.05) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 11)) + (via (at 110.49 -12.7) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (via (at 22.86 -38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start -5.852066 2.722551) (end -5.460779 3.113838) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -5.852066 -4.783666) (end -5.852066 2.722551) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -5.52932 -5.106412) (end -5.852066 -4.783666) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -4.31647 3.113838) (end -3.715154 3.715154) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -5.460779 3.113838) (end -4.31647 3.113838) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -3.715154 3.715154) (end -3.472489 3.957818) (width 0.25) (layer B.Cu) (net 1)) + (segment (start 13.261394 -19.883105) (end 14.786394 -19.883105) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 6.015393 -12.637104) (end 13.261394 -19.883105) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 6.015393 -11.731264) (end 6.015393 -12.637104) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 7.362503 -10.384154) (end 6.015393 -11.731264) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 7.362503 -2.393513) (end 7.362503 -10.384154) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 20.685286 -37.372697) (end 22.210286 -37.372697) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 13.439284 -30.126695) (end 20.685286 -37.372697) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 13.439284 -29.220856) (end 13.439284 -30.126695) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 14.786394 -27.873746) (end 13.439284 -29.220856) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 14.786394 -19.883105) (end 14.786394 -27.873746) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 20.863176 -46.710448) (end 20.863176 -47.616289) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 22.210286 -45.363338) (end 20.863176 -46.710448) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 28.109177 -54.86229) (end 29.634177 -54.86229) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 20.863176 -47.616289) (end 28.109177 -54.86229) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 22.210286 -37.372697) (end 22.210286 -45.363338) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 225.758833 -17.024517) (end 218.334942 -24.448408) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 225.758833 -6.958816) (end 225.758833 -17.024517) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 218.334942 -34.514108) (end 210.91105 -41.938) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 218.334942 -24.448408) (end 218.334942 -34.514108) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 210.91105 -52.003702) (end 203.487159 -59.427593) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 210.91105 -41.938) (end 210.91105 -52.003702) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 76.460254 -22.894929) (end 103.563079 4.207896) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 54.121353 -22.894929) (end 76.460254 -22.894929) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 43.472976 -25.659103) (end 51.357179 -25.659103) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 31.032079 -38.1) (end 43.472976 -25.659103) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 51.357179 -25.659103) (end 54.121353 -22.894929) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 22.86 -38.1) (end 31.032079 -38.1) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 210.91105 -41.938) (end 210.91105 -41.938) (width 0.25) (layer B.Cu) (net 2) (tstamp 623B12B8)) + (via (at 210.91105 -41.938) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 131.106424 -12.642985) (end 110.547015 -12.642985) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 133.807121 -15.343682) (end 131.106424 -12.642985) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 210.91105 -41.938) (end 210.91105 -46.095444) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 210.91105 -46.095444) (end 206.160857 -50.845637) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 165.237541 -44.35968) (end 161.049184 -40.171323) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 206.160857 -50.845637) (end 204.416877 -50.845637) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 188.593887 -49.022056) (end 183.931511 -44.35968) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 183.931511 -44.35968) (end 165.237541 -44.35968) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 161.049184 -40.171323) (end 158.609544 -40.171323) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 158.609544 -40.171323) (end 147.20275 -28.764529) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 204.416877 -50.845637) (end 202.593296 -49.022056) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 202.593296 -49.022056) (end 188.593887 -49.022056) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 147.20275 -28.764529) (end 144.906466 -28.764529) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 144.906466 -28.764529) (end 133.807121 -17.665184) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 133.807121 -17.665184) (end 133.807121 -15.343682) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 103.563079 3.445822) (end 103.563079 4.207896) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 110.49 -3.481099) (end 103.563079 3.445822) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 110.49 -12.7) (end 110.49 -3.481099) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 0.709487 5.24723) (end 1.553467 6.09121) (width 0.25) (layer F.Cu) (net 3)) + (segment (start -0.434823 5.24723) (end 0.709487 5.24723) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 14.408566 6.09121) (end 18.226963 9.909607) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 1.553467 6.09121) (end 14.408566 6.09121) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 19.371273 9.909607) (end 20.215253 10.753587) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 18.226963 9.909607) (end 19.371273 9.909607) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 34.720081 9.320081) (end 38.1 12.7) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 21.648759 9.320081) (end 34.720081 9.320081) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 20.215253 10.753587) (end 21.648759 9.320081) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 38.814521 12.730974) (end 39.658501 13.574954) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 37.670211 12.730974) (end 38.814521 12.730974) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 48.422881 24.75739) (end 53.206147 24.75739) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 39.658501 15.99301) (end 48.422881 24.75739) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 39.658501 13.574954) (end 39.658501 15.99301) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 54.350457 24.75739) (end 55.194437 25.60137) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 53.206147 24.75739) (end 54.350457 24.75739) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 63.568087 37.704311) (end 68.351353 37.704311) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 55.194437 29.330661) (end 63.568087 37.704311) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 55.194437 25.60137) (end 55.194437 29.330661) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 69.495663 37.704311) (end 70.339643 38.548291) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 68.351353 37.704311) (end 69.495663 37.704311) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 87.123119 38.548291) (end 89.748256 35.923154) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 70.339643 38.548291) (end 87.123119 38.548291) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 90.892566 35.923154) (end 91.736546 36.767134) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 89.748256 35.923154) (end 90.892566 35.923154) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 136.799878 34.633742) (end 137.643858 33.789762) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 135.655568 34.633742) (end 136.799878 34.633742) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 139.471991 35.617895) (end 156.255467 35.617895) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 156.255467 35.617895) (end 157.052471 36.414899) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 137.643858 33.789762) (end 139.471991 35.617895) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 158.196781 36.414899) (end 159.040761 35.570919) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 157.052471 36.414899) (end 158.196781 36.414899) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 172.109476 23.467978) (end 172.197677 23.467978) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 160.006535 35.570919) (end 172.109476 23.467978) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 159.040761 35.570919) (end 160.006535 35.570919) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 187.470133 11.441562) (end 187.733613 11.441562) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 176.287697 22.623998) (end 187.470133 11.441562) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 174.185967 22.623998) (end 176.287697 22.623998) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 188.877923 11.441562) (end 189.721903 10.597582) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 187.733613 11.441562) (end 188.877923 11.441562) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 206.940591 8.856465) (end 207.176861 8.620195) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 191.46302 8.856465) (end 206.940591 8.856465) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 189.721903 10.597582) (end 191.46302 8.856465) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 208.321171 8.620195) (end 209.165151 7.776215) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 207.176861 8.620195) (end 208.321171 8.620195) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 222.02025 7.776215) (end 225.838647 3.957818) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 209.165151 7.776215) (end 222.02025 7.776215) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 226.982957 3.957818) (end 227.826937 3.113838) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 225.838647 3.957818) (end 226.982957 3.957818) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 126.556847 34.633742) (end 135.655568 34.633742) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 113.03 20.32) (end 126.556847 34.633742) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 109.22 20.32) (end 113.03 20.32) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 92.70232 36.767134) (end 109.22 20.32) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 91.736546 36.767134) (end 92.70232 36.767134) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 113.03 20.32) (end 113.03 20.32) (width 0.25) (layer F.Cu) (net 3) (tstamp 623B15C4)) + (via (at 113.03 20.32) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3)) + (segment (start 113.03 17.600975) (end 113.03 20.32) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 118.803079 11.827896) (end 113.03 17.600975) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 1.010614 -15.328253) (end 1.963113 -14.375754) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.010614 -21.712047) (end 1.010614 -15.328253) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.894571 -22.596004) (end 1.010614 -21.712047) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 3.107423 -14.375754) (end 3.951403 -13.531774) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.963113 -14.375754) (end 3.107423 -14.375754) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 8.133379 -12.242362) (end 8.977359 -11.398382) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 6.989069 -12.242362) (end 8.133379 -12.242362) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 22.976767 -11.398382) (end 27.639144 -6.736005) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 8.977359 -11.398382) (end 22.976767 -11.398382) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 44.857832 -4.994888) (end 45.094102 -4.758618) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 29.380261 -4.994888) (end 44.857832 -4.994888) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 27.639144 -6.736005) (end 29.380261 -4.994888) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 46.238412 -4.758618) (end 47.082392 -3.914638) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 45.094102 -4.758618) (end 46.238412 -4.758618) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 55.846773 7.267798) (end 60.630039 7.267798) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 47.082392 -1.496583) (end 55.846773 7.267798) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 47.082392 -3.914638) (end 47.082392 -1.496583) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 61.774349 7.267798) (end 62.618329 8.111778) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 60.630039 7.267798) (end 61.774349 7.267798) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 75.687043 20.214718) (end 75.775244 20.214718) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 63.584103 8.111778) (end 75.687043 20.214718) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 62.618329 8.111778) (end 63.584103 8.111778) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 76.919554 20.214718) (end 77.763534 21.058698) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 75.775244 20.214718) (end 76.919554 20.214718) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 117.601778 10.489197) (end 118.803079 9.287896) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 103.123852 10.489197) (end 117.601778 10.489197) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 92.554351 21.058698) (end 103.123852 10.489197) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 77.763534 21.058698) (end 92.554351 21.058698) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 148.831577 18.128303) (end 149.62858 18.925306) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 127.643486 18.128303) (end 148.831577 18.128303) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 118.803079 9.287896) (end 127.643486 18.128303) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 150.77289 18.925306) (end 151.61687 18.081326) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 149.62858 18.925306) (end 150.77289 18.925306) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 164.685584 5.978386) (end 164.773785 5.978386) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 152.582644 18.081326) (end 164.685584 5.978386) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 151.61687 18.081326) (end 152.582644 18.081326) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 165.918095 5.978386) (end 166.762075 5.134406) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 164.773785 5.978386) (end 165.918095 5.978386) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 169.805272 4.45642) (end 180.309722 -6.04803) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 167.440061 4.45642) (end 169.805272 4.45642) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 166.762075 5.134406) (end 167.440061 4.45642) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 181.454032 -6.04803) (end 182.298012 -6.89201) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 180.309722 -6.04803) (end 181.454032 -6.04803) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 199.5167 -8.633127) (end 199.75297 -8.869397) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 184.039129 -8.633127) (end 199.5167 -8.633127) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 182.298012 -6.89201) (end 184.039129 -8.633127) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 200.89728 -8.869397) (end 201.74126 -9.713377) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 199.75297 -8.869397) (end 200.89728 -8.869397) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 218.151275 -13.531774) (end 218.414755 -13.531774) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 214.332878 -9.713377) (end 218.151275 -13.531774) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 201.74126 -9.713377) (end 214.332878 -9.713377) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 219.559065 -13.531774) (end 220.403045 -14.375754) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 218.414755 -13.531774) (end 219.559065 -13.531774) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 8.434505 -32.817845) (end 9.387004 -31.865346) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 8.434505 -39.201638) (end 8.434505 -32.817845) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 9.318463 -40.085596) (end 8.434505 -39.201638) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 10.531314 -31.865346) (end 11.375294 -31.021366) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 9.387004 -31.865346) (end 10.531314 -31.865346) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 15.55727 -29.731954) (end 16.40125 -28.887974) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 14.41296 -29.731954) (end 15.55727 -29.731954) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 29.256349 -28.887974) (end 33.074746 -25.069577) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 16.40125 -28.887974) (end 29.256349 -28.887974) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 34.219056 -25.069577) (end 35.063036 -24.225597) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 33.074746 -25.069577) (end 34.219056 -25.069577) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 52.281724 -22.48448) (end 52.517994 -22.24821) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 36.804153 -22.48448) (end 52.281724 -22.48448) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 35.063036 -24.225597) (end 36.804153 -22.48448) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 53.662304 -22.24821) (end 54.506284 -21.40423) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 52.517994 -22.24821) (end 53.662304 -22.24821) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 63.270664 -10.221794) (end 68.05393 -10.221794) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 54.506284 -18.986174) (end 63.270664 -10.221794) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 54.506284 -21.40423) (end 54.506284 -18.986174) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 69.19824 -10.221794) (end 70.04222 -9.377814) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 68.05393 -10.221794) (end 69.19824 -10.221794) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 83.110934 2.725126) (end 83.199136 2.725126) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 71.007994 -9.377814) (end 83.110934 2.725126) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 70.04222 -9.377814) (end 71.007994 -9.377814) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 84.043116 3.569106) (end 83.199136 2.725126) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 85.187426 3.569106) (end 84.043116 3.569106) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 117.46438 8.086595) (end 118.803079 6.747896) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 89.704915 8.086595) (end 117.46438 8.086595) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 85.187426 3.569106) (end 89.704915 8.086595) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 136.892506 6.747896) (end 142.204688 1.435714) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 118.803079 6.747896) (end 136.892506 6.747896) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 143.348998 1.435714) (end 144.192978 0.591734) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 142.204688 1.435714) (end 143.348998 1.435714) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 157.261692 -11.511206) (end 157.349894 -11.511206) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 145.158752 0.591734) (end 157.261692 -11.511206) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 144.192978 0.591734) (end 145.158752 0.591734) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 158.494204 -11.511206) (end 159.338184 -12.355186) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 157.349894 -11.511206) (end 158.494204 -11.511206) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 172.62235 -23.537622) (end 172.88583 -23.537622) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 161.439914 -12.355186) (end 172.62235 -23.537622) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 159.338184 -12.355186) (end 161.439914 -12.355186) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 174.03014 -23.537622) (end 174.87412 -24.381602) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 172.88583 -23.537622) (end 174.03014 -23.537622) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 188.918185 -22.948096) (end 192.329078 -26.358989) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 176.307626 -22.948096) (end 188.918185 -22.948096) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 174.87412 -24.381602) (end 176.307626 -22.948096) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 193.473388 -26.358989) (end 194.317368 -27.202969) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 192.329078 -26.358989) (end 193.473388 -26.358989) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 207.172467 -27.202969) (end 210.990864 -31.021366) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 194.317368 -27.202969) (end 207.172467 -27.202969) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 212.135174 -31.021366) (end 212.979154 -31.865346) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 210.990864 -31.021366) (end 212.135174 -31.021366) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 16.419608 -49.746226) (end 16.810896 -49.354938) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 16.419608 -55.018124) (end 16.419608 -49.746226) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 16.742354 -55.34087) (end 16.419608 -55.018124) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 16.742354 -57.575189) (end 16.742354 -55.34087) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 17.654876 -48.510958) (end 16.810896 -49.354938) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 18.799186 -48.510958) (end 17.654876 -48.510958) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 22.981162 -47.221546) (end 23.825142 -46.377566) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 21.836852 -47.221546) (end 22.981162 -47.221546) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 40.235157 -42.55917) (end 40.498637 -42.55917) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 36.416761 -46.377566) (end 40.235157 -42.55917) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 23.825142 -46.377566) (end 36.416761 -46.377566) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 41.642947 -42.55917) (end 42.486927 -41.71519) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 40.498637 -42.55917) (end 41.642947 -42.55917) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 44.464315 -39.737802) (end 59.941885 -39.737802) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 42.486927 -41.71519) (end 44.464315 -39.737802) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 61.086195 -39.737802) (end 61.930175 -38.893822) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 59.941885 -39.737802) (end 61.086195 -39.737802) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 70.694556 -27.711387) (end 75.477822 -27.711387) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 61.930175 -36.475768) (end 70.694556 -27.711387) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 61.930175 -38.893822) (end 61.930175 -36.475768) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 76.622132 -27.711387) (end 77.466112 -26.867407) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 75.477822 -27.711387) (end 76.622132 -27.711387) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 90.534827 -14.764466) (end 90.623027 -14.764466) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 78.431886 -26.867407) (end 90.534827 -14.764466) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 77.466112 -26.867407) (end 78.431886 -26.867407) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 91.767337 -14.764466) (end 92.611317 -13.920486) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 90.623027 -14.764466) (end 91.767337 -14.764466) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 103.123852 3.006595) (end 117.601778 3.006595) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 92.611317 -7.50594) (end 103.123852 3.006595) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 117.601778 3.006595) (end 118.803079 4.207896) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 92.611317 -13.920486) (end 92.611317 -7.50594) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 134.780797 -11.769822) (end 134.780797 -16.053878) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 118.803079 4.207896) (end 134.780797 -11.769822) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 135.925107 -16.053878) (end 136.769087 -16.897858) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 134.780797 -16.053878) (end 135.925107 -16.053878) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 149.837802 -29.000799) (end 149.926002 -29.000799) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 137.734861 -16.897858) (end 149.837802 -29.000799) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 136.769087 -16.897858) (end 137.734861 -16.897858) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 151.070312 -29.000799) (end 151.914292 -29.844779) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 149.926002 -29.000799) (end 151.070312 -29.000799) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 165.198459 -41.027214) (end 165.461939 -41.027214) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 154.016024 -29.844779) (end 165.198459 -41.027214) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 151.914292 -29.844779) (end 154.016024 -29.844779) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 166.606249 -41.027214) (end 167.450229 -41.871194) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 165.461939 -41.027214) (end 166.606249 -41.027214) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 181.494294 -40.437689) (end 184.905187 -43.848582) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 168.883734 -40.437689) (end 181.494294 -40.437689) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 167.450229 -41.871194) (end 168.883734 -40.437689) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 186.049497 -43.848582) (end 186.893477 -44.692562) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 184.905187 -43.848582) (end 186.049497 -43.848582) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 199.748576 -44.692562) (end 203.566972 -48.510958) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 186.893477 -44.692562) (end 199.748576 -44.692562) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 204.711282 -48.510958) (end 205.555262 -49.354938) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 203.566972 -48.510958) (end 204.711282 -48.510958) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 12.248508 6.823716) (end 13.201007 7.776215) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 12.248508 0.439923) (end 12.248508 6.823716) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 13.132466 -0.444035) (end 12.248508 0.439923) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 14.345317 7.776215) (end 15.189297 8.620195) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 13.201007 7.776215) (end 14.345317 7.776215) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 29.129843 -10.902391) (end 33.44818 -15.220728) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 29.129843 -0.83669) (end 29.129843 -10.902391) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 26.024289 2.268864) (end 29.129843 -0.83669) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 39.243372 -32.710321) (end 40.872072 -32.710321) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 32.10107 -25.568019) (end 39.243372 -32.710321) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 32.10107 -24.558479) (end 32.10107 -25.568019) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 33.44818 -23.211369) (end 32.10107 -24.558479) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 33.44818 -15.220728) (end 33.44818 -23.211369) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 46.771824 -50.199913) (end 48.295963 -50.199913) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 40.872072 -40.700961) (end 39.524961 -42.048072) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 39.524961 -42.95305) (end 46.771824 -50.199913) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 39.524961 -42.048072) (end 39.524961 -42.95305) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 40.872072 -32.710321) (end 40.872072 -40.700961) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 207.097047 -12.36214) (end 199.673156 -19.786031) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 207.097047 -2.296439) (end 207.097047 -12.36214) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 192.249265 -35.325546) (end 192.249265 -37.275624) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 199.673156 -27.901655) (end 192.249265 -35.325546) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 199.673156 -19.786031) (end 199.673156 -27.901655) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 190.980249 -48.61034) (end 184.825373 -54.765216) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 190.980249 -38.54464) (end 190.980249 -48.61034) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 192.249265 -37.275624) (end 191.597445 -37.927445) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 34.914713 -16.687261) (end 34.914713 -17.134713) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 33.44818 -15.220728) (end 34.914713 -16.687261) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 36.83 -19.05) (end 55.88 -19.05) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 34.914713 -17.134713) (end 36.83 -19.05) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 84.581831 2.078407) (end 98.89359 2.078407) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 80.997096 -1.506328) (end 84.581831 2.078407) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 80.01 -1.506328) (end 80.997096 -1.506328) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 98.89359 2.078407) (end 103.563079 6.747896) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 69.544084 -11.972244) (end 80.01 -1.506328) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 58.962244 -19.05) (end 66.04 -11.972244) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 66.04 -11.972244) (end 69.544084 -11.972244) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 55.88 -19.05) (end 58.962244 -19.05) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 191.597445 -37.927445) (end 190.980249 -38.54464) (width 0.25) (layer B.Cu) (net 11) (tstamp 623B15A4)) + (via (at 191.597445 -37.927445) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 11)) + (segment (start 104.901778 5.409197) (end 103.563079 6.747896) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 119.398458 5.409197) (end 104.901778 5.409197) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 162.7351 -37.927445) (end 119.398458 5.409197) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 191.597445 -37.927445) (end 162.7351 -37.927445) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 20.233611 -10.104664) (end 20.624898 -9.713377) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 20.233611 -15.954006) (end 20.233611 -10.104664) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 20.556357 -16.276752) (end 20.233611 -15.954006) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 20.556357 -17.933627) (end 20.556357 -16.276752) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 21.769208 -9.713377) (end 22.613188 -8.869397) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 20.624898 -9.713377) (end 21.769208 -9.713377) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 27.657503 -27.594256) (end 28.04879 -27.202969) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 27.657503 -35.100474) (end 27.657503 -27.594256) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 27.980249 -35.42322) (end 27.657503 -35.100474) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 29.1931 -27.202969) (end 30.03708 -26.358989) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 28.04879 -27.202969) (end 29.1931 -27.202969) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 34.520182 -45.645061) (end 35.472681 -44.692562) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 34.520182 -49.794535) (end 34.520182 -45.645061) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 35.40414 -50.678493) (end 34.520182 -49.794535) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 35.40414 -52.912812) (end 35.40414 -50.678493) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 36.616991 -44.692562) (end 37.460971 -43.848582) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 35.472681 -44.692562) (end 36.616991 -44.692562) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 32.252968 10.206295) (end 32.644255 10.597582) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 32.252968 4.200078) (end 32.252968 10.206295) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 32.575714 3.877332) (end 32.252968 4.200078) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 32.575714 2.377332) (end 32.575714 3.877332) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 33.788565 10.597582) (end 34.632545 11.441562) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 32.644255 10.597582) (end 33.788565 10.597582) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 52.891428 -3.83366) (end 52.891428 -12.399361) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 45.467537 3.590231) (end 52.891428 -3.83366) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 45.467537 5.090231) (end 45.467537 3.590231) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 60.315319 -21.323252) (end 60.315319 -29.888953) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 52.891428 -13.899361) (end 60.315319 -21.323252) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 52.891428 -12.399361) (end 52.891428 -13.899361) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 187.6538 -9.540772) (end 180.229908 -16.964664) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 187.6538 0.524928) (end 187.6538 -9.540772) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 179.742355 -27.517918) (end 172.806017 -34.454256) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 179.742355 -17.452217) (end 179.742355 -27.517918) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 180.229908 -16.964664) (end 179.742355 -17.452217) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 172.318463 -45.007511) (end 165.382125 -51.943849) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 172.318463 -34.94181) (end 172.318463 -45.007511) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 172.806017 -34.454256) (end 172.318463 -34.94181) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 116.899489 9.287896) (end 103.563079 9.287896) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 118.10079 8.086595) (end 116.899489 9.287896) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 141.634543 8.086595) (end 118.10079 8.086595) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 162.401384 -12.680246) (end 141.634543 8.086595) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 177.780246 -12.680246) (end 162.401384 -12.680246) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 179.940001 -14.840001) (end 177.780246 -12.680246) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 179.940001 -17.380001) (end 179.940001 -14.840001) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 180.34 -17.78) (end 179.940001 -17.380001) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 52.891428 -12.399361) (end 52.891428 -12.399361) (width 0.25) (layer B.Cu) (net 16) (tstamp 623B15A7)) + (via (at 52.891428 -12.399361) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16)) + (segment (start 60.456687 -12.399361) (end 52.891428 -12.399361) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 82.143944 9.287896) (end 60.456687 -12.399361) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 103.563079 9.287896) (end 82.143944 9.287896) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 39.676859 -7.283297) (end 40.068146 -6.89201) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 39.676859 -13.132639) (end 39.676859 -7.283297) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 39.999605 -13.455385) (end 39.676859 -13.132639) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 39.999605 -15.11226) (end 39.999605 -13.455385) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 41.212456 -6.89201) (end 42.056436 -6.04803) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 40.068146 -6.89201) (end 41.212456 -6.89201) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 47.10075 -24.77289) (end 47.492038 -24.381602) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.10075 -30.779106) (end 47.10075 -24.77289) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.423496 -31.101852) (end 47.10075 -30.779106) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.423496 -32.601852) (end 47.423496 -31.101852) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 48.636348 -24.381602) (end 49.480328 -23.537622) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.492038 -24.381602) (end 48.636348 -24.381602) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 54.524642 -42.262481) (end 54.915929 -41.871194) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 54.524642 -49.768699) (end 54.524642 -42.262481) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 54.847388 -50.091445) (end 54.524642 -49.768699) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 56.060239 -41.871194) (end 56.904219 -41.027214) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 54.915929 -41.871194) (end 56.060239 -41.871194) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 47.788904 22.232711) (end 48.180191 22.623998) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 47.788904 14.726494) (end 47.788904 22.232711) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 48.11165 14.403748) (end 47.788904 14.726494) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 49.324501 22.623998) (end 50.168481 23.467978) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 48.180191 22.623998) (end 49.324501 22.623998) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 68.427365 8.192755) (end 68.427365 -0.372946) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 61.003473 15.616647) (end 68.427365 8.192755) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 61.003473 17.116647) (end 61.003473 15.616647) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 76.2 -9.645581) (end 76.2 -19.05) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 68.427365 -1.872946) (end 76.2 -9.645581) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 68.427365 -0.372946) (end 68.427365 -1.872946) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 81.750147 -35.35213) (end 83.275147 -35.35213) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 74.504146 -27.200289) (end 74.504146 -28.106129) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 74.504146 -28.106129) (end 81.750147 -35.35213) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 75.851256 -25.853179) (end 74.504146 -27.200289) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 75.851256 -17.862538) (end 75.851256 -25.853179) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 172.117863 2.485642) (end 164.693972 -4.938249) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 172.117863 12.551344) (end 172.117863 2.485642) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 164.693972 -15.003949) (end 157.27008 -22.427841) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 164.693972 -4.938249) (end 164.693972 -15.003949) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 157.27008 -32.493542) (end 149.846189 -39.917433) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 157.27008 -22.427841) (end 157.27008 -32.493542) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 65.729397 22.549397) (end 60.96 17.78) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 92.841578 22.549397) (end 65.729397 22.549397) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 103.563079 11.827896) (end 92.841578 22.549397) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 160.240444 19.978448) (end 168.788892 11.43) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 149.314166 19.978448) (end 160.240444 19.978448) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 147.923758 18.58804) (end 149.314166 19.978448) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 124.938547 18.58804) (end 147.923758 18.58804) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 119.379704 13.029197) (end 124.938547 18.58804) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 104.76438 13.029197) (end 119.379704 13.029197) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 103.563079 11.827896) (end 104.76438 13.029197) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 168.788892 11.43) (end 171.45 11.43) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 55.212796 4.743119) (end 55.604083 5.134406) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.212796 -0.52878) (end 55.212796 4.743119) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.535542 -0.851526) (end 55.212796 -0.52878) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.535542 -3.085845) (end 55.535542 -0.851526) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 56.748393 5.134406) (end 57.592373 5.978386) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.604083 5.134406) (end 56.748393 5.134406) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 62.636687 -12.746473) (end 63.027974 -12.355186) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 62.636687 -20.252691) (end 62.636687 -12.746473) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 62.959433 -20.575437) (end 62.636687 -20.252691) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 64.172284 -12.355186) (end 65.016264 -11.511206) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 63.027974 -12.355186) (end 64.172284 -12.355186) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 70.060578 -30.236067) (end 70.451866 -29.844779) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 70.383324 -36.408154) (end 70.060578 -36.085408) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 70.060578 -36.085408) (end 70.060578 -30.236067) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 70.383324 -38.065029) (end 70.383324 -36.408154) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 71.596176 -29.844779) (end 72.440156 -29.000799) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 70.451866 -29.844779) (end 71.596176 -29.844779) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 62.93411 35.179632) (end 63.325397 35.570919) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 62.93411 27.673414) (end 62.93411 35.179632) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 63.256856 27.350668) (end 62.93411 27.673414) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 64.469707 35.570919) (end 65.313687 36.414899) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 63.325397 35.570919) (end 64.469707 35.570919) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 83.57257 22.639676) (end 83.57257 12.573975) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 76.148679 30.063567) (end 83.57257 22.639676) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 90.996461 5.150084) (end 90.996461 -4.915617) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 83.57257 12.573975) (end 90.996461 5.150084) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 96.895353 -22.405209) (end 98.420353 -22.405209) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 89.649351 -15.159207) (end 96.895353 -22.405209) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 89.649351 -14.253368) (end 89.649351 -15.159207) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 90.996461 -12.906258) (end 89.649351 -14.253368) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 90.996461 -4.915617) (end 90.996461 -12.906258) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 156.972658 15.432564) (end 149.548766 8.008672) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 156.972658 25.498264) (end 156.972658 15.432564) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 142.124875 -7.530842) (end 142.124875 -9.48092) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 149.548766 -0.106951) (end 142.124875 -7.530842) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 149.548766 8.008672) (end 149.548766 -0.106951) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 134.700983 -21.539766) (end 134.700983 -26.970512) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 142.124875 -14.115874) (end 134.700983 -21.539766) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 142.124875 -9.48092) (end 142.124875 -14.115874) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 85.366491 14.367896) (end 83.57257 12.573975) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 103.563079 14.367896) (end 85.366491 14.367896) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 149.013959 7.473865) (end 149.548766 8.008672) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 145.633258 7.473865) (end 149.013959 7.473865) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 142.480528 10.626595) (end 145.633258 7.473865) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 107.30438 10.626595) (end 142.480528 10.626595) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 103.563079 14.367896) (end 107.30438 10.626595) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 70.358001 17.690039) (end 70.749288 18.081326) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 70.358001 10.183822) (end 70.358001 17.690039) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 70.680747 9.861076) (end 70.358001 10.183822) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 71.893598 18.081326) (end 72.737578 18.925306) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 70.749288 18.081326) (end 71.893598 18.081326) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 77.781892 0.200446) (end 78.17318 0.591734) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 77.781892 -5.648895) (end 77.781892 0.200446) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 78.104638 -5.971641) (end 77.781892 -5.648895) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 78.104638 -7.628516) (end 78.104638 -5.971641) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 79.31749 0.591734) (end 80.16147 1.435714) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 78.17318 0.591734) (end 79.31749 0.591734) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 84.644572 -17.850357) (end 85.597071 -16.897858) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 84.644572 -22.73415) (end 84.644572 -17.850357) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 85.52853 -23.618108) (end 84.644572 -22.73415) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 85.52853 -25.118108) (end 85.52853 -23.618108) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 86.741381 -16.897858) (end 87.585361 -16.053878) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 85.597071 -16.897858) (end 86.741381 -16.897858) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 84.331013 33.398475) (end 84.7223 33.789762) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 84.331013 25.892257) (end 84.331013 33.398475) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 84.653759 25.569511) (end 84.331013 25.892257) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 85.86661 33.789762) (end 86.71059 34.633742) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 84.7223 33.789762) (end 85.86661 33.789762) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 97.545582 22.925393) (end 97.545582 28.28241) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 103.563079 16.907896) (end 97.545582 22.925393) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 135.040947 23.1823) (end 135.575754 23.717107) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 109.837483 23.1823) (end 135.040947 23.1823) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 103.563079 16.907896) (end 109.837483 23.1823) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 219.012886 6.09121) (end 220.812691 6.09121) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 214.851924 1.930248) (end 219.012886 6.09121) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 214.851924 0.430248) (end 214.851924 1.930248) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 221.957001 6.09121) (end 222.800981 5.24723) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 220.812691 6.09121) (end 221.957001 6.09121) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 211.588995 -11.398382) (end 213.388799 -11.398382) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 207.428033 -15.559344) (end 211.588995 -11.398382) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 207.428033 -17.059344) (end 207.428033 -15.559344) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 214.533109 -11.398382) (end 215.377089 -12.242362) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 213.388799 -11.398382) (end 214.533109 -11.398382) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 204.165103 -28.887974) (end 205.964908 -28.887974) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 200.004141 -33.048936) (end 204.165103 -28.887974) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 200.004141 -34.548936) (end 200.004141 -33.048936) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 207.109218 -28.887974) (end 207.953198 -29.731954) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 205.964908 -28.887974) (end 207.109218 -28.887974) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 196.741213 -46.377566) (end 198.541016 -46.377566) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 192.58025 -50.538529) (end 196.741213 -46.377566) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 192.58025 -52.038529) (end 192.58025 -50.538529) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 199.685326 -46.377566) (end 200.529306 -47.221546) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 198.541016 -46.377566) (end 199.685326 -46.377566) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 200.3511 10.753587) (end 202.150905 10.753587) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 196.190138 6.592625) (end 200.3511 10.753587) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 196.190138 5.092625) (end 196.190138 6.592625) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 203.295215 10.753587) (end 204.139195 9.909607) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 202.150905 10.753587) (end 203.295215 10.753587) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 192.927209 -6.736005) (end 194.727014 -6.736005) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 188.766247 -10.896967) (end 192.927209 -6.736005) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 188.766247 -12.396967) (end 188.766247 -10.896967) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 195.871324 -6.736005) (end 196.715304 -7.579985) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 194.727014 -6.736005) (end 195.871324 -6.736005) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 181.342356 -28.38656) (end 185.503319 -24.225597) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 185.503319 -24.225597) (end 187.303122 -24.225597) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 181.342356 -29.88656) (end 181.342356 -28.38656) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 188.447432 -24.225597) (end 189.291412 -25.069577) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 187.303122 -24.225597) (end 188.447432 -24.225597) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 178.079426 -41.71519) (end 179.879231 -41.71519) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 173.918464 -45.876152) (end 178.079426 -41.71519) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 173.918464 -47.376152) (end 173.918464 -45.876152) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 181.023541 -41.71519) (end 181.867521 -42.55917) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 179.879231 -41.71519) (end 181.023541 -41.71519) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 180.907853 13.574954) (end 182.707657 13.574954) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 176.746891 9.413992) (end 180.907853 13.574954) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 176.746891 7.913992) (end 176.746891 9.413992) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 183.851967 13.574954) (end 184.695947 12.730974) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 182.707657 13.574954) (end 183.851967 13.574954) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 173.483961 -3.914638) (end 175.283766 -3.914638) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 169.322999 -8.0756) (end 173.483961 -3.914638) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 169.322999 -9.5756) (end 169.322999 -8.0756) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 176.428076 -3.914638) (end 177.272056 -4.758618) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 175.283766 -3.914638) (end 176.428076 -3.914638) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 166.06007 -21.40423) (end 167.859874 -21.40423) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 161.899108 -25.565192) (end 166.06007 -21.40423) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 161.899108 -27.065192) (end 161.899108 -25.565192) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 169.004184 -21.40423) (end 169.848164 -22.24821) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 167.859874 -21.40423) (end 169.004184 -21.40423) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 158.636179 -38.893822) (end 160.435983 -38.893822) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 154.475216 -43.054785) (end 158.636179 -38.893822) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 154.475216 -44.554785) (end 154.475216 -43.054785) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 161.580293 -38.893822) (end 162.424273 -39.737802) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 160.435983 -38.893822) (end 161.580293 -38.893822) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 161.210954 21.440408) (end 165.371916 25.60137) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 165.371916 25.60137) (end 167.171721 25.60137) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 161.210954 19.940408) (end 161.210954 21.440408) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 168.316031 25.60137) (end 169.160011 24.75739) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 167.171721 25.60137) (end 168.316031 25.60137) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 157.948026 8.111778) (end 159.747829 8.111778) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 153.787063 3.950815) (end 157.948026 8.111778) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 153.787063 2.450815) (end 153.787063 3.950815) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 160.892139 8.111778) (end 161.736119 7.267798) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 159.747829 8.111778) (end 160.892139 8.111778) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 150.524134 -9.377814) (end 152.323938 -9.377814) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 146.363171 -13.538777) (end 150.524134 -9.377814) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 146.363171 -15.038777) (end 146.363171 -13.538777) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 153.468248 -9.377814) (end 154.312228 -10.221794) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 152.323938 -9.377814) (end 153.468248 -9.377814) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 143.100242 -26.867407) (end 144.900046 -26.867407) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 138.93928 -31.028369) (end 143.100242 -26.867407) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 138.93928 -32.528369) (end 138.93928 -31.028369) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 150.226712 38.548291) (end 152.026515 38.548291) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 146.065749 34.387328) (end 150.226712 38.548291) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 146.065749 32.887328) (end 146.065749 34.387328) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 153.170825 38.548291) (end 154.014805 37.704311) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 152.026515 38.548291) (end 153.170825 38.548291) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 142.802819 21.058698) (end 144.602624 21.058698) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 138.641857 16.897736) (end 142.802819 21.058698) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 138.641857 15.397736) (end 138.641857 16.897736) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 145.746934 21.058698) (end 146.590914 20.214718) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 144.602624 21.058698) (end 145.746934 21.058698) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 135.378928 3.569106) (end 137.178732 3.569106) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 131.217966 -0.591856) (end 135.378928 3.569106) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 131.217966 -2.091856) (end 131.217966 -0.591856) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 138.323042 3.569106) (end 139.167022 2.725126) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 137.178732 3.569106) (end 138.323042 3.569106) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 127.955036 -13.920486) (end 129.754841 -13.920486) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 123.794074 -18.081448) (end 127.955036 -13.920486) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 123.794074 -19.581448) (end 123.794074 -18.081448) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 130.899151 -13.920486) (end 131.743131 -14.764466) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 129.754841 -13.920486) (end 130.899151 -13.920486) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 128.829808 36.767134) (end 130.629612 36.767134) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 124.668845 32.606171) (end 128.829808 36.767134) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 124.668845 31.106171) (end 124.668845 32.606171) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 131.773922 36.767134) (end 132.617902 35.923154) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 130.629612 36.767134) (end 131.773922 36.767134) (width 0.25) (layer B.Cu) (net 52)) + +) diff --git a/kicad/45treus/main_version_001.pro b/kicad/45treus/main_version_001.pro new file mode 100644 index 0000000..152769c --- /dev/null +++ b/kicad/45treus/main_version_001.pro @@ -0,0 +1,33 @@ +update=22/05/2015 07:44:53 +version=1 +last_client=kicad +[general] +version=1 +RootSch= +BoardNm= +[pcbnew] +version=1 +LastNetListRead= +UseCmpFile=1 +PadDrill=0.600000000000 +PadDrillOvalY=0.600000000000 +PadSizeH=1.500000000000 +PadSizeV=1.500000000000 +PcbTextSizeV=1.500000000000 +PcbTextSizeH=1.500000000000 +PcbTextThickness=0.300000000000 +ModuleTextSizeV=1.000000000000 +ModuleTextSizeH=1.000000000000 +ModuleTextSizeThickness=0.150000000000 +SolderMaskClearance=0.000000000000 +SolderMaskMinWidth=0.000000000000 +DrawSegmentWidth=0.200000000000 +BoardOutlineThickness=0.100000000000 +ModuleOutlineThickness=0.150000000000 +[cvpcb] +version=1 +NetIExt=net +[eeschema] +version=1 +LibDir= +[eeschema/libraries] From 57e81738481c44c48ec535753b7a951ececf5557 Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Wed, 23 Mar 2022 13:46:23 +0100 Subject: [PATCH 107/120] remove bak files from github --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index da89f90..a2caa54 100644 --- a/.gitignore +++ b/.gitignore @@ -120,4 +120,4 @@ output temp* kicad/45treus/main.pro kicad/45treus/main.kicad_pcb -kicad/45treus/main.kicad_pcb-bak +*.kicad_pcb-bak From 3032e6b3d18d12815c6194f07adc168f820b35ed Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Wed, 23 Mar 2022 13:46:44 +0100 Subject: [PATCH 108/120] rearrange via and connect grounds --- kicad/45treus/main_version_001.kicad_pcb | 2075 +++++++++++----------- 1 file changed, 1040 insertions(+), 1035 deletions(-) diff --git a/kicad/45treus/main_version_001.kicad_pcb b/kicad/45treus/main_version_001.kicad_pcb index 1cd15ca..f67ae67 100644 --- a/kicad/45treus/main_version_001.kicad_pcb +++ b/kicad/45treus/main_version_001.kicad_pcb @@ -3,7 +3,7 @@ (general (thickness 1.6) (drawings 86) - (tracks 596) + (tracks 601) (zones 0) (modules 85) (nets 65) @@ -242,18 +242,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -273,20 +273,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -309,18 +309,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -340,20 +340,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -376,18 +376,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -407,20 +407,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -443,18 +443,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -474,20 +474,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -510,18 +510,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -541,20 +541,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -577,18 +577,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -608,20 +608,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -644,18 +644,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -675,20 +675,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -711,18 +711,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -742,20 +742,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -778,18 +778,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -809,20 +809,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -845,18 +845,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -876,20 +876,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -912,18 +912,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -943,20 +943,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -979,18 +979,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1010,20 +1010,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1046,18 +1046,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1077,20 +1077,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1113,18 +1113,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1144,20 +1144,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1180,18 +1180,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1211,20 +1211,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1247,18 +1247,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1278,20 +1278,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1314,18 +1314,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1345,20 +1345,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1381,18 +1381,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1412,20 +1412,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1448,18 +1448,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1479,20 +1479,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1515,18 +1515,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1546,20 +1546,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1582,18 +1582,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1613,20 +1613,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1649,18 +1649,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1680,20 +1680,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1716,18 +1716,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1747,20 +1747,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1783,18 +1783,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1814,20 +1814,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1850,18 +1850,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1881,20 +1881,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1917,18 +1917,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1948,20 +1948,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1984,18 +1984,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2015,20 +2015,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2051,18 +2051,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2082,20 +2082,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2118,18 +2118,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2149,20 +2149,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2185,18 +2185,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2216,20 +2216,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2252,18 +2252,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2283,20 +2283,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2319,18 +2319,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2350,20 +2350,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2386,18 +2386,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2417,20 +2417,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2453,18 +2453,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2484,20 +2484,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2520,18 +2520,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2551,20 +2551,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2587,18 +2587,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2618,20 +2618,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2654,18 +2654,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2685,20 +2685,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2721,18 +2721,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2752,20 +2752,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2788,18 +2788,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2819,20 +2819,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2855,18 +2855,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2886,20 +2886,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2922,18 +2922,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2953,20 +2953,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2989,18 +2989,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -3020,20 +3020,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -3056,17 +3056,17 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) (fp_text user RAW (at -13.97 4.8) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))) ) @@ -3276,18 +3276,13 @@ (gr_line (start 119.682459 -15.409172) (end 102.683699 -15.409172) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 106.235144 24.814956) (end 116.131014 24.814956) (angle 90) (layer Edge.Cuts) (width 0.15)) - (via (at 171.45 11.43) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 21)) - (via (at 60.96 17.78) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 21)) - (via (at 180.34 -17.78) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16)) - (via (at 55.88 -19.05) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 11)) - (via (at 110.49 -12.7) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) - (via (at 22.86 -38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) (segment (start -5.852066 2.722551) (end -5.460779 3.113838) (width 0.25) (layer B.Cu) (net 1)) (segment (start -5.852066 -4.783666) (end -5.852066 2.722551) (width 0.25) (layer B.Cu) (net 1)) (segment (start -5.52932 -5.106412) (end -5.852066 -4.783666) (width 0.25) (layer B.Cu) (net 1)) (segment (start -4.31647 3.113838) (end -3.715154 3.715154) (width 0.25) (layer B.Cu) (net 1)) (segment (start -5.460779 3.113838) (end -4.31647 3.113838) (width 0.25) (layer B.Cu) (net 1)) (segment (start -3.715154 3.715154) (end -3.472489 3.957818) (width 0.25) (layer B.Cu) (net 1)) + (via (at 22.86 -38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) (segment (start 13.261394 -19.883105) (end 14.786394 -19.883105) (width 0.25) (layer B.Cu) (net 2)) (segment (start 6.015393 -12.637104) (end 13.261394 -19.883105) (width 0.25) (layer B.Cu) (net 2)) (segment (start 6.015393 -11.731264) (end 6.015393 -12.637104) (width 0.25) (layer B.Cu) (net 2)) @@ -3317,24 +3312,27 @@ (segment (start 22.86 -38.1) (end 31.032079 -38.1) (width 0.25) (layer F.Cu) (net 2)) (segment (start 210.91105 -41.938) (end 210.91105 -41.938) (width 0.25) (layer B.Cu) (net 2) (tstamp 623B12B8)) (via (at 210.91105 -41.938) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) - (segment (start 131.106424 -12.642985) (end 110.547015 -12.642985) (width 0.25) (layer F.Cu) (net 2)) + (via (at 116.84 -10.159992) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 103.563079 4.207896) (end 116.84 -9.069025) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 116.84 -9.069025) (end 116.84 -10.159992) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 116.84 -10.16) (end 119.38 -12.7) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 116.84 -10.159992) (end 116.84 -10.16) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 119.322993 -12.642985) (end 116.84 -10.159992) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 131.106424 -12.642985) (end 119.322993 -12.642985) (width 0.25) (layer F.Cu) (net 2)) (segment (start 133.807121 -15.343682) (end 131.106424 -12.642985) (width 0.25) (layer F.Cu) (net 2)) (segment (start 210.91105 -41.938) (end 210.91105 -46.095444) (width 0.25) (layer F.Cu) (net 2)) (segment (start 210.91105 -46.095444) (end 206.160857 -50.845637) (width 0.25) (layer F.Cu) (net 2)) - (segment (start 165.237541 -44.35968) (end 161.049184 -40.171323) (width 0.25) (layer F.Cu) (net 2)) - (segment (start 206.160857 -50.845637) (end 204.416877 -50.845637) (width 0.25) (layer F.Cu) (net 2)) - (segment (start 188.593887 -49.022056) (end 183.931511 -44.35968) (width 0.25) (layer F.Cu) (net 2)) - (segment (start 183.931511 -44.35968) (end 165.237541 -44.35968) (width 0.25) (layer F.Cu) (net 2)) - (segment (start 161.049184 -40.171323) (end 158.609544 -40.171323) (width 0.25) (layer F.Cu) (net 2)) (segment (start 158.609544 -40.171323) (end 147.20275 -28.764529) (width 0.25) (layer F.Cu) (net 2)) - (segment (start 204.416877 -50.845637) (end 202.593296 -49.022056) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 206.160857 -50.845637) (end 204.416877 -50.845637) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 183.931511 -44.35968) (end 165.237541 -44.35968) (width 0.25) (layer F.Cu) (net 2)) (segment (start 202.593296 -49.022056) (end 188.593887 -49.022056) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 165.237541 -44.35968) (end 161.049184 -40.171323) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 188.593887 -49.022056) (end 183.931511 -44.35968) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 161.049184 -40.171323) (end 158.609544 -40.171323) (width 0.25) (layer F.Cu) (net 2)) (segment (start 147.20275 -28.764529) (end 144.906466 -28.764529) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 204.416877 -50.845637) (end 202.593296 -49.022056) (width 0.25) (layer F.Cu) (net 2)) (segment (start 144.906466 -28.764529) (end 133.807121 -17.665184) (width 0.25) (layer F.Cu) (net 2)) (segment (start 133.807121 -17.665184) (end 133.807121 -15.343682) (width 0.25) (layer F.Cu) (net 2)) - (segment (start 103.563079 3.445822) (end 103.563079 4.207896) (width 0.25) (layer B.Cu) (net 2)) - (segment (start 110.49 -3.481099) (end 103.563079 3.445822) (width 0.25) (layer B.Cu) (net 2)) - (segment (start 110.49 -12.7) (end 110.49 -3.481099) (width 0.25) (layer B.Cu) (net 2)) (segment (start 0.709487 5.24723) (end 1.553467 6.09121) (width 0.25) (layer F.Cu) (net 3)) (segment (start -0.434823 5.24723) (end 0.709487 5.24723) (width 0.25) (layer F.Cu) (net 3)) (segment (start 14.408566 6.09121) (end 18.226963 9.909607) (width 0.25) (layer F.Cu) (net 3)) @@ -3557,6 +3555,7 @@ (segment (start 13.132466 -0.444035) (end 12.248508 0.439923) (width 0.25) (layer B.Cu) (net 10)) (segment (start 14.345317 7.776215) (end 15.189297 8.620195) (width 0.25) (layer B.Cu) (net 10)) (segment (start 13.201007 7.776215) (end 14.345317 7.776215) (width 0.25) (layer B.Cu) (net 10)) + (via (at 55.88 -19.05) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 11)) (segment (start 29.129843 -10.902391) (end 33.44818 -15.220728) (width 0.25) (layer B.Cu) (net 11)) (segment (start 29.129843 -0.83669) (end 29.129843 -10.902391) (width 0.25) (layer B.Cu) (net 11)) (segment (start 26.024289 2.268864) (end 29.129843 -0.83669) (width 0.25) (layer B.Cu) (net 11)) @@ -3619,6 +3618,7 @@ (segment (start 32.575714 2.377332) (end 32.575714 3.877332) (width 0.25) (layer B.Cu) (net 15)) (segment (start 33.788565 10.597582) (end 34.632545 11.441562) (width 0.25) (layer B.Cu) (net 15)) (segment (start 32.644255 10.597582) (end 33.788565 10.597582) (width 0.25) (layer B.Cu) (net 15)) + (via (at 180.34 -17.78) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16)) (segment (start 52.891428 -3.83366) (end 52.891428 -12.399361) (width 0.25) (layer B.Cu) (net 16)) (segment (start 45.467537 3.590231) (end 52.891428 -3.83366) (width 0.25) (layer B.Cu) (net 16)) (segment (start 45.467537 5.090231) (end 45.467537 3.590231) (width 0.25) (layer B.Cu) (net 16)) @@ -3668,6 +3668,8 @@ (segment (start 48.11165 14.403748) (end 47.788904 14.726494) (width 0.25) (layer B.Cu) (net 20)) (segment (start 49.324501 22.623998) (end 50.168481 23.467978) (width 0.25) (layer B.Cu) (net 20)) (segment (start 48.180191 22.623998) (end 49.324501 22.623998) (width 0.25) (layer B.Cu) (net 20)) + (via (at 171.45 11.43) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 21)) + (via (at 60.96 17.78) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 21)) (segment (start 68.427365 8.192755) (end 68.427365 -0.372946) (width 0.25) (layer B.Cu) (net 21)) (segment (start 61.003473 15.616647) (end 68.427365 8.192755) (width 0.25) (layer B.Cu) (net 21)) (segment (start 61.003473 17.116647) (end 61.003473 15.616647) (width 0.25) (layer B.Cu) (net 21)) @@ -3872,5 +3874,8 @@ (segment (start 124.668845 31.106171) (end 124.668845 32.606171) (width 0.25) (layer B.Cu) (net 52)) (segment (start 131.773922 36.767134) (end 132.617902 35.923154) (width 0.25) (layer B.Cu) (net 52)) (segment (start 130.629612 36.767134) (end 131.773922 36.767134) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 116.263079 -5.952104) (end 118.803079 -3.412104) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 103.563079 -5.952104) (end 116.263079 -5.952104) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 118.803079 -3.412104) (end 118.803079 -0.872104) (width 0.25) (layer F.Cu) (net 54)) ) From ce65a9ef5dd632419909e7694ec2f96d94120857 Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Wed, 23 Mar 2022 15:03:27 +0100 Subject: [PATCH 109/120] cleanup --- 45treus.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/45treus.yaml b/45treus.yaml index 24fb533..dfec0ac 100644 --- a/45treus.yaml +++ b/45treus.yaml @@ -8,22 +8,17 @@ points: reverse: false keycaps: true nets: - # from: P1 - # to: P2 from: =colrow to: =column_net diode: type: diode nets: - # from: P3 - # to: P4 from: =colrow to: =row_net anchor: shift: [0, -5] rotate: 180 - zones: matrix: columns: From 35f2684348ca2e15fc244e033ba43ada4ba21036 Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Wed, 23 Mar 2022 15:03:35 +0100 Subject: [PATCH 110/120] add a switchplate --- 45treus.yaml | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/45treus.yaml b/45treus.yaml index dfec0ac..bb2aa99 100644 --- a/45treus.yaml +++ b/45treus.yaml @@ -58,7 +58,8 @@ points: outlines: exports: - plate: + # outer border + outer: - type: keys side: both size: 25 @@ -68,22 +69,41 @@ outlines: - ref: matrix_inner_num shift: [0, -5] - ref: matrix_thumb_bottom - shift: [-15, 0] + shift: [-10, -10] - ref: mirror_matrix_thumb_bottom - shift: [-15, 0] + shift: [-10, -10] - ref: mirror_matrix_inner_num shift: [0, -5] - -cases: - case: - - type: outline - name: plate + chip: + # cutout for the chip itself + - type: rectangle + size: [18, 33] + anchor: + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [-9, -24.5] + # cutout for the cable (looks) + - type: rectangle + size: [8, 50] + anchor: + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [-4, -24.5] + # 14mm holes for cherry switches + keyholes: + - type: keys + side: both + size: 14 + bound: false + # switchplate + switchplate: + - outer + - -keyholes + - -chip pcbs: main: outlines: - plate: - outline: plate + outer: + outline: outer footprints: mcu: type: promicro From 73483e290b40803ebf0e5169a1e89986585548d7 Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Wed, 23 Mar 2022 16:49:13 +0100 Subject: [PATCH 111/120] add groundplane --- kicad/45treus/main_version_001.kicad_pcb | 4821 +++++++++++++++++----- 1 file changed, 3800 insertions(+), 1021 deletions(-) diff --git a/kicad/45treus/main_version_001.kicad_pcb b/kicad/45treus/main_version_001.kicad_pcb index f67ae67..65451fc 100644 --- a/kicad/45treus/main_version_001.kicad_pcb +++ b/kicad/45treus/main_version_001.kicad_pcb @@ -2,7 +2,7 @@ (general (thickness 1.6) - (drawings 86) + (drawings 87) (tracks 601) (zones 0) (modules 85) @@ -90,9 +90,9 @@ (subtractmaskfromsilk false) (outputformat 1) (mirror false) - (drillshape 1) + (drillshape 0) (scaleselection 1) - (outputdirectory "")) + (outputdirectory "gerber/")) ) (net 0 "") @@ -242,18 +242,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -273,20 +273,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -309,18 +309,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -340,20 +340,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -376,18 +376,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -407,20 +407,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -443,18 +443,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -474,20 +474,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -510,18 +510,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -541,20 +541,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -577,18 +577,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -608,20 +608,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -644,18 +644,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -675,20 +675,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -711,18 +711,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -742,20 +742,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -778,18 +778,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -809,20 +809,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -845,18 +845,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -876,20 +876,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -912,18 +912,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -943,20 +943,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -979,18 +979,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1010,20 +1010,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1046,18 +1046,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1077,20 +1077,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1113,18 +1113,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1144,20 +1144,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1180,18 +1180,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1211,20 +1211,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1247,18 +1247,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1278,20 +1278,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1314,18 +1314,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1345,20 +1345,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1381,18 +1381,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1412,20 +1412,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1448,18 +1448,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1479,20 +1479,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1515,18 +1515,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1546,20 +1546,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1582,18 +1582,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1613,20 +1613,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1649,18 +1649,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1680,20 +1680,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1716,18 +1716,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1747,20 +1747,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1783,18 +1783,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1814,20 +1814,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1850,18 +1850,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1881,20 +1881,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1917,18 +1917,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -1948,20 +1948,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -1984,18 +1984,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2015,20 +2015,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2051,18 +2051,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2082,20 +2082,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2118,18 +2118,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2149,20 +2149,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2185,18 +2185,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2216,20 +2216,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2252,18 +2252,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2283,20 +2283,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2319,18 +2319,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2350,20 +2350,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2386,18 +2386,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2417,20 +2417,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2453,18 +2453,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2484,20 +2484,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2520,18 +2520,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2551,20 +2551,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2587,18 +2587,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2618,20 +2618,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2654,18 +2654,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2685,20 +2685,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2721,18 +2721,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2752,20 +2752,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2788,18 +2788,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2819,20 +2819,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 P5)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2855,18 +2855,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2886,20 +2886,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 7 P4)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2922,18 +2922,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -2953,20 +2953,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 P3)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -2989,18 +2989,18 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) @@ -3020,20 +3020,20 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 P6)) (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) @@ -3056,17 +3056,17 @@ (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))) ) - (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) (fp_text user RAW (at -13.97 4.8) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))) ) @@ -3189,6 +3189,9 @@ (net 64 P9)) ) + (gr_text "23treus\n@foosinn\n2022-03-23" (at 92.71 12.7) (layer Dwgs.User) + (effects (font (size 1 1) (thickness 0.15))) + ) (gr_line (start -15.469945 7.012903) (end 5.701667 15.999719) (angle 90) (layer Edge.Cuts) (width 0.15)) (gr_arc (start 6.092398 15.079214) (end 5.701667 15.999719) (angle -90) (layer Edge.Cuts) (width 0.15)) (gr_line (start 7.012903 15.469945) (end 7.794365 13.628935) (angle 90) (layer Edge.Cuts) (width 0.15)) @@ -3878,4 +3881,2780 @@ (segment (start 103.563079 -5.952104) (end 116.263079 -5.952104) (width 0.25) (layer F.Cu) (net 54)) (segment (start 118.803079 -3.412104) (end 118.803079 -0.872104) (width 0.25) (layer F.Cu) (net 54)) + (zone (net 54) (net_name GND) (layer B.Cu) (tstamp 623B3947) (hatch edge 0.508) + (connect_pads (clearance 0.508)) + (min_thickness 0.254) + (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 274.32 -99.06) (xy 306.07 81.28) (xy -50.8 85.09) (xy -54.61 -95.25) (xy 133.35 -134.62) + ) + ) + (filled_polygon + (pts + (xy 16.235925 -67.828931) (xy 16.320638 -67.803032) (xy 32.829578 -60.795401) (xy 32.860334 -60.778615) (xy 32.893774 -60.768151) + (xy 32.89378 -60.768149) (xy 32.993809 -60.73685) (xy 33.132869 -60.721927) (xy 33.272167 -60.73442) (xy 33.406353 -60.77385) + (xy 33.530267 -60.8387) (xy 33.639148 -60.926477) (xy 33.728814 -61.033811) (xy 33.795815 -61.156574) (xy 33.806283 -61.190028) + (xy 34.560544 -62.966955) (xy 34.604024 -63.046704) (xy 34.639829 -63.089678) (xy 34.683299 -63.124879) (xy 34.732771 -63.150963) + (xy 34.786378 -63.166944) (xy 34.842064 -63.172207) (xy 34.89771 -63.166555) (xy 34.982414 -63.140658) (xy 51.491359 -56.133027) + (xy 51.52212 -56.116238) (xy 51.555565 -56.105773) (xy 51.655595 -56.074473) (xy 51.794655 -56.059551) (xy 51.794656 -56.059551) + (xy 51.933953 -56.072044) (xy 52.068138 -56.111473) (xy 52.192053 -56.176323) (xy 52.300934 -56.264101) (xy 52.390599 -56.371434) + (xy 52.440811 -56.463435) (xy 52.440811 -56.463436) (xy 52.4576 -56.494197) (xy 52.468065 -56.527642) (xy 54.00379 -60.145584) + (xy 54.047272 -60.225336) (xy 54.083077 -60.26831) (xy 54.126547 -60.303511) (xy 54.176019 -60.329595) (xy 54.229626 -60.345576) + (xy 54.285312 -60.350839) (xy 54.340958 -60.345187) (xy 54.425671 -60.319288) (xy 75.537263 -51.357948) (xy 75.617012 -51.314468) + (xy 75.659986 -51.278663) (xy 75.695187 -51.235193) (xy 75.721271 -51.185721) (xy 75.737252 -51.132114) (xy 75.742515 -51.076428) + (xy 75.736863 -51.020782) (xy 75.710971 -50.936094) (xy 74.173574 -47.314209) (xy 74.156782 -47.283441) (xy 74.11689 -47.155952) + (xy 74.115017 -47.149965) (xy 74.100095 -47.010905) (xy 74.112588 -46.871608) (xy 74.152017 -46.737423) (xy 74.216867 -46.613508) + (xy 74.304644 -46.504627) (xy 74.411978 -46.414962) (xy 74.534741 -46.34796) (xy 74.568193 -46.337493) (xy 91.073207 -39.331529) + (xy 91.152948 -39.288053) (xy 91.195922 -39.252248) (xy 91.231123 -39.208778) (xy 91.257207 -39.159306) (xy 91.273188 -39.105699) + (xy 91.278451 -39.050013) (xy 91.272799 -38.994367) (xy 91.246902 -38.909662) (xy 89.31878 -34.367288) (xy 89.301987 -34.33652) + (xy 89.27169 -34.239693) (xy 89.260222 -34.203044) (xy 89.2453 -34.063984) (xy 89.257793 -33.924687) (xy 89.297222 -33.790502) + (xy 89.362072 -33.666587) (xy 89.449849 -33.557706) (xy 89.557183 -33.468041) (xy 89.679946 -33.401039) (xy 89.713398 -33.390572) + (xy 106.218409 -26.38461) (xy 106.298154 -26.341132) (xy 106.341128 -26.305327) (xy 106.376329 -26.261857) (xy 106.402413 -26.212385) + (xy 106.418394 -26.158778) (xy 106.423657 -26.103092) (xy 106.418005 -26.047446) (xy 106.392111 -25.96275) (xy 102.042561 -15.715849) + (xy 102.024571 -15.682192) (xy 102.005138 -15.618129) (xy 101.985214 -15.554457) (xy 101.984881 -15.551352) (xy 101.983972 -15.548356) + (xy 101.977412 -15.48175) (xy 101.970292 -15.415397) (xy 101.970571 -15.412288) (xy 101.970264 -15.409172) (xy 101.976824 -15.342565) + (xy 101.982785 -15.2761) (xy 101.983665 -15.273105) (xy 101.983972 -15.269988) (xy 102.0034 -15.205943) (xy 102.022214 -15.141915) + (xy 102.023662 -15.139148) (xy 102.024571 -15.136152) (xy 102.056116 -15.077136) (xy 102.087064 -15.018) (xy 102.089024 -15.015569) + (xy 102.090499 -15.012809) (xy 102.13293 -14.961106) (xy 102.174841 -14.909119) (xy 102.177239 -14.907116) (xy 102.179224 -14.904697) + (xy 102.230938 -14.862257) (xy 102.282175 -14.819454) (xy 102.284916 -14.817958) (xy 102.287336 -14.815972) (xy 102.346341 -14.784433) + (xy 102.404938 -14.752452) (xy 102.407919 -14.751519) (xy 102.410679 -14.750044) (xy 102.474698 -14.730624) (xy 102.538414 -14.710687) + (xy 102.541519 -14.710354) (xy 102.544515 -14.709445) (xy 102.61112 -14.702885) (xy 102.677474 -14.695765) (xy 102.715462 -14.699172) + (xy 119.650685 -14.699172) (xy 119.688684 -14.695764) (xy 119.755098 -14.702891) (xy 119.821643 -14.709445) (xy 119.824639 -14.710354) + (xy 119.827744 -14.710687) (xy 119.89146 -14.730624) (xy 119.955479 -14.750044) (xy 119.958239 -14.751519) (xy 119.96122 -14.752452) + (xy 120.019817 -14.784433) (xy 120.078822 -14.815972) (xy 120.081242 -14.817958) (xy 120.083983 -14.819454) (xy 120.13522 -14.862257) + (xy 120.186934 -14.904697) (xy 120.188919 -14.907116) (xy 120.191317 -14.909119) (xy 120.233228 -14.961106) (xy 120.275659 -15.012809) + (xy 120.277134 -15.015569) (xy 120.279094 -15.018) (xy 120.310054 -15.077158) (xy 120.341587 -15.136152) (xy 120.342495 -15.139145) + (xy 120.343944 -15.141914) (xy 120.362763 -15.20596) (xy 120.382186 -15.269988) (xy 120.382493 -15.273105) (xy 120.383373 -15.2761) + (xy 120.389339 -15.342614) (xy 120.395894 -15.409172) (xy 120.395588 -15.412283) (xy 120.395867 -15.415398) (xy 120.388739 -15.481821) + (xy 120.382186 -15.548356) (xy 120.381277 -15.551351) (xy 120.380944 -15.554458) (xy 120.36099 -15.618229) (xy 120.341587 -15.682192) + (xy 120.323604 -15.715837) (xy 118.152156 -20.831448) (xy 121.881002 -20.831448) (xy 121.881002 -18.331448) (xy 121.893262 -18.206966) + (xy 121.929572 -18.087268) (xy 121.988537 -17.976954) (xy 122.067889 -17.880263) (xy 122.16458 -17.800911) (xy 122.274894 -17.741946) + (xy 122.394592 -17.705636) (xy 122.519074 -17.693376) (xy 123.139748 -17.693376) (xy 123.1591 -17.657172) (xy 123.206558 -17.599345) + (xy 123.254074 -17.541447) (xy 123.283072 -17.517649) (xy 127.391237 -13.409483) (xy 127.415035 -13.380485) (xy 127.444033 -13.356687) + (xy 127.530759 -13.285512) (xy 127.622551 -13.236448) (xy 127.662789 -13.21494) (xy 127.80605 -13.171483) (xy 127.917703 -13.160486) + (xy 127.917713 -13.160486) (xy 127.955036 -13.15681) (xy 127.992359 -13.160486) (xy 128.353387 -13.160486) (xy 128.521749 -12.908514) + (xy 128.742869 -12.687394) (xy 129.002878 -12.513662) (xy 129.291784 -12.393993) (xy 129.598486 -12.332986) (xy 129.911196 -12.332986) + (xy 130.217898 -12.393993) (xy 130.506804 -12.513662) (xy 130.766813 -12.687394) (xy 130.987933 -12.908514) (xy 131.161665 -13.168523) + (xy 131.179382 -13.211295) (xy 131.191398 -13.21494) (xy 131.323427 -13.285512) (xy 131.439152 -13.380485) (xy 131.461656 -13.407906) + (xy 131.56891 -13.398286) (xy 131.69328 -13.411632) (xy 131.812656 -13.448986) (xy 132.641111 -13.800644) (xy 132.750907 -13.860568) + (xy 132.846902 -13.940761) (xy 132.925408 -14.038141) (xy 132.983407 -14.148966) (xy 133.018671 -14.268976) (xy 133.029845 -14.39356) + (xy 133.016499 -14.51793) (xy 132.979145 -14.637306) (xy 132.510268 -15.741912) (xy 132.450344 -15.851708) (xy 132.370151 -15.947703) + (xy 132.272771 -16.026209) (xy 132.161946 -16.084208) (xy 132.041936 -16.119472) (xy 131.917352 -16.130646) (xy 131.792982 -16.1173) + (xy 131.673606 -16.079946) (xy 130.845151 -15.728288) (xy 130.735355 -15.668364) (xy 130.63936 -15.588171) (xy 130.560854 -15.490791) + (xy 130.502855 -15.379966) (xy 130.48949 -15.334482) (xy 130.217898 -15.446979) (xy 129.911196 -15.507986) (xy 129.598486 -15.507986) + (xy 129.291784 -15.446979) (xy 129.002878 -15.32731) (xy 128.742869 -15.153578) (xy 128.521749 -14.932458) (xy 128.353387 -14.680486) + (xy 128.269838 -14.680486) (xy 126.390483 -16.559841) (xy 126.485795 -16.540882) (xy 126.778491 -16.540882) (xy 127.065564 -16.597984) + (xy 127.335981 -16.709994) (xy 127.579349 -16.872608) (xy 127.786317 -17.079576) (xy 127.948931 -17.322944) (xy 128.060941 -17.593361) + (xy 128.118043 -17.880434) (xy 128.118043 -18.17313) (xy 128.060941 -18.460203) (xy 127.948931 -18.73062) (xy 127.796193 -18.959208) + (xy 127.820029 -18.969081) (xy 128.16971 -19.20273) (xy 128.46709 -19.50011) (xy 128.679408 -19.817867) (xy 128.679408 -19.752772) + (xy 128.780435 -19.244874) (xy 128.978607 -18.766445) (xy 129.266308 -18.33587) (xy 129.632482 -17.969696) (xy 130.063057 -17.681995) + (xy 130.541486 -17.483823) (xy 131.049384 -17.382796) (xy 131.567232 -17.382796) (xy 132.07513 -17.483823) (xy 132.553559 -17.681995) + (xy 132.984134 -17.969696) (xy 133.350308 -18.33587) (xy 133.638009 -18.766445) (xy 133.836181 -19.244874) (xy 133.937208 -19.752772) + (xy 133.937208 -20.27062) (xy 133.836181 -20.778518) (xy 133.638009 -21.256947) (xy 133.350308 -21.687522) (xy 132.984134 -22.053696) + (xy 132.553559 -22.341397) (xy 132.07513 -22.539569) (xy 131.567232 -22.640596) (xy 131.049384 -22.640596) (xy 130.541486 -22.539569) + (xy 130.063057 -22.341397) (xy 129.632482 -22.053696) (xy 129.266308 -21.687522) (xy 128.978607 -21.256947) (xy 128.930105 -21.139853) + (xy 128.86168 -21.483849) (xy 128.700739 -21.872395) (xy 128.46709 -22.222076) (xy 128.16971 -22.519456) (xy 127.820029 -22.753105) + (xy 127.431483 -22.914046) (xy 127.019006 -22.996093) (xy 126.598448 -22.996093) (xy 126.185971 -22.914046) (xy 125.797425 -22.753105) + (xy 125.447744 -22.519456) (xy 125.150364 -22.222076) (xy 124.916715 -21.872395) (xy 124.755774 -21.483849) (xy 124.752924 -21.46952) + (xy 122.519074 -21.46952) (xy 122.394592 -21.45726) (xy 122.274894 -21.42095) (xy 122.16458 -21.361985) (xy 122.067889 -21.282633) + (xy 121.988537 -21.185942) (xy 121.929572 -21.075628) (xy 121.893262 -20.95593) (xy 121.881002 -20.831448) (xy 118.152156 -20.831448) + (xy 115.975715 -25.95882) (xy 115.948554 -26.045488) (xy 115.942514 -26.10109) (xy 115.947389 -26.156813) (xy 115.962995 -26.21053) + (xy 115.988733 -26.260183) (xy 116.023633 -26.303901) (xy 116.066351 -26.340001) (xy 116.143825 -26.382945) (xy 132.652778 -33.390577) + (xy 132.686212 -33.401039) (xy 132.716963 -33.417822) (xy 132.716974 -33.417827) (xy 132.808975 -33.46804) (xy 132.916308 -33.557705) + (xy 132.916694 -33.558183) (xy 132.941487 -33.588937) (xy 133.004086 -33.666586) (xy 133.062586 -33.778369) (xy 137.026208 -33.778369) + (xy 137.026208 -31.278369) (xy 137.038468 -31.153887) (xy 137.074778 -31.034189) (xy 137.133743 -30.923875) (xy 137.213095 -30.827184) + (xy 137.309786 -30.747832) (xy 137.4201 -30.688867) (xy 137.539798 -30.652557) (xy 137.66428 -30.640297) (xy 138.284954 -30.640297) + (xy 138.304306 -30.604093) (xy 138.344782 -30.554774) (xy 138.39928 -30.488368) (xy 138.428278 -30.46457) (xy 142.536443 -26.356404) + (xy 142.560241 -26.327406) (xy 142.589239 -26.303608) (xy 142.675965 -26.232433) (xy 142.792209 -26.170299) (xy 142.807995 -26.161861) + (xy 142.951256 -26.118404) (xy 143.062909 -26.107407) (xy 143.062919 -26.107407) (xy 143.100242 -26.103731) (xy 143.137565 -26.107407) + (xy 143.498592 -26.107407) (xy 143.666954 -25.855435) (xy 143.888074 -25.634315) (xy 144.148083 -25.460583) (xy 144.436989 -25.340914) + (xy 144.743691 -25.279907) (xy 145.056401 -25.279907) (xy 145.363103 -25.340914) (xy 145.652009 -25.460583) (xy 145.912018 -25.634315) + (xy 146.133138 -25.855435) (xy 146.30687 -26.115444) (xy 146.426539 -26.40435) (xy 146.428303 -26.413216) (xy 146.469521 -26.391645) + (xy 146.589531 -26.356381) (xy 146.714115 -26.345207) (xy 146.838485 -26.358553) (xy 146.957861 -26.395907) (xy 147.786316 -26.747565) + (xy 147.896112 -26.807489) (xy 147.992107 -26.887682) (xy 148.070613 -26.985062) (xy 148.128612 -27.095887) (xy 148.163876 -27.215897) + (xy 148.17505 -27.340481) (xy 148.161704 -27.464851) (xy 148.12435 -27.584227) (xy 147.655473 -28.688833) (xy 147.595549 -28.798629) + (xy 147.515356 -28.894624) (xy 147.417976 -28.97313) (xy 147.307151 -29.031129) (xy 147.187141 -29.066393) (xy 147.062557 -29.077567) + (xy 146.938187 -29.064221) (xy 146.818811 -29.026867) (xy 145.990356 -28.675209) (xy 145.88056 -28.615285) (xy 145.784565 -28.535092) + (xy 145.706059 -28.437712) (xy 145.64806 -28.326887) (xy 145.634695 -28.281403) (xy 145.363103 -28.3939) (xy 145.056401 -28.454907) + (xy 144.743691 -28.454907) (xy 144.436989 -28.3939) (xy 144.148083 -28.274231) (xy 143.888074 -28.100499) (xy 143.666954 -27.879379) + (xy 143.498592 -27.627407) (xy 143.415044 -27.627407) (xy 141.670746 -29.371705) (xy 148.639288 -29.371705) (xy 148.652634 -29.247335) + (xy 148.689988 -29.127959) (xy 149.158865 -28.023353) (xy 149.218789 -27.913557) (xy 149.298982 -27.817562) (xy 149.396362 -27.739056) + (xy 149.507187 -27.681057) (xy 149.627197 -27.645793) (xy 149.751781 -27.634619) (xy 149.876151 -27.647965) (xy 149.995527 -27.685319) + (xy 150.823982 -28.036977) (xy 150.933778 -28.096901) (xy 151.029773 -28.177094) (xy 151.039417 -28.189057) (xy 151.093472 -28.145479) + (xy 151.204297 -28.08748) (xy 151.324307 -28.052216) (xy 151.448891 -28.041042) (xy 151.573261 -28.054388) (xy 151.692638 -28.091742) + (xy 153.329296 -28.786462) (xy 153.439091 -28.846386) (xy 153.535086 -28.926579) (xy 153.613592 -29.023959) (xy 153.671591 -29.134784) + (xy 153.706855 -29.254794) (xy 153.718029 -29.379378) (xy 153.704683 -29.503748) (xy 153.667329 -29.623125) (xy 152.972609 -31.259783) + (xy 152.912685 -31.369578) (xy 152.832492 -31.465573) (xy 152.735112 -31.544079) (xy 152.624287 -31.602078) (xy 152.504277 -31.637342) + (xy 152.379693 -31.648516) (xy 152.255323 -31.63517) (xy 152.135946 -31.597816) (xy 150.499288 -30.903096) (xy 150.389493 -30.843172) + (xy 150.293498 -30.762979) (xy 150.214992 -30.665599) (xy 150.156993 -30.554774) (xy 150.121729 -30.434764) (xy 150.115526 -30.365606) + (xy 150.100223 -30.366979) (xy 149.975853 -30.353633) (xy 149.856477 -30.316279) (xy 149.028022 -29.964621) (xy 148.918226 -29.904697) + (xy 148.822231 -29.824504) (xy 148.743725 -29.727124) (xy 148.685726 -29.616299) (xy 148.650462 -29.496289) (xy 148.639288 -29.371705) + (xy 141.670746 -29.371705) (xy 141.535689 -29.506762) (xy 141.631001 -29.487803) (xy 141.923697 -29.487803) (xy 142.21077 -29.544905) + (xy 142.481187 -29.656915) (xy 142.724555 -29.819529) (xy 142.931523 -30.026497) (xy 143.094137 -30.269865) (xy 143.206147 -30.540282) + (xy 143.263249 -30.827355) (xy 143.263249 -31.120051) (xy 143.206147 -31.407124) (xy 143.094137 -31.677541) (xy 142.941399 -31.906129) + (xy 142.965235 -31.916002) (xy 143.314916 -32.149651) (xy 143.612296 -32.447031) (xy 143.824614 -32.764788) (xy 143.824614 -32.699693) + (xy 143.925641 -32.191795) (xy 144.123813 -31.713366) (xy 144.411514 -31.282791) (xy 144.777688 -30.916617) (xy 145.208263 -30.628916) + (xy 145.686692 -30.430744) (xy 146.19459 -30.329717) (xy 146.712438 -30.329717) (xy 147.220336 -30.430744) (xy 147.698765 -30.628916) + (xy 148.12934 -30.916617) (xy 148.495514 -31.282791) (xy 148.783215 -31.713366) (xy 148.981387 -32.191795) (xy 149.082414 -32.699693) + (xy 149.082414 -33.217541) (xy 148.981387 -33.725439) (xy 148.783215 -34.203868) (xy 148.495514 -34.634443) (xy 148.12934 -35.000617) + (xy 147.99575 -35.089879) (xy 149.643779 -35.089879) (xy 149.643779 -34.797183) (xy 149.700881 -34.51011) (xy 149.812891 -34.239693) + (xy 149.975505 -33.996325) (xy 150.182473 -33.789357) (xy 150.425841 -33.626743) (xy 150.696258 -33.514733) (xy 150.983331 -33.457631) + (xy 151.276027 -33.457631) (xy 151.5631 -33.514733) (xy 151.833517 -33.626743) (xy 152.076885 -33.789357) (xy 152.283853 -33.996325) + (xy 152.446467 -34.239693) (xy 152.558477 -34.51011) (xy 152.615579 -34.797183) (xy 152.615579 -35.089879) (xy 152.558477 -35.376952) + (xy 152.446467 -35.647369) (xy 152.283853 -35.890737) (xy 152.076885 -36.097705) (xy 151.833517 -36.260319) (xy 151.5631 -36.372329) + (xy 151.276027 -36.429431) (xy 150.983331 -36.429431) (xy 150.696258 -36.372329) (xy 150.425841 -36.260319) (xy 150.182473 -36.097705) + (xy 149.975505 -35.890737) (xy 149.812891 -35.647369) (xy 149.700881 -35.376952) (xy 149.643779 -35.089879) (xy 147.99575 -35.089879) + (xy 147.698765 -35.288318) (xy 147.220336 -35.48649) (xy 146.712438 -35.587517) (xy 146.19459 -35.587517) (xy 145.686692 -35.48649) + (xy 145.208263 -35.288318) (xy 144.777688 -35.000617) (xy 144.411514 -34.634443) (xy 144.123813 -34.203868) (xy 144.075311 -34.086774) + (xy 144.006886 -34.43077) (xy 143.845945 -34.819316) (xy 143.612296 -35.168997) (xy 143.314916 -35.466377) (xy 142.965235 -35.700026) + (xy 142.576689 -35.860967) (xy 142.164212 -35.943014) (xy 141.743654 -35.943014) (xy 141.331177 -35.860967) (xy 140.942631 -35.700026) + (xy 140.59295 -35.466377) (xy 140.29557 -35.168997) (xy 140.061921 -34.819316) (xy 139.90098 -34.43077) (xy 139.89813 -34.416441) + (xy 137.66428 -34.416441) (xy 137.539798 -34.404181) (xy 137.4201 -34.367871) (xy 137.309786 -34.308906) (xy 137.213095 -34.229554) + (xy 137.133743 -34.132863) (xy 137.074778 -34.022549) (xy 137.038468 -33.902851) (xy 137.026208 -33.778369) (xy 133.062586 -33.778369) + (xy 133.068936 -33.790501) (xy 133.108365 -33.924686) (xy 133.111561 -33.960321) (xy 133.120859 -34.063985) (xy 133.105936 -34.203045) + (xy 133.074637 -34.303074) (xy 133.074632 -34.303087) (xy 133.06417 -34.33652) (xy 133.047387 -34.36727) (xy 131.149879 -38.837518) + (xy 144.671682 -38.837518) (xy 144.671682 -38.41696) (xy 144.753729 -38.004483) (xy 144.91467 -37.615937) (xy 145.148319 -37.266256) + (xy 145.445699 -36.968876) (xy 145.79538 -36.735227) (xy 146.183926 -36.574286) (xy 146.596403 -36.492239) (xy 147.016961 -36.492239) + (xy 147.429438 -36.574286) (xy 147.817984 -36.735227) (xy 148.167665 -36.968876) (xy 148.465045 -37.266256) (xy 148.698694 -37.615937) + (xy 148.859635 -38.004483) (xy 148.864584 -38.029361) (xy 150.65946 -38.029361) (xy 156.510081 -32.178739) (xy 156.51008 -24.315913) + (xy 155.99508 -24.315913) (xy 155.870598 -24.303653) (xy 155.7509 -24.267343) (xy 155.640586 -24.208378) (xy 155.543895 -24.129026) + (xy 155.464543 -24.032335) (xy 155.405578 -23.922021) (xy 155.369268 -23.802323) (xy 155.357008 -23.677841) (xy 155.357008 -22.95273) + (xy 155.241875 -23.029659) (xy 154.853329 -23.1906) (xy 154.440852 -23.272647) (xy 154.020294 -23.272647) (xy 153.607817 -23.1906) + (xy 153.219271 -23.029659) (xy 152.86959 -22.79601) (xy 152.57221 -22.49863) (xy 152.338561 -22.148949) (xy 152.17762 -21.760403) + (xy 152.095573 -21.347926) (xy 152.095573 -20.927368) (xy 152.17762 -20.514891) (xy 152.338561 -20.126345) (xy 152.57221 -19.776664) + (xy 152.86959 -19.479284) (xy 153.219271 -19.245635) (xy 153.607817 -19.084694) (xy 154.020294 -19.002647) (xy 154.440852 -19.002647) + (xy 154.853329 -19.084694) (xy 155.241875 -19.245635) (xy 155.591556 -19.479284) (xy 155.888936 -19.776664) (xy 156.122585 -20.126345) + (xy 156.283526 -20.514891) (xy 156.288475 -20.539769) (xy 158.083351 -20.539769) (xy 163.933973 -14.689146) (xy 163.933972 -6.826321) + (xy 163.418972 -6.826321) (xy 163.29449 -6.814061) (xy 163.174792 -6.777751) (xy 163.064478 -6.718786) (xy 162.967787 -6.639434) + (xy 162.888435 -6.542743) (xy 162.82947 -6.432429) (xy 162.79316 -6.312731) (xy 162.7809 -6.188249) (xy 162.7809 -5.463138) + (xy 162.665767 -5.540067) (xy 162.277221 -5.701008) (xy 161.864744 -5.783055) (xy 161.444186 -5.783055) (xy 161.031709 -5.701008) + (xy 160.643163 -5.540067) (xy 160.293482 -5.306418) (xy 159.996102 -5.009038) (xy 159.762453 -4.659357) (xy 159.601512 -4.270811) + (xy 159.519465 -3.858334) (xy 159.519465 -3.437776) (xy 159.601512 -3.025299) (xy 159.762453 -2.636753) (xy 159.996102 -2.287072) + (xy 160.293482 -1.989692) (xy 160.643163 -1.756043) (xy 161.031709 -1.595102) (xy 161.444186 -1.513055) (xy 161.864744 -1.513055) + (xy 162.277221 -1.595102) (xy 162.665767 -1.756043) (xy 163.015448 -1.989692) (xy 163.312828 -2.287072) (xy 163.546477 -2.636753) + (xy 163.707418 -3.025299) (xy 163.712367 -3.050177) (xy 165.507243 -3.050177) (xy 171.357864 2.800445) (xy 171.357863 10.395) + (xy 171.348061 10.395) (xy 171.148102 10.434774) (xy 170.959744 10.512795) (xy 170.790226 10.626063) (xy 170.743202 10.673087) + (xy 170.718381 10.675532) (xy 170.598683 10.711842) (xy 170.488369 10.770807) (xy 170.391678 10.850159) (xy 170.312326 10.94685) + (xy 170.253361 11.057164) (xy 170.217051 11.176862) (xy 170.204791 11.301344) (xy 170.204791 12.026455) (xy 170.089658 11.949526) + (xy 169.701112 11.788585) (xy 169.288635 11.706538) (xy 168.868077 11.706538) (xy 168.4556 11.788585) (xy 168.067054 11.949526) + (xy 167.717373 12.183175) (xy 167.419993 12.480555) (xy 167.186344 12.830236) (xy 167.025403 13.218782) (xy 166.943356 13.631259) + (xy 166.943356 14.051817) (xy 167.025403 14.464294) (xy 167.186344 14.85284) (xy 167.419993 15.202521) (xy 167.717373 15.499901) + (xy 168.067054 15.73355) (xy 168.4556 15.894491) (xy 168.868077 15.976538) (xy 169.288635 15.976538) (xy 169.701112 15.894491) + (xy 170.089658 15.73355) (xy 170.439339 15.499901) (xy 170.736719 15.202521) (xy 170.970368 14.85284) (xy 171.131309 14.464294) + (xy 171.136258 14.439416) (xy 173.392863 14.439416) (xy 173.517345 14.427156) (xy 173.637043 14.390846) (xy 173.747357 14.331881) + (xy 173.844048 14.252529) (xy 173.9234 14.155838) (xy 173.982365 14.045524) (xy 174.018675 13.925826) (xy 174.030935 13.801344) + (xy 174.030935 11.301344) (xy 174.018675 11.176862) (xy 173.982365 11.057164) (xy 173.9234 10.94685) (xy 173.844048 10.850159) + (xy 173.747357 10.770807) (xy 173.637043 10.711842) (xy 173.517345 10.675532) (xy 173.392863 10.663272) (xy 172.877863 10.663272) + (xy 172.877863 6.663992) (xy 174.833819 6.663992) (xy 174.833819 9.163992) (xy 174.846079 9.288474) (xy 174.882389 9.408172) + (xy 174.941354 9.518486) (xy 175.020706 9.615177) (xy 175.117397 9.694529) (xy 175.227711 9.753494) (xy 175.347409 9.789804) + (xy 175.471891 9.802064) (xy 176.092565 9.802064) (xy 176.111917 9.838268) (xy 176.180325 9.921622) (xy 176.206891 9.953993) + (xy 176.235889 9.977791) (xy 180.344054 14.085957) (xy 180.367852 14.114955) (xy 180.39685 14.138753) (xy 180.483576 14.209928) + (xy 180.605616 14.27516) (xy 180.615606 14.2805) (xy 180.758867 14.323957) (xy 180.87052 14.334954) (xy 180.87053 14.334954) + (xy 180.907853 14.33863) (xy 180.945176 14.334954) (xy 181.306203 14.334954) (xy 181.474565 14.586926) (xy 181.695685 14.808046) + (xy 181.955694 14.981778) (xy 182.2446 15.101447) (xy 182.551302 15.162454) (xy 182.864012 15.162454) (xy 183.170714 15.101447) + (xy 183.45962 14.981778) (xy 183.719629 14.808046) (xy 183.940749 14.586926) (xy 184.114481 14.326917) (xy 184.132198 14.284145) + (xy 184.144214 14.2805) (xy 184.276243 14.209928) (xy 184.391968 14.114955) (xy 184.414472 14.087534) (xy 184.521726 14.097154) + (xy 184.646096 14.083808) (xy 184.765472 14.046454) (xy 185.593927 13.694796) (xy 185.703723 13.634872) (xy 185.799718 13.554679) + (xy 185.878224 13.457299) (xy 185.936223 13.346474) (xy 185.971487 13.226464) (xy 185.982661 13.10188) (xy 185.969315 12.97751) + (xy 185.931961 12.858134) (xy 185.463084 11.753528) (xy 185.40316 11.643732) (xy 185.322967 11.547737) (xy 185.225587 11.469231) + (xy 185.114762 11.411232) (xy 184.994752 11.375968) (xy 184.870168 11.364794) (xy 184.745798 11.37814) (xy 184.626422 11.415494) + (xy 183.797967 11.767152) (xy 183.688171 11.827076) (xy 183.592176 11.907269) (xy 183.51367 12.004649) (xy 183.455671 12.115474) + (xy 183.442306 12.160958) (xy 183.170714 12.048461) (xy 182.864012 11.987454) (xy 182.551302 11.987454) (xy 182.2446 12.048461) + (xy 181.955694 12.16813) (xy 181.695685 12.341862) (xy 181.474565 12.562982) (xy 181.306203 12.814954) (xy 181.222655 12.814954) + (xy 179.478357 11.070656) (xy 186.446899 11.070656) (xy 186.460245 11.195026) (xy 186.497599 11.314402) (xy 186.966476 12.419008) + (xy 187.0264 12.528804) (xy 187.106593 12.624799) (xy 187.203973 12.703305) (xy 187.314798 12.761304) (xy 187.434808 12.796568) + (xy 187.559392 12.807742) (xy 187.683762 12.794396) (xy 187.803138 12.757042) (xy 188.631593 12.405384) (xy 188.741389 12.34546) + (xy 188.837384 12.265267) (xy 188.847028 12.253304) (xy 188.901083 12.296882) (xy 189.011908 12.354881) (xy 189.131918 12.390145) + (xy 189.256502 12.401319) (xy 189.380872 12.387973) (xy 189.500249 12.350619) (xy 191.136907 11.655899) (xy 191.246702 11.595975) + (xy 191.342697 11.515782) (xy 191.421203 11.418402) (xy 191.479202 11.307577) (xy 191.514466 11.187567) (xy 191.52564 11.062983) + (xy 191.512294 10.938613) (xy 191.47494 10.819236) (xy 190.78022 9.182578) (xy 190.720296 9.072783) (xy 190.640103 8.976788) + (xy 190.542723 8.898282) (xy 190.431898 8.840283) (xy 190.311888 8.805019) (xy 190.187304 8.793845) (xy 190.062934 8.807191) + (xy 189.943557 8.844545) (xy 188.306899 9.539265) (xy 188.197104 9.599189) (xy 188.101109 9.679382) (xy 188.022603 9.776762) + (xy 187.964604 9.887587) (xy 187.92934 10.007597) (xy 187.923137 10.076755) (xy 187.907834 10.075382) (xy 187.783464 10.088728) + (xy 187.664088 10.126082) (xy 186.835633 10.47774) (xy 186.725837 10.537664) (xy 186.629842 10.617857) (xy 186.551336 10.715237) + (xy 186.493337 10.826062) (xy 186.458073 10.946072) (xy 186.446899 11.070656) (xy 179.478357 11.070656) (xy 179.3433 10.935599) + (xy 179.438612 10.954558) (xy 179.731308 10.954558) (xy 180.018381 10.897456) (xy 180.288798 10.785446) (xy 180.532166 10.622832) + (xy 180.739134 10.415864) (xy 180.901748 10.172496) (xy 181.013758 9.902079) (xy 181.07086 9.615006) (xy 181.07086 9.32231) + (xy 181.013758 9.035237) (xy 180.901748 8.76482) (xy 180.74901 8.536232) (xy 180.772846 8.526359) (xy 181.122527 8.29271) + (xy 181.419907 7.99533) (xy 181.632225 7.677573) (xy 181.632225 7.742668) (xy 181.733252 8.250566) (xy 181.931424 8.728995) + (xy 182.219125 9.15957) (xy 182.585299 9.525744) (xy 183.015874 9.813445) (xy 183.494303 10.011617) (xy 184.002201 10.112644) + (xy 184.520049 10.112644) (xy 185.027947 10.011617) (xy 185.506376 9.813445) (xy 185.936951 9.525744) (xy 186.303125 9.15957) + (xy 186.590826 8.728995) (xy 186.788998 8.250566) (xy 186.890025 7.742668) (xy 186.890025 7.22482) (xy 186.788998 6.716922) + (xy 186.590826 6.238493) (xy 186.303125 5.807918) (xy 185.936951 5.441744) (xy 185.803361 5.352482) (xy 187.45139 5.352482) + (xy 187.45139 5.645178) (xy 187.508492 5.932251) (xy 187.620502 6.202668) (xy 187.783116 6.446036) (xy 187.990084 6.653004) + (xy 188.233452 6.815618) (xy 188.503869 6.927628) (xy 188.790942 6.98473) (xy 189.083638 6.98473) (xy 189.370711 6.927628) + (xy 189.641128 6.815618) (xy 189.884496 6.653004) (xy 190.091464 6.446036) (xy 190.254078 6.202668) (xy 190.366088 5.932251) + (xy 190.42319 5.645178) (xy 190.42319 5.352482) (xy 190.366088 5.065409) (xy 190.254078 4.794992) (xy 190.091464 4.551624) + (xy 189.884496 4.344656) (xy 189.641128 4.182042) (xy 189.370711 4.070032) (xy 189.083638 4.01293) (xy 188.790942 4.01293) + (xy 188.503869 4.070032) (xy 188.233452 4.182042) (xy 187.990084 4.344656) (xy 187.783116 4.551624) (xy 187.620502 4.794992) + (xy 187.508492 5.065409) (xy 187.45139 5.352482) (xy 185.803361 5.352482) (xy 185.506376 5.154043) (xy 185.027947 4.955871) + (xy 184.520049 4.854844) (xy 184.002201 4.854844) (xy 183.494303 4.955871) (xy 183.015874 5.154043) (xy 182.585299 5.441744) + (xy 182.219125 5.807918) (xy 181.931424 6.238493) (xy 181.882922 6.355587) (xy 181.814497 6.011591) (xy 181.653556 5.623045) + (xy 181.419907 5.273364) (xy 181.122527 4.975984) (xy 180.772846 4.742335) (xy 180.3843 4.581394) (xy 179.971823 4.499347) + (xy 179.551265 4.499347) (xy 179.138788 4.581394) (xy 178.750242 4.742335) (xy 178.400561 4.975984) (xy 178.103181 5.273364) + (xy 177.869532 5.623045) (xy 177.708591 6.011591) (xy 177.705741 6.02592) (xy 175.471891 6.02592) (xy 175.347409 6.03818) + (xy 175.227711 6.07449) (xy 175.117397 6.133455) (xy 175.020706 6.212807) (xy 174.941354 6.309498) (xy 174.882389 6.419812) + (xy 174.846079 6.53951) (xy 174.833819 6.663992) (xy 172.877863 6.663992) (xy 172.877863 2.522964) (xy 172.881539 2.485641) + (xy 172.877863 2.448318) (xy 172.877863 2.448309) (xy 172.866866 2.336656) (xy 172.823409 2.193395) (xy 172.752837 2.061366) + (xy 172.657864 1.945641) (xy 172.628866 1.921843) (xy 166.607044 -4.099978) (xy 166.607044 -6.188249) (xy 166.594784 -6.312731) + (xy 166.558474 -6.432429) (xy 166.499509 -6.542743) (xy 166.420157 -6.639434) (xy 166.323466 -6.718786) (xy 166.213152 -6.777751) + (xy 166.093454 -6.814061) (xy 165.968972 -6.826321) (xy 165.453972 -6.826321) (xy 165.453972 -10.8256) (xy 167.409927 -10.8256) + (xy 167.409927 -8.3256) (xy 167.422187 -8.201118) (xy 167.458497 -8.08142) (xy 167.517462 -7.971106) (xy 167.596814 -7.874415) + (xy 167.693505 -7.795063) (xy 167.803819 -7.736098) (xy 167.923517 -7.699788) (xy 168.047999 -7.687528) (xy 168.668673 -7.687528) + (xy 168.688025 -7.651324) (xy 168.746572 -7.579985) (xy 168.782999 -7.535599) (xy 168.811997 -7.511801) (xy 172.920162 -3.403635) + (xy 172.94396 -3.374637) (xy 172.972958 -3.350839) (xy 173.059684 -3.279664) (xy 173.14356 -3.234831) (xy 173.191714 -3.209092) + (xy 173.334975 -3.165635) (xy 173.446628 -3.154638) (xy 173.446638 -3.154638) (xy 173.483961 -3.150962) (xy 173.521284 -3.154638) + (xy 173.882312 -3.154638) (xy 174.050674 -2.902666) (xy 174.271794 -2.681546) (xy 174.531803 -2.507814) (xy 174.820709 -2.388145) + (xy 175.127411 -2.327138) (xy 175.440121 -2.327138) (xy 175.746823 -2.388145) (xy 176.035729 -2.507814) (xy 176.295738 -2.681546) + (xy 176.516858 -2.902666) (xy 176.69059 -3.162675) (xy 176.708307 -3.205447) (xy 176.720323 -3.209092) (xy 176.852352 -3.279664) + (xy 176.968077 -3.374637) (xy 176.990581 -3.402058) (xy 177.097835 -3.392438) (xy 177.222205 -3.405784) (xy 177.341581 -3.443138) + (xy 178.170036 -3.794796) (xy 178.279832 -3.85472) (xy 178.375827 -3.934913) (xy 178.454333 -4.032293) (xy 178.512332 -4.143118) + (xy 178.547596 -4.263128) (xy 178.55877 -4.387712) (xy 178.545424 -4.512082) (xy 178.50807 -4.631458) (xy 178.039193 -5.736064) + (xy 177.979269 -5.84586) (xy 177.899076 -5.941855) (xy 177.801696 -6.020361) (xy 177.690871 -6.07836) (xy 177.570861 -6.113624) + (xy 177.446277 -6.124798) (xy 177.321907 -6.111452) (xy 177.202531 -6.074098) (xy 176.374076 -5.72244) (xy 176.26428 -5.662516) + (xy 176.168285 -5.582323) (xy 176.089779 -5.484943) (xy 176.03178 -5.374118) (xy 176.018415 -5.328634) (xy 175.746823 -5.441131) + (xy 175.440121 -5.502138) (xy 175.127411 -5.502138) (xy 174.820709 -5.441131) (xy 174.531803 -5.321462) (xy 174.271794 -5.14773) + (xy 174.050674 -4.92661) (xy 173.882312 -4.674638) (xy 173.798763 -4.674638) (xy 172.054465 -6.418936) (xy 179.023008 -6.418936) + (xy 179.036354 -6.294566) (xy 179.073708 -6.17519) (xy 179.542585 -5.070584) (xy 179.602509 -4.960788) (xy 179.682702 -4.864793) + (xy 179.780082 -4.786287) (xy 179.890907 -4.728288) (xy 180.010917 -4.693024) (xy 180.135501 -4.68185) (xy 180.259871 -4.695196) + (xy 180.379247 -4.73255) (xy 181.207702 -5.084208) (xy 181.317498 -5.144132) (xy 181.413493 -5.224325) (xy 181.423137 -5.236288) + (xy 181.477192 -5.19271) (xy 181.588017 -5.134711) (xy 181.708027 -5.099447) (xy 181.832611 -5.088273) (xy 181.956981 -5.101619) + (xy 182.076358 -5.138973) (xy 183.713016 -5.833693) (xy 183.822811 -5.893617) (xy 183.918806 -5.97381) (xy 183.997312 -6.07119) + (xy 184.055311 -6.182015) (xy 184.090575 -6.302025) (xy 184.101749 -6.426609) (xy 184.088403 -6.550979) (xy 184.051049 -6.670356) + (xy 183.356329 -8.307014) (xy 183.296405 -8.416809) (xy 183.216212 -8.512804) (xy 183.118832 -8.59131) (xy 183.008007 -8.649309) + (xy 182.887997 -8.684573) (xy 182.763413 -8.695747) (xy 182.639043 -8.682401) (xy 182.519666 -8.645047) (xy 180.883008 -7.950327) + (xy 180.773213 -7.890403) (xy 180.677218 -7.81021) (xy 180.598712 -7.71283) (xy 180.540713 -7.602005) (xy 180.505449 -7.481995) + (xy 180.499246 -7.412837) (xy 180.483943 -7.41421) (xy 180.359573 -7.400864) (xy 180.240197 -7.36351) (xy 179.411742 -7.011852) + (xy 179.301946 -6.951928) (xy 179.205951 -6.871735) (xy 179.127445 -6.774355) (xy 179.069446 -6.66353) (xy 179.034182 -6.54352) + (xy 179.023008 -6.418936) (xy 172.054465 -6.418936) (xy 171.919408 -6.553993) (xy 172.01472 -6.535034) (xy 172.307416 -6.535034) + (xy 172.594489 -6.592136) (xy 172.864906 -6.704146) (xy 173.108274 -6.86676) (xy 173.315242 -7.073728) (xy 173.477856 -7.317096) + (xy 173.589866 -7.587513) (xy 173.646968 -7.874586) (xy 173.646968 -8.167282) (xy 173.589866 -8.454355) (xy 173.477856 -8.724772) + (xy 173.325118 -8.95336) (xy 173.348954 -8.963233) (xy 173.698635 -9.196882) (xy 173.996015 -9.494262) (xy 174.208333 -9.812019) + (xy 174.208333 -9.746924) (xy 174.30936 -9.239026) (xy 174.507532 -8.760597) (xy 174.795233 -8.330022) (xy 175.161407 -7.963848) + (xy 175.591982 -7.676147) (xy 176.070411 -7.477975) (xy 176.578309 -7.376948) (xy 177.096157 -7.376948) (xy 177.604055 -7.477975) + (xy 178.082484 -7.676147) (xy 178.513059 -7.963848) (xy 178.879233 -8.330022) (xy 179.166934 -8.760597) (xy 179.365106 -9.239026) + (xy 179.466133 -9.746924) (xy 179.466133 -10.264772) (xy 179.365106 -10.77267) (xy 179.166934 -11.251099) (xy 178.879233 -11.681674) + (xy 178.513059 -12.047848) (xy 178.379469 -12.13711) (xy 180.027498 -12.13711) (xy 180.027498 -11.844414) (xy 180.0846 -11.557341) + (xy 180.19661 -11.286924) (xy 180.359224 -11.043556) (xy 180.566192 -10.836588) (xy 180.80956 -10.673974) (xy 181.079977 -10.561964) + (xy 181.36705 -10.504862) (xy 181.659746 -10.504862) (xy 181.946819 -10.561964) (xy 182.217236 -10.673974) (xy 182.460604 -10.836588) + (xy 182.667572 -11.043556) (xy 182.830186 -11.286924) (xy 182.942196 -11.557341) (xy 182.999298 -11.844414) (xy 182.999298 -12.13711) + (xy 182.942196 -12.424183) (xy 182.830186 -12.6946) (xy 182.667572 -12.937968) (xy 182.460604 -13.144936) (xy 182.217236 -13.30755) + (xy 181.946819 -13.41956) (xy 181.659746 -13.476662) (xy 181.36705 -13.476662) (xy 181.079977 -13.41956) (xy 180.80956 -13.30755) + (xy 180.566192 -13.144936) (xy 180.359224 -12.937968) (xy 180.19661 -12.6946) (xy 180.0846 -12.424183) (xy 180.027498 -12.13711) + (xy 178.379469 -12.13711) (xy 178.082484 -12.335549) (xy 177.604055 -12.533721) (xy 177.096157 -12.634748) (xy 176.578309 -12.634748) + (xy 176.070411 -12.533721) (xy 175.591982 -12.335549) (xy 175.161407 -12.047848) (xy 174.795233 -11.681674) (xy 174.507532 -11.251099) + (xy 174.45903 -11.134005) (xy 174.390605 -11.478001) (xy 174.229664 -11.866547) (xy 173.996015 -12.216228) (xy 173.698635 -12.513608) + (xy 173.348954 -12.747257) (xy 172.960408 -12.908198) (xy 172.547931 -12.990245) (xy 172.127373 -12.990245) (xy 171.714896 -12.908198) + (xy 171.32635 -12.747257) (xy 170.976669 -12.513608) (xy 170.679289 -12.216228) (xy 170.44564 -11.866547) (xy 170.284699 -11.478001) + (xy 170.281849 -11.463672) (xy 168.047999 -11.463672) (xy 167.923517 -11.451412) (xy 167.803819 -11.415102) (xy 167.693505 -11.356137) + (xy 167.596814 -11.276785) (xy 167.517462 -11.180094) (xy 167.458497 -11.06978) (xy 167.422187 -10.950082) (xy 167.409927 -10.8256) + (xy 165.453972 -10.8256) (xy 165.453972 -14.966624) (xy 165.457648 -15.003949) (xy 165.453972 -15.041274) (xy 165.453972 -15.041282) + (xy 165.442975 -15.152935) (xy 165.399518 -15.296196) (xy 165.328946 -15.428225) (xy 165.233973 -15.54395) (xy 165.204975 -15.567748) + (xy 159.183152 -21.58957) (xy 159.183152 -23.677841) (xy 159.170892 -23.802323) (xy 159.134582 -23.922021) (xy 159.075617 -24.032335) + (xy 158.996265 -24.129026) (xy 158.899574 -24.208378) (xy 158.78926 -24.267343) (xy 158.669562 -24.303653) (xy 158.54508 -24.315913) + (xy 158.03008 -24.315913) (xy 158.03008 -28.315192) (xy 159.986036 -28.315192) (xy 159.986036 -25.815192) (xy 159.998296 -25.69071) + (xy 160.034606 -25.571012) (xy 160.093571 -25.460698) (xy 160.172923 -25.364007) (xy 160.269614 -25.284655) (xy 160.379928 -25.22569) + (xy 160.499626 -25.18938) (xy 160.624108 -25.17712) (xy 161.244782 -25.17712) (xy 161.264134 -25.140916) (xy 161.312125 -25.08244) + (xy 161.359108 -25.025191) (xy 161.388106 -25.001393) (xy 165.496271 -20.893227) (xy 165.520069 -20.864229) (xy 165.549067 -20.840431) + (xy 165.635793 -20.769256) (xy 165.719669 -20.724423) (xy 165.767823 -20.698684) (xy 165.911084 -20.655227) (xy 166.022737 -20.64423) + (xy 166.022747 -20.64423) (xy 166.06007 -20.640554) (xy 166.097393 -20.64423) (xy 166.45842 -20.64423) (xy 166.626782 -20.392258) + (xy 166.847902 -20.171138) (xy 167.107911 -19.997406) (xy 167.396817 -19.877737) (xy 167.703519 -19.81673) (xy 168.016229 -19.81673) + (xy 168.322931 -19.877737) (xy 168.611837 -19.997406) (xy 168.871846 -20.171138) (xy 169.092966 -20.392258) (xy 169.266698 -20.652267) + (xy 169.284415 -20.695039) (xy 169.296431 -20.698684) (xy 169.42846 -20.769256) (xy 169.544185 -20.864229) (xy 169.566689 -20.89165) + (xy 169.673943 -20.88203) (xy 169.798313 -20.895376) (xy 169.917689 -20.93273) (xy 170.746144 -21.284388) (xy 170.85594 -21.344312) + (xy 170.951935 -21.424505) (xy 171.030441 -21.521885) (xy 171.08844 -21.63271) (xy 171.123704 -21.75272) (xy 171.134878 -21.877304) + (xy 171.121532 -22.001674) (xy 171.084178 -22.12105) (xy 170.615301 -23.225656) (xy 170.555377 -23.335452) (xy 170.475184 -23.431447) + (xy 170.377804 -23.509953) (xy 170.266979 -23.567952) (xy 170.146969 -23.603216) (xy 170.022385 -23.61439) (xy 169.898015 -23.601044) + (xy 169.778639 -23.56369) (xy 168.950184 -23.212032) (xy 168.840388 -23.152108) (xy 168.744393 -23.071915) (xy 168.665887 -22.974535) + (xy 168.607888 -22.86371) (xy 168.594523 -22.818226) (xy 168.322931 -22.930723) (xy 168.016229 -22.99173) (xy 167.703519 -22.99173) + (xy 167.396817 -22.930723) (xy 167.107911 -22.811054) (xy 166.847902 -22.637322) (xy 166.626782 -22.416202) (xy 166.45842 -22.16423) + (xy 166.374872 -22.16423) (xy 164.630574 -23.908528) (xy 171.599116 -23.908528) (xy 171.612462 -23.784158) (xy 171.649816 -23.664782) + (xy 172.118693 -22.560176) (xy 172.178617 -22.45038) (xy 172.25881 -22.354385) (xy 172.35619 -22.275879) (xy 172.467015 -22.21788) + (xy 172.587025 -22.182616) (xy 172.711609 -22.171442) (xy 172.835979 -22.184788) (xy 172.955355 -22.222142) (xy 173.78381 -22.5738) + (xy 173.893606 -22.633724) (xy 173.989601 -22.713917) (xy 173.999245 -22.72588) (xy 174.0533 -22.682302) (xy 174.164125 -22.624303) + (xy 174.284135 -22.589039) (xy 174.408719 -22.577865) (xy 174.533089 -22.591211) (xy 174.652466 -22.628565) (xy 176.289124 -23.323285) + (xy 176.398919 -23.383209) (xy 176.494914 -23.463402) (xy 176.57342 -23.560782) (xy 176.631419 -23.671607) (xy 176.666683 -23.791617) + (xy 176.677857 -23.916201) (xy 176.664511 -24.040571) (xy 176.627157 -24.159948) (xy 175.932437 -25.796606) (xy 175.872513 -25.906401) + (xy 175.79232 -26.002396) (xy 175.69494 -26.080902) (xy 175.584115 -26.138901) (xy 175.464105 -26.174165) (xy 175.339521 -26.185339) + (xy 175.215151 -26.171993) (xy 175.095774 -26.134639) (xy 173.459116 -25.439919) (xy 173.349321 -25.379995) (xy 173.253326 -25.299802) + (xy 173.17482 -25.202422) (xy 173.116821 -25.091597) (xy 173.081557 -24.971587) (xy 173.075354 -24.902429) (xy 173.060051 -24.903802) + (xy 172.935681 -24.890456) (xy 172.816305 -24.853102) (xy 171.98785 -24.501444) (xy 171.878054 -24.44152) (xy 171.782059 -24.361327) + (xy 171.703553 -24.263947) (xy 171.645554 -24.153122) (xy 171.61029 -24.033112) (xy 171.599116 -23.908528) (xy 164.630574 -23.908528) + (xy 164.495517 -24.043585) (xy 164.590829 -24.024626) (xy 164.883525 -24.024626) (xy 165.170598 -24.081728) (xy 165.441015 -24.193738) + (xy 165.684383 -24.356352) (xy 165.891351 -24.56332) (xy 166.053965 -24.806688) (xy 166.165975 -25.077105) (xy 166.223077 -25.364178) + (xy 166.223077 -25.656874) (xy 166.165975 -25.943947) (xy 166.053965 -26.214364) (xy 165.901227 -26.442952) (xy 165.925063 -26.452825) + (xy 166.274744 -26.686474) (xy 166.572124 -26.983854) (xy 166.784442 -27.301611) (xy 166.784442 -27.236516) (xy 166.885469 -26.728618) + (xy 167.083641 -26.250189) (xy 167.371342 -25.819614) (xy 167.737516 -25.45344) (xy 168.168091 -25.165739) (xy 168.64652 -24.967567) + (xy 169.154418 -24.86654) (xy 169.672266 -24.86654) (xy 170.180164 -24.967567) (xy 170.658593 -25.165739) (xy 171.089168 -25.45344) + (xy 171.455342 -25.819614) (xy 171.743043 -26.250189) (xy 171.941215 -26.728618) (xy 172.042242 -27.236516) (xy 172.042242 -27.754364) + (xy 171.941215 -28.262262) (xy 171.743043 -28.740691) (xy 171.455342 -29.171266) (xy 171.089168 -29.53744) (xy 170.955578 -29.626702) + (xy 172.603607 -29.626702) (xy 172.603607 -29.334006) (xy 172.660709 -29.046933) (xy 172.772719 -28.776516) (xy 172.935333 -28.533148) + (xy 173.142301 -28.32618) (xy 173.385669 -28.163566) (xy 173.656086 -28.051556) (xy 173.943159 -27.994454) (xy 174.235855 -27.994454) + (xy 174.522928 -28.051556) (xy 174.793345 -28.163566) (xy 175.036713 -28.32618) (xy 175.243681 -28.533148) (xy 175.406295 -28.776516) + (xy 175.518305 -29.046933) (xy 175.575407 -29.334006) (xy 175.575407 -29.626702) (xy 175.518305 -29.913775) (xy 175.406295 -30.184192) + (xy 175.243681 -30.42756) (xy 175.036713 -30.634528) (xy 174.793345 -30.797142) (xy 174.522928 -30.909152) (xy 174.235855 -30.966254) + (xy 173.943159 -30.966254) (xy 173.656086 -30.909152) (xy 173.385669 -30.797142) (xy 173.142301 -30.634528) (xy 172.935333 -30.42756) + (xy 172.772719 -30.184192) (xy 172.660709 -29.913775) (xy 172.603607 -29.626702) (xy 170.955578 -29.626702) (xy 170.658593 -29.825141) + (xy 170.180164 -30.023313) (xy 169.672266 -30.12434) (xy 169.154418 -30.12434) (xy 168.64652 -30.023313) (xy 168.168091 -29.825141) + (xy 167.737516 -29.53744) (xy 167.371342 -29.171266) (xy 167.083641 -28.740691) (xy 167.035139 -28.623597) (xy 166.966714 -28.967593) + (xy 166.805773 -29.356139) (xy 166.572124 -29.70582) (xy 166.274744 -30.0032) (xy 165.925063 -30.236849) (xy 165.536517 -30.39779) + (xy 165.12404 -30.479837) (xy 164.703482 -30.479837) (xy 164.291005 -30.39779) (xy 163.902459 -30.236849) (xy 163.552778 -30.0032) + (xy 163.255398 -29.70582) (xy 163.021749 -29.356139) (xy 162.860808 -28.967593) (xy 162.857958 -28.953264) (xy 160.624108 -28.953264) + (xy 160.499626 -28.941004) (xy 160.379928 -28.904694) (xy 160.269614 -28.845729) (xy 160.172923 -28.766377) (xy 160.093571 -28.669686) + (xy 160.034606 -28.559372) (xy 159.998296 -28.439674) (xy 159.986036 -28.315192) (xy 158.03008 -28.315192) (xy 158.03008 -32.45622) + (xy 158.033756 -32.493543) (xy 158.03008 -32.530866) (xy 158.03008 -32.530875) (xy 158.019083 -32.642528) (xy 157.975626 -32.785789) + (xy 157.905054 -32.917818) (xy 157.810081 -33.033543) (xy 157.781083 -33.057341) (xy 151.759261 -39.079162) (xy 151.759261 -41.167433) + (xy 151.747001 -41.291915) (xy 151.710691 -41.411613) (xy 151.651726 -41.521927) (xy 151.572374 -41.618618) (xy 151.475683 -41.69797) + (xy 151.365369 -41.756935) (xy 151.245671 -41.793245) (xy 151.121189 -41.805505) (xy 148.571189 -41.805505) (xy 148.446707 -41.793245) + (xy 148.327009 -41.756935) (xy 148.216695 -41.69797) (xy 148.120004 -41.618618) (xy 148.040652 -41.521927) (xy 147.981687 -41.411613) + (xy 147.945377 -41.291915) (xy 147.933117 -41.167433) (xy 147.933117 -40.442322) (xy 147.817984 -40.519251) (xy 147.429438 -40.680192) + (xy 147.016961 -40.762239) (xy 146.596403 -40.762239) (xy 146.183926 -40.680192) (xy 145.79538 -40.519251) (xy 145.445699 -40.285602) + (xy 145.148319 -39.988222) (xy 144.91467 -39.638541) (xy 144.753729 -39.249995) (xy 144.671682 -38.837518) (xy 131.149879 -38.837518) + (xy 131.120923 -38.905732) (xy 131.09376 -38.992409) (xy 131.08772 -39.048011) (xy 131.092595 -39.103734) (xy 131.108201 -39.157451) + (xy 131.133939 -39.207104) (xy 131.168839 -39.250822) (xy 131.211557 -39.286922) (xy 131.289031 -39.329866) (xy 146.542985 -45.804785) + (xy 152.562144 -45.804785) (xy 152.562144 -43.304785) (xy 152.574404 -43.180303) (xy 152.610714 -43.060605) (xy 152.669679 -42.950291) + (xy 152.749031 -42.8536) (xy 152.845722 -42.774248) (xy 152.956036 -42.715283) (xy 153.075734 -42.678973) (xy 153.200216 -42.666713) + (xy 153.82089 -42.666713) (xy 153.840242 -42.630509) (xy 153.911417 -42.543783) (xy 153.935216 -42.514784) (xy 153.964214 -42.490986) + (xy 158.07238 -38.382819) (xy 158.096178 -38.353821) (xy 158.211903 -38.258848) (xy 158.343932 -38.188276) (xy 158.487193 -38.144819) + (xy 158.598846 -38.133822) (xy 158.598855 -38.133822) (xy 158.636178 -38.130146) (xy 158.673501 -38.133822) (xy 159.034529 -38.133822) + (xy 159.202891 -37.88185) (xy 159.424011 -37.66073) (xy 159.68402 -37.486998) (xy 159.972926 -37.367329) (xy 160.279628 -37.306322) + (xy 160.592338 -37.306322) (xy 160.89904 -37.367329) (xy 161.187946 -37.486998) (xy 161.447955 -37.66073) (xy 161.669075 -37.88185) + (xy 161.842807 -38.141859) (xy 161.860524 -38.184631) (xy 161.87254 -38.188276) (xy 162.004569 -38.258848) (xy 162.120294 -38.353821) + (xy 162.142798 -38.381242) (xy 162.250052 -38.371622) (xy 162.374422 -38.384968) (xy 162.493798 -38.422322) (xy 163.322253 -38.77398) + (xy 163.432049 -38.833904) (xy 163.528044 -38.914097) (xy 163.60655 -39.011477) (xy 163.664549 -39.122302) (xy 163.699813 -39.242312) + (xy 163.710987 -39.366896) (xy 163.697641 -39.491266) (xy 163.660287 -39.610642) (xy 163.19141 -40.715248) (xy 163.131486 -40.825044) + (xy 163.051293 -40.921039) (xy 162.953913 -40.999545) (xy 162.843088 -41.057544) (xy 162.723078 -41.092808) (xy 162.598494 -41.103982) + (xy 162.474124 -41.090636) (xy 162.354748 -41.053282) (xy 161.526293 -40.701624) (xy 161.416497 -40.6417) (xy 161.320502 -40.561507) + (xy 161.241996 -40.464127) (xy 161.183997 -40.353302) (xy 161.170632 -40.307818) (xy 160.89904 -40.420315) (xy 160.592338 -40.481322) + (xy 160.279628 -40.481322) (xy 159.972926 -40.420315) (xy 159.68402 -40.300646) (xy 159.424011 -40.126914) (xy 159.202891 -39.905794) + (xy 159.034529 -39.653822) (xy 158.950981 -39.653822) (xy 157.206683 -41.39812) (xy 164.175225 -41.39812) (xy 164.188571 -41.27375) + (xy 164.225925 -41.154374) (xy 164.694802 -40.049768) (xy 164.754726 -39.939972) (xy 164.834919 -39.843977) (xy 164.932299 -39.765471) + (xy 165.043124 -39.707472) (xy 165.163134 -39.672208) (xy 165.287718 -39.661034) (xy 165.412088 -39.67438) (xy 165.531464 -39.711734) + (xy 166.359919 -40.063392) (xy 166.469715 -40.123316) (xy 166.56571 -40.203509) (xy 166.575354 -40.215472) (xy 166.629409 -40.171894) + (xy 166.740234 -40.113895) (xy 166.860244 -40.078631) (xy 166.984828 -40.067457) (xy 167.109198 -40.080803) (xy 167.228575 -40.118157) + (xy 168.865233 -40.812877) (xy 168.975028 -40.872801) (xy 169.071023 -40.952994) (xy 169.149529 -41.050374) (xy 169.207528 -41.161199) + (xy 169.242792 -41.281209) (xy 169.253966 -41.405793) (xy 169.24062 -41.530163) (xy 169.203266 -41.64954) (xy 168.508546 -43.286198) + (xy 168.448622 -43.395993) (xy 168.368429 -43.491988) (xy 168.271049 -43.570494) (xy 168.160224 -43.628493) (xy 168.040214 -43.663757) + (xy 167.91563 -43.674931) (xy 167.79126 -43.661585) (xy 167.671883 -43.624231) (xy 166.035225 -42.929511) (xy 165.92543 -42.869587) + (xy 165.829435 -42.789394) (xy 165.750929 -42.692014) (xy 165.69293 -42.581189) (xy 165.657666 -42.461179) (xy 165.651463 -42.392021) + (xy 165.63616 -42.393394) (xy 165.51179 -42.380048) (xy 165.392414 -42.342694) (xy 164.563959 -41.991036) (xy 164.454163 -41.931112) + (xy 164.358168 -41.850919) (xy 164.279662 -41.753539) (xy 164.221663 -41.642714) (xy 164.186399 -41.522704) (xy 164.175225 -41.39812) + (xy 157.206683 -41.39812) (xy 157.071625 -41.533178) (xy 157.166937 -41.514219) (xy 157.459633 -41.514219) (xy 157.746706 -41.571321) + (xy 158.017123 -41.683331) (xy 158.260491 -41.845945) (xy 158.467459 -42.052913) (xy 158.630073 -42.296281) (xy 158.742083 -42.566698) + (xy 158.799185 -42.853771) (xy 158.799185 -43.146467) (xy 158.742083 -43.43354) (xy 158.630073 -43.703957) (xy 158.477335 -43.932545) + (xy 158.501171 -43.942418) (xy 158.850852 -44.176067) (xy 159.148232 -44.473447) (xy 159.36055 -44.791204) (xy 159.36055 -44.726109) + (xy 159.461577 -44.218211) (xy 159.659749 -43.739782) (xy 159.94745 -43.309207) (xy 160.313624 -42.943033) (xy 160.744199 -42.655332) + (xy 161.222628 -42.45716) (xy 161.730526 -42.356133) (xy 162.248374 -42.356133) (xy 162.756272 -42.45716) (xy 163.234701 -42.655332) + (xy 163.665276 -42.943033) (xy 164.03145 -43.309207) (xy 164.319151 -43.739782) (xy 164.517323 -44.218211) (xy 164.61835 -44.726109) + (xy 164.61835 -45.243957) (xy 164.517323 -45.751855) (xy 164.319151 -46.230284) (xy 164.03145 -46.660859) (xy 163.665276 -47.027033) + (xy 163.531686 -47.116295) (xy 165.179715 -47.116295) (xy 165.179715 -46.823599) (xy 165.236817 -46.536526) (xy 165.348827 -46.266109) + (xy 165.511441 -46.022741) (xy 165.718409 -45.815773) (xy 165.961777 -45.653159) (xy 166.232194 -45.541149) (xy 166.519267 -45.484047) + (xy 166.811963 -45.484047) (xy 167.099036 -45.541149) (xy 167.369453 -45.653159) (xy 167.612821 -45.815773) (xy 167.819789 -46.022741) + (xy 167.982403 -46.266109) (xy 168.094413 -46.536526) (xy 168.151515 -46.823599) (xy 168.151515 -47.116295) (xy 168.094413 -47.403368) + (xy 167.982403 -47.673785) (xy 167.819789 -47.917153) (xy 167.612821 -48.124121) (xy 167.369453 -48.286735) (xy 167.099036 -48.398745) + (xy 166.811963 -48.455847) (xy 166.519267 -48.455847) (xy 166.232194 -48.398745) (xy 165.961777 -48.286735) (xy 165.718409 -48.124121) + (xy 165.511441 -47.917153) (xy 165.348827 -47.673785) (xy 165.236817 -47.403368) (xy 165.179715 -47.116295) (xy 163.531686 -47.116295) + (xy 163.234701 -47.314734) (xy 162.756272 -47.512906) (xy 162.248374 -47.613933) (xy 161.730526 -47.613933) (xy 161.222628 -47.512906) + (xy 160.744199 -47.314734) (xy 160.313624 -47.027033) (xy 159.94745 -46.660859) (xy 159.659749 -46.230284) (xy 159.611247 -46.11319) + (xy 159.542822 -46.457186) (xy 159.381881 -46.845732) (xy 159.148232 -47.195413) (xy 158.850852 -47.492793) (xy 158.501171 -47.726442) + (xy 158.112625 -47.887383) (xy 157.700148 -47.96943) (xy 157.27959 -47.96943) (xy 156.867113 -47.887383) (xy 156.478567 -47.726442) + (xy 156.128886 -47.492793) (xy 155.831506 -47.195413) (xy 155.597857 -46.845732) (xy 155.436916 -46.457186) (xy 155.434066 -46.442857) + (xy 153.200216 -46.442857) (xy 153.075734 -46.430597) (xy 152.956036 -46.394287) (xy 152.845722 -46.335322) (xy 152.749031 -46.25597) + (xy 152.669679 -46.159279) (xy 152.610714 -46.048965) (xy 152.574404 -45.929267) (xy 152.562144 -45.804785) (xy 146.542985 -45.804785) + (xy 147.797974 -46.337496) (xy 147.831417 -46.34796) (xy 147.862176 -46.364748) (xy 147.862179 -46.364749) (xy 147.954181 -46.414961) + (xy 148.061514 -46.504627) (xy 148.149292 -46.613508) (xy 148.214142 -46.737422) (xy 148.253571 -46.871607) (xy 148.266064 -47.010905) + (xy 148.251142 -47.149965) (xy 148.209376 -47.283441) (xy 148.192584 -47.314207) (xy 146.685816 -50.863934) (xy 160.207618 -50.863934) + (xy 160.207618 -50.443376) (xy 160.289665 -50.030899) (xy 160.450606 -49.642353) (xy 160.684255 -49.292672) (xy 160.981635 -48.995292) + (xy 161.331316 -48.761643) (xy 161.719862 -48.600702) (xy 162.132339 -48.518655) (xy 162.552897 -48.518655) (xy 162.965374 -48.600702) + (xy 163.35392 -48.761643) (xy 163.703601 -48.995292) (xy 164.000981 -49.292672) (xy 164.23463 -49.642353) (xy 164.395571 -50.030899) + (xy 164.40052 -50.055777) (xy 166.195396 -50.055777) (xy 171.558464 -44.692708) (xy 171.558463 -36.342328) (xy 171.531017 -36.342328) + (xy 171.406535 -36.330068) (xy 171.286837 -36.293758) (xy 171.176523 -36.234793) (xy 171.079832 -36.155441) (xy 171.00048 -36.05875) + (xy 170.941515 -35.948436) (xy 170.905205 -35.828738) (xy 170.892945 -35.704256) (xy 170.892945 -34.979145) (xy 170.777812 -35.056074) + (xy 170.389266 -35.217015) (xy 169.976789 -35.299062) (xy 169.556231 -35.299062) (xy 169.143754 -35.217015) (xy 168.755208 -35.056074) + (xy 168.405527 -34.822425) (xy 168.108147 -34.525045) (xy 167.874498 -34.175364) (xy 167.713557 -33.786818) (xy 167.63151 -33.374341) + (xy 167.63151 -32.953783) (xy 167.713557 -32.541306) (xy 167.874498 -32.15276) (xy 168.108147 -31.803079) (xy 168.405527 -31.505699) + (xy 168.755208 -31.27205) (xy 169.143754 -31.111109) (xy 169.556231 -31.029062) (xy 169.976789 -31.029062) (xy 170.389266 -31.111109) + (xy 170.777812 -31.27205) (xy 171.127493 -31.505699) (xy 171.424873 -31.803079) (xy 171.658522 -32.15276) (xy 171.819463 -32.541306) + (xy 171.824412 -32.566184) (xy 173.619288 -32.566184) (xy 178.982356 -27.203115) (xy 178.982355 -18.852736) (xy 178.954908 -18.852736) + (xy 178.830426 -18.840476) (xy 178.710728 -18.804166) (xy 178.600414 -18.745201) (xy 178.503723 -18.665849) (xy 178.424371 -18.569158) + (xy 178.365406 -18.458844) (xy 178.329096 -18.339146) (xy 178.316836 -18.214664) (xy 178.316836 -17.489553) (xy 178.201703 -17.566482) + (xy 177.813157 -17.727423) (xy 177.40068 -17.80947) (xy 176.980122 -17.80947) (xy 176.567645 -17.727423) (xy 176.179099 -17.566482) + (xy 175.829418 -17.332833) (xy 175.532038 -17.035453) (xy 175.298389 -16.685772) (xy 175.137448 -16.297226) (xy 175.055401 -15.884749) + (xy 175.055401 -15.464191) (xy 175.137448 -15.051714) (xy 175.298389 -14.663168) (xy 175.532038 -14.313487) (xy 175.829418 -14.016107) + (xy 176.179099 -13.782458) (xy 176.567645 -13.621517) (xy 176.980122 -13.53947) (xy 177.40068 -13.53947) (xy 177.813157 -13.621517) + (xy 178.201703 -13.782458) (xy 178.551384 -14.016107) (xy 178.848764 -14.313487) (xy 179.082413 -14.663168) (xy 179.243354 -15.051714) + (xy 179.248303 -15.076592) (xy 181.043179 -15.076592) (xy 186.893801 -9.225969) (xy 186.8938 -1.363144) (xy 186.3788 -1.363144) + (xy 186.254318 -1.350884) (xy 186.13462 -1.314574) (xy 186.024306 -1.255609) (xy 185.927615 -1.176257) (xy 185.848263 -1.079566) + (xy 185.789298 -0.969252) (xy 185.752988 -0.849554) (xy 185.740728 -0.725072) (xy 185.740728 0.000039) (xy 185.625595 -0.07689) + (xy 185.237049 -0.237831) (xy 184.824572 -0.319878) (xy 184.404014 -0.319878) (xy 183.991537 -0.237831) (xy 183.602991 -0.07689) + (xy 183.25331 0.156759) (xy 182.95593 0.454139) (xy 182.722281 0.80382) (xy 182.56134 1.192366) (xy 182.479293 1.604843) + (xy 182.479293 2.025401) (xy 182.56134 2.437878) (xy 182.722281 2.826424) (xy 182.95593 3.176105) (xy 183.25331 3.473485) + (xy 183.602991 3.707134) (xy 183.991537 3.868075) (xy 184.404014 3.950122) (xy 184.824572 3.950122) (xy 185.237049 3.868075) + (xy 185.29849 3.842625) (xy 194.277066 3.842625) (xy 194.277066 6.342625) (xy 194.289326 6.467107) (xy 194.325636 6.586805) + (xy 194.384601 6.697119) (xy 194.463953 6.79381) (xy 194.560644 6.873162) (xy 194.670958 6.932127) (xy 194.790656 6.968437) + (xy 194.915138 6.980697) (xy 195.535812 6.980697) (xy 195.555164 7.016901) (xy 195.625974 7.103182) (xy 195.650138 7.132626) + (xy 195.679136 7.156424) (xy 199.787301 11.26459) (xy 199.811099 11.293588) (xy 199.840097 11.317386) (xy 199.926823 11.388561) + (xy 200.011582 11.433866) (xy 200.058853 11.459133) (xy 200.202114 11.50259) (xy 200.313767 11.513587) (xy 200.313777 11.513587) + (xy 200.3511 11.517263) (xy 200.388423 11.513587) (xy 200.749451 11.513587) (xy 200.917813 11.765559) (xy 201.138933 11.986679) + (xy 201.398942 12.160411) (xy 201.687848 12.28008) (xy 201.99455 12.341087) (xy 202.30726 12.341087) (xy 202.613962 12.28008) + (xy 202.902868 12.160411) (xy 203.162877 11.986679) (xy 203.383997 11.765559) (xy 203.557729 11.50555) (xy 203.575446 11.462778) + (xy 203.587462 11.459133) (xy 203.719491 11.388561) (xy 203.835216 11.293588) (xy 203.85772 11.266167) (xy 203.964974 11.275787) + (xy 204.089344 11.262441) (xy 204.20872 11.225087) (xy 205.037175 10.873429) (xy 205.146971 10.813505) (xy 205.242966 10.733312) + (xy 205.321472 10.635932) (xy 205.379471 10.525107) (xy 205.414735 10.405097) (xy 205.425909 10.280513) (xy 205.412563 10.156143) + (xy 205.375209 10.036767) (xy 204.906332 8.932161) (xy 204.846408 8.822365) (xy 204.766215 8.72637) (xy 204.668835 8.647864) + (xy 204.55801 8.589865) (xy 204.438 8.554601) (xy 204.313416 8.543427) (xy 204.189046 8.556773) (xy 204.06967 8.594127) + (xy 203.241215 8.945785) (xy 203.131419 9.005709) (xy 203.035424 9.085902) (xy 202.956918 9.183282) (xy 202.898919 9.294107) + (xy 202.885554 9.339591) (xy 202.613962 9.227094) (xy 202.30726 9.166087) (xy 201.99455 9.166087) (xy 201.687848 9.227094) + (xy 201.398942 9.346763) (xy 201.138933 9.520495) (xy 200.917813 9.741615) (xy 200.749451 9.993587) (xy 200.665902 9.993587) + (xy 198.921604 8.249289) (xy 205.890147 8.249289) (xy 205.903493 8.373659) (xy 205.940847 8.493035) (xy 206.409724 9.597641) + (xy 206.469648 9.707437) (xy 206.549841 9.803432) (xy 206.647221 9.881938) (xy 206.758046 9.939937) (xy 206.878056 9.975201) + (xy 207.00264 9.986375) (xy 207.12701 9.973029) (xy 207.246386 9.935675) (xy 208.074841 9.584017) (xy 208.184637 9.524093) + (xy 208.280632 9.4439) (xy 208.290276 9.431937) (xy 208.344331 9.475515) (xy 208.455156 9.533514) (xy 208.575166 9.568778) + (xy 208.69975 9.579952) (xy 208.82412 9.566606) (xy 208.943497 9.529252) (xy 210.580155 8.834532) (xy 210.68995 8.774608) + (xy 210.785945 8.694415) (xy 210.864451 8.597035) (xy 210.92245 8.48621) (xy 210.957714 8.3662) (xy 210.968888 8.241616) + (xy 210.955542 8.117246) (xy 210.918188 7.997869) (xy 210.223468 6.361211) (xy 210.163544 6.251416) (xy 210.083351 6.155421) + (xy 209.985971 6.076915) (xy 209.875146 6.018916) (xy 209.755136 5.983652) (xy 209.630552 5.972478) (xy 209.506182 5.985824) + (xy 209.386805 6.023178) (xy 207.750147 6.717898) (xy 207.640352 6.777822) (xy 207.544357 6.858015) (xy 207.465851 6.955395) + (xy 207.407852 7.06622) (xy 207.372588 7.18623) (xy 207.366385 7.255388) (xy 207.351082 7.254015) (xy 207.226712 7.267361) + (xy 207.107336 7.304715) (xy 206.278881 7.656373) (xy 206.169085 7.716297) (xy 206.07309 7.79649) (xy 205.994584 7.89387) + (xy 205.936585 8.004695) (xy 205.901321 8.124705) (xy 205.890147 8.249289) (xy 198.921604 8.249289) (xy 198.786547 8.114232) + (xy 198.881859 8.133191) (xy 199.174555 8.133191) (xy 199.461628 8.076089) (xy 199.732045 7.964079) (xy 199.975413 7.801465) + (xy 200.182381 7.594497) (xy 200.344995 7.351129) (xy 200.457005 7.080712) (xy 200.514107 6.793639) (xy 200.514107 6.500943) + (xy 200.457005 6.21387) (xy 200.344995 5.943453) (xy 200.192257 5.714865) (xy 200.216093 5.704992) (xy 200.565774 5.471343) + (xy 200.863154 5.173963) (xy 201.075472 4.856206) (xy 201.075472 4.921301) (xy 201.176499 5.429199) (xy 201.374671 5.907628) + (xy 201.662372 6.338203) (xy 202.028546 6.704377) (xy 202.459121 6.992078) (xy 202.93755 7.19025) (xy 203.445448 7.291277) + (xy 203.963296 7.291277) (xy 204.471194 7.19025) (xy 204.949623 6.992078) (xy 205.380198 6.704377) (xy 205.746372 6.338203) + (xy 206.034073 5.907628) (xy 206.232245 5.429199) (xy 206.333272 4.921301) (xy 206.333272 4.403453) (xy 206.232245 3.895555) + (xy 206.034073 3.417126) (xy 205.746372 2.986551) (xy 205.380198 2.620377) (xy 205.246608 2.531115) (xy 206.894637 2.531115) + (xy 206.894637 2.823811) (xy 206.951739 3.110884) (xy 207.063749 3.381301) (xy 207.226363 3.624669) (xy 207.433331 3.831637) + (xy 207.676699 3.994251) (xy 207.947116 4.106261) (xy 208.234189 4.163363) (xy 208.526885 4.163363) (xy 208.813958 4.106261) + (xy 209.084375 3.994251) (xy 209.327743 3.831637) (xy 209.534711 3.624669) (xy 209.697325 3.381301) (xy 209.809335 3.110884) + (xy 209.866437 2.823811) (xy 209.866437 2.531115) (xy 209.809335 2.244042) (xy 209.697325 1.973625) (xy 209.534711 1.730257) + (xy 209.327743 1.523289) (xy 209.084375 1.360675) (xy 208.813958 1.248665) (xy 208.526885 1.191563) (xy 208.234189 1.191563) + (xy 207.947116 1.248665) (xy 207.676699 1.360675) (xy 207.433331 1.523289) (xy 207.226363 1.730257) (xy 207.063749 1.973625) + (xy 206.951739 2.244042) (xy 206.894637 2.531115) (xy 205.246608 2.531115) (xy 204.949623 2.332676) (xy 204.471194 2.134504) + (xy 203.963296 2.033477) (xy 203.445448 2.033477) (xy 202.93755 2.134504) (xy 202.459121 2.332676) (xy 202.028546 2.620377) + (xy 201.662372 2.986551) (xy 201.374671 3.417126) (xy 201.326169 3.53422) (xy 201.257744 3.190224) (xy 201.096803 2.801678) + (xy 200.863154 2.451997) (xy 200.565774 2.154617) (xy 200.216093 1.920968) (xy 199.827547 1.760027) (xy 199.41507 1.67798) + (xy 198.994512 1.67798) (xy 198.582035 1.760027) (xy 198.193489 1.920968) (xy 197.843808 2.154617) (xy 197.546428 2.451997) + (xy 197.312779 2.801678) (xy 197.151838 3.190224) (xy 197.148988 3.204553) (xy 194.915138 3.204553) (xy 194.790656 3.216813) + (xy 194.670958 3.253123) (xy 194.560644 3.312088) (xy 194.463953 3.39144) (xy 194.384601 3.488131) (xy 194.325636 3.598445) + (xy 194.289326 3.718143) (xy 194.277066 3.842625) (xy 185.29849 3.842625) (xy 185.625595 3.707134) (xy 185.975276 3.473485) + (xy 186.272656 3.176105) (xy 186.506305 2.826424) (xy 186.667246 2.437878) (xy 186.672195 2.413) (xy 188.9288 2.413) + (xy 189.053282 2.40074) (xy 189.17298 2.36443) (xy 189.283294 2.305465) (xy 189.379985 2.226113) (xy 189.459337 2.129422) + (xy 189.518302 2.019108) (xy 189.554612 1.89941) (xy 189.566872 1.774928) (xy 189.566872 -0.725072) (xy 189.554612 -0.849554) + (xy 189.518302 -0.969252) (xy 189.459337 -1.079566) (xy 189.379985 -1.176257) (xy 189.283294 -1.255609) (xy 189.17298 -1.314574) + (xy 189.053282 -1.350884) (xy 188.9288 -1.363144) (xy 188.4138 -1.363144) (xy 188.4138 -9.503447) (xy 188.417476 -9.540772) + (xy 188.4138 -9.578097) (xy 188.4138 -9.578105) (xy 188.402803 -9.689758) (xy 188.359346 -9.833019) (xy 188.288774 -9.965048) + (xy 188.193801 -10.080773) (xy 188.164803 -10.104571) (xy 187.760479 -10.508895) (xy 188.111921 -10.508895) (xy 188.131273 -10.472691) + (xy 188.199312 -10.389786) (xy 188.226247 -10.356966) (xy 188.255245 -10.333168) (xy 192.36341 -6.225002) (xy 192.387208 -6.196004) + (xy 192.416206 -6.172206) (xy 192.502932 -6.101031) (xy 192.587691 -6.055726) (xy 192.634962 -6.030459) (xy 192.778223 -5.987002) + (xy 192.889876 -5.976005) (xy 192.889886 -5.976005) (xy 192.927209 -5.972329) (xy 192.964532 -5.976005) (xy 193.32556 -5.976005) + (xy 193.493922 -5.724033) (xy 193.715042 -5.502913) (xy 193.975051 -5.329181) (xy 194.263957 -5.209512) (xy 194.570659 -5.148505) + (xy 194.883369 -5.148505) (xy 195.190071 -5.209512) (xy 195.478977 -5.329181) (xy 195.738986 -5.502913) (xy 195.960106 -5.724033) + (xy 196.133838 -5.984042) (xy 196.151555 -6.026814) (xy 196.163571 -6.030459) (xy 196.2956 -6.101031) (xy 196.411325 -6.196004) + (xy 196.433829 -6.223425) (xy 196.541083 -6.213805) (xy 196.665453 -6.227151) (xy 196.784829 -6.264505) (xy 197.613284 -6.616163) + (xy 197.72308 -6.676087) (xy 197.819075 -6.75628) (xy 197.897581 -6.85366) (xy 197.95558 -6.964485) (xy 197.990844 -7.084495) + (xy 198.002018 -7.209079) (xy 197.988672 -7.333449) (xy 197.951318 -7.452825) (xy 197.482441 -8.557431) (xy 197.422517 -8.667227) + (xy 197.342324 -8.763222) (xy 197.244944 -8.841728) (xy 197.134119 -8.899727) (xy 197.014109 -8.934991) (xy 196.889525 -8.946165) + (xy 196.765155 -8.932819) (xy 196.645779 -8.895465) (xy 195.817324 -8.543807) (xy 195.707528 -8.483883) (xy 195.611533 -8.40369) + (xy 195.533027 -8.30631) (xy 195.475028 -8.195485) (xy 195.461663 -8.150001) (xy 195.190071 -8.262498) (xy 194.883369 -8.323505) + (xy 194.570659 -8.323505) (xy 194.263957 -8.262498) (xy 193.975051 -8.142829) (xy 193.715042 -7.969097) (xy 193.493922 -7.747977) + (xy 193.32556 -7.496005) (xy 193.242011 -7.496005) (xy 191.497713 -9.240303) (xy 198.466256 -9.240303) (xy 198.479602 -9.115933) + (xy 198.516956 -8.996557) (xy 198.985833 -7.891951) (xy 199.045757 -7.782155) (xy 199.12595 -7.68616) (xy 199.22333 -7.607654) + (xy 199.334155 -7.549655) (xy 199.454165 -7.514391) (xy 199.578749 -7.503217) (xy 199.703119 -7.516563) (xy 199.822495 -7.553917) + (xy 200.65095 -7.905575) (xy 200.760746 -7.965499) (xy 200.856741 -8.045692) (xy 200.866385 -8.057655) (xy 200.92044 -8.014077) + (xy 201.031265 -7.956078) (xy 201.151275 -7.920814) (xy 201.275859 -7.90964) (xy 201.400229 -7.922986) (xy 201.519606 -7.96034) + (xy 203.156264 -8.65506) (xy 203.266059 -8.714984) (xy 203.362054 -8.795177) (xy 203.44056 -8.892557) (xy 203.498559 -9.003382) + (xy 203.533823 -9.123392) (xy 203.544997 -9.247976) (xy 203.531651 -9.372346) (xy 203.494297 -9.491723) (xy 202.799577 -11.128381) + (xy 202.739653 -11.238176) (xy 202.65946 -11.334171) (xy 202.56208 -11.412677) (xy 202.451255 -11.470676) (xy 202.331245 -11.50594) + (xy 202.206661 -11.517114) (xy 202.082291 -11.503768) (xy 201.962914 -11.466414) (xy 200.326256 -10.771694) (xy 200.216461 -10.71177) + (xy 200.120466 -10.631577) (xy 200.04196 -10.534197) (xy 199.983961 -10.423372) (xy 199.948697 -10.303362) (xy 199.942494 -10.234204) + (xy 199.927191 -10.235577) (xy 199.802821 -10.222231) (xy 199.683445 -10.184877) (xy 198.85499 -9.833219) (xy 198.745194 -9.773295) + (xy 198.649199 -9.693102) (xy 198.570693 -9.595722) (xy 198.512694 -9.484897) (xy 198.47743 -9.364887) (xy 198.466256 -9.240303) + (xy 191.497713 -9.240303) (xy 191.362656 -9.37536) (xy 191.457968 -9.356401) (xy 191.750664 -9.356401) (xy 192.037737 -9.413503) + (xy 192.308154 -9.525513) (xy 192.551522 -9.688127) (xy 192.75849 -9.895095) (xy 192.921104 -10.138463) (xy 193.033114 -10.40888) + (xy 193.090216 -10.695953) (xy 193.090216 -10.988649) (xy 193.033114 -11.275722) (xy 192.921104 -11.546139) (xy 192.768366 -11.774727) + (xy 192.792202 -11.7846) (xy 193.141883 -12.018249) (xy 193.439263 -12.315629) (xy 193.651581 -12.633386) (xy 193.651581 -12.568291) + (xy 193.752608 -12.060393) (xy 193.95078 -11.581964) (xy 194.238481 -11.151389) (xy 194.604655 -10.785215) (xy 195.03523 -10.497514) + (xy 195.513659 -10.299342) (xy 196.021557 -10.198315) (xy 196.539405 -10.198315) (xy 197.047303 -10.299342) (xy 197.525732 -10.497514) + (xy 197.956307 -10.785215) (xy 198.322481 -11.151389) (xy 198.610182 -11.581964) (xy 198.808354 -12.060393) (xy 198.909381 -12.568291) + (xy 198.909381 -13.086139) (xy 198.808354 -13.594037) (xy 198.610182 -14.072466) (xy 198.322481 -14.503041) (xy 197.956307 -14.869215) + (xy 197.822717 -14.958477) (xy 199.470746 -14.958477) (xy 199.470746 -14.665781) (xy 199.527848 -14.378708) (xy 199.639858 -14.108291) + (xy 199.802472 -13.864923) (xy 200.00944 -13.657955) (xy 200.252808 -13.495341) (xy 200.523225 -13.383331) (xy 200.810298 -13.326229) + (xy 201.102994 -13.326229) (xy 201.390067 -13.383331) (xy 201.660484 -13.495341) (xy 201.903852 -13.657955) (xy 202.11082 -13.864923) + (xy 202.273434 -14.108291) (xy 202.385444 -14.378708) (xy 202.442546 -14.665781) (xy 202.442546 -14.958477) (xy 202.385444 -15.24555) + (xy 202.273434 -15.515967) (xy 202.11082 -15.759335) (xy 201.903852 -15.966303) (xy 201.660484 -16.128917) (xy 201.390067 -16.240927) + (xy 201.102994 -16.298029) (xy 200.810298 -16.298029) (xy 200.523225 -16.240927) (xy 200.252808 -16.128917) (xy 200.00944 -15.966303) + (xy 199.802472 -15.759335) (xy 199.639858 -15.515967) (xy 199.527848 -15.24555) (xy 199.470746 -14.958477) (xy 197.822717 -14.958477) + (xy 197.525732 -15.156916) (xy 197.047303 -15.355088) (xy 196.539405 -15.456115) (xy 196.021557 -15.456115) (xy 195.513659 -15.355088) + (xy 195.03523 -15.156916) (xy 194.604655 -14.869215) (xy 194.238481 -14.503041) (xy 193.95078 -14.072466) (xy 193.902278 -13.955372) + (xy 193.833853 -14.299368) (xy 193.672912 -14.687914) (xy 193.439263 -15.037595) (xy 193.141883 -15.334975) (xy 192.792202 -15.568624) + (xy 192.403656 -15.729565) (xy 191.991179 -15.811612) (xy 191.570621 -15.811612) (xy 191.158144 -15.729565) (xy 190.769598 -15.568624) + (xy 190.419917 -15.334975) (xy 190.122537 -15.037595) (xy 189.888888 -14.687914) (xy 189.727947 -14.299368) (xy 189.725097 -14.285039) + (xy 187.491247 -14.285039) (xy 187.366765 -14.272779) (xy 187.247067 -14.236469) (xy 187.136753 -14.177504) (xy 187.040062 -14.098152) + (xy 186.96071 -14.001461) (xy 186.901745 -13.891147) (xy 186.865435 -13.771449) (xy 186.853175 -13.646967) (xy 186.853175 -11.416199) + (xy 182.14298 -16.126393) (xy 182.14298 -18.214664) (xy 182.13072 -18.339146) (xy 182.09441 -18.458844) (xy 182.035445 -18.569158) + (xy 181.956093 -18.665849) (xy 181.859402 -18.745201) (xy 181.749088 -18.804166) (xy 181.62939 -18.840476) (xy 181.504908 -18.852736) + (xy 180.502355 -18.852736) (xy 180.502355 -27.480596) (xy 180.506031 -27.517919) (xy 180.502355 -27.555242) (xy 180.502355 -27.555251) + (xy 180.491358 -27.666904) (xy 180.447901 -27.810165) (xy 180.377329 -27.942194) (xy 180.33113 -27.998488) (xy 180.68803 -27.998488) + (xy 180.707382 -27.962284) (xy 180.775421 -27.879379) (xy 180.802356 -27.846559) (xy 180.831354 -27.822761) (xy 184.93952 -23.714594) + (xy 184.963318 -23.685596) (xy 185.079043 -23.590623) (xy 185.211072 -23.520051) (xy 185.354333 -23.476594) (xy 185.465986 -23.465597) + (xy 185.465995 -23.465597) (xy 185.503318 -23.461921) (xy 185.540641 -23.465597) (xy 185.901668 -23.465597) (xy 186.07003 -23.213625) + (xy 186.29115 -22.992505) (xy 186.551159 -22.818773) (xy 186.840065 -22.699104) (xy 187.146767 -22.638097) (xy 187.459477 -22.638097) + (xy 187.766179 -22.699104) (xy 188.055085 -22.818773) (xy 188.315094 -22.992505) (xy 188.536214 -23.213625) (xy 188.709946 -23.473634) + (xy 188.727663 -23.516406) (xy 188.739679 -23.520051) (xy 188.871708 -23.590623) (xy 188.987433 -23.685596) (xy 189.009937 -23.713017) + (xy 189.117191 -23.703397) (xy 189.241561 -23.716743) (xy 189.360937 -23.754097) (xy 190.189392 -24.105755) (xy 190.299188 -24.165679) + (xy 190.395183 -24.245872) (xy 190.473689 -24.343252) (xy 190.531688 -24.454077) (xy 190.566952 -24.574087) (xy 190.578126 -24.698671) + (xy 190.56478 -24.823041) (xy 190.527426 -24.942417) (xy 190.058549 -26.047023) (xy 189.998625 -26.156819) (xy 189.918432 -26.252814) + (xy 189.821052 -26.33132) (xy 189.710227 -26.389319) (xy 189.590217 -26.424583) (xy 189.465633 -26.435757) (xy 189.341263 -26.422411) + (xy 189.221887 -26.385057) (xy 188.393432 -26.033399) (xy 188.283636 -25.973475) (xy 188.187641 -25.893282) (xy 188.109135 -25.795902) + (xy 188.051136 -25.685077) (xy 188.037771 -25.639593) (xy 187.766179 -25.75209) (xy 187.459477 -25.813097) (xy 187.146767 -25.813097) + (xy 186.840065 -25.75209) (xy 186.551159 -25.632421) (xy 186.29115 -25.458689) (xy 186.07003 -25.237569) (xy 185.901668 -24.985597) + (xy 185.818121 -24.985597) (xy 184.073823 -26.729895) (xy 191.042364 -26.729895) (xy 191.05571 -26.605525) (xy 191.093064 -26.486149) + (xy 191.561941 -25.381543) (xy 191.621865 -25.271747) (xy 191.702058 -25.175752) (xy 191.799438 -25.097246) (xy 191.910263 -25.039247) + (xy 192.030273 -25.003983) (xy 192.154857 -24.992809) (xy 192.279227 -25.006155) (xy 192.398603 -25.043509) (xy 193.227058 -25.395167) + (xy 193.336854 -25.455091) (xy 193.432849 -25.535284) (xy 193.442493 -25.547247) (xy 193.496548 -25.503669) (xy 193.607373 -25.44567) + (xy 193.727383 -25.410406) (xy 193.851967 -25.399232) (xy 193.976337 -25.412578) (xy 194.095714 -25.449932) (xy 195.732372 -26.144652) + (xy 195.842167 -26.204576) (xy 195.938162 -26.284769) (xy 196.016668 -26.382149) (xy 196.074667 -26.492974) (xy 196.109931 -26.612984) + (xy 196.121105 -26.737568) (xy 196.107759 -26.861938) (xy 196.070405 -26.981315) (xy 195.375685 -28.617973) (xy 195.315761 -28.727768) + (xy 195.235568 -28.823763) (xy 195.138188 -28.902269) (xy 195.027363 -28.960268) (xy 194.907353 -28.995532) (xy 194.782769 -29.006706) + (xy 194.658399 -28.99336) (xy 194.539022 -28.956006) (xy 192.902364 -28.261286) (xy 192.792569 -28.201362) (xy 192.696574 -28.121169) + (xy 192.618068 -28.023789) (xy 192.560069 -27.912964) (xy 192.524805 -27.792954) (xy 192.518602 -27.723796) (xy 192.503299 -27.725169) + (xy 192.378929 -27.711823) (xy 192.259553 -27.674469) (xy 191.431098 -27.322811) (xy 191.321302 -27.262887) (xy 191.225307 -27.182694) + (xy 191.146801 -27.085314) (xy 191.088802 -26.974489) (xy 191.053538 -26.854479) (xy 191.042364 -26.729895) (xy 184.073823 -26.729895) + (xy 183.938765 -26.864953) (xy 184.034077 -26.845994) (xy 184.326773 -26.845994) (xy 184.613846 -26.903096) (xy 184.884263 -27.015106) + (xy 185.127631 -27.17772) (xy 185.334599 -27.384688) (xy 185.497213 -27.628056) (xy 185.609223 -27.898473) (xy 185.666325 -28.185546) + (xy 185.666325 -28.478242) (xy 185.609223 -28.765315) (xy 185.497213 -29.035732) (xy 185.344475 -29.26432) (xy 185.368311 -29.274193) + (xy 185.717992 -29.507842) (xy 186.015372 -29.805222) (xy 186.22769 -30.122979) (xy 186.22769 -30.057884) (xy 186.328717 -29.549986) + (xy 186.526889 -29.071557) (xy 186.81459 -28.640982) (xy 187.180764 -28.274808) (xy 187.611339 -27.987107) (xy 188.089768 -27.788935) + (xy 188.597666 -27.687908) (xy 189.115514 -27.687908) (xy 189.623412 -27.788935) (xy 190.101841 -27.987107) (xy 190.532416 -28.274808) + (xy 190.89859 -28.640982) (xy 191.186291 -29.071557) (xy 191.384463 -29.549986) (xy 191.48549 -30.057884) (xy 191.48549 -30.575732) + (xy 191.384463 -31.08363) (xy 191.186291 -31.562059) (xy 190.89859 -31.992634) (xy 190.532416 -32.358808) (xy 190.101841 -32.646509) + (xy 189.623412 -32.844681) (xy 189.115514 -32.945708) (xy 188.597666 -32.945708) (xy 188.089768 -32.844681) (xy 187.611339 -32.646509) + (xy 187.180764 -32.358808) (xy 186.81459 -31.992634) (xy 186.526889 -31.562059) (xy 186.478387 -31.444965) (xy 186.409962 -31.788961) + (xy 186.249021 -32.177507) (xy 186.015372 -32.527188) (xy 185.717992 -32.824568) (xy 185.368311 -33.058217) (xy 184.979765 -33.219158) + (xy 184.567288 -33.301205) (xy 184.14673 -33.301205) (xy 183.734253 -33.219158) (xy 183.345707 -33.058217) (xy 182.996026 -32.824568) + (xy 182.698646 -32.527188) (xy 182.464997 -32.177507) (xy 182.304056 -31.788961) (xy 182.301206 -31.774632) (xy 180.067356 -31.774632) + (xy 179.942874 -31.762372) (xy 179.823176 -31.726062) (xy 179.712862 -31.667097) (xy 179.616171 -31.587745) (xy 179.536819 -31.491054) + (xy 179.477854 -31.38074) (xy 179.441544 -31.261042) (xy 179.429284 -31.13656) (xy 179.429284 -28.905791) (xy 174.719089 -33.615985) + (xy 174.719089 -35.704256) (xy 174.706829 -35.828738) (xy 174.670519 -35.948436) (xy 174.611554 -36.05875) (xy 174.532202 -36.155441) + (xy 174.435511 -36.234793) (xy 174.325197 -36.293758) (xy 174.205499 -36.330068) (xy 174.081017 -36.342328) (xy 173.078463 -36.342328) + (xy 173.078463 -44.970189) (xy 173.082139 -45.007512) (xy 173.078463 -45.044835) (xy 173.078463 -45.044844) (xy 173.067466 -45.156497) + (xy 173.024009 -45.299758) (xy 172.953437 -45.431787) (xy 172.907239 -45.48808) (xy 173.264138 -45.48808) (xy 173.28349 -45.451876) + (xy 173.354301 -45.365594) (xy 173.378464 -45.336151) (xy 173.407462 -45.312353) (xy 177.515627 -41.204187) (xy 177.539425 -41.175189) + (xy 177.568423 -41.151391) (xy 177.655149 -41.080216) (xy 177.754308 -41.027214) (xy 177.787179 -41.009644) (xy 177.93044 -40.966187) + (xy 178.042093 -40.95519) (xy 178.042103 -40.95519) (xy 178.079426 -40.951514) (xy 178.116749 -40.95519) (xy 178.477777 -40.95519) + (xy 178.646139 -40.703218) (xy 178.867259 -40.482098) (xy 179.127268 -40.308366) (xy 179.416174 -40.188697) (xy 179.722876 -40.12769) + (xy 180.035586 -40.12769) (xy 180.342288 -40.188697) (xy 180.631194 -40.308366) (xy 180.891203 -40.482098) (xy 181.112323 -40.703218) + (xy 181.286055 -40.963227) (xy 181.303772 -41.005999) (xy 181.315788 -41.009644) (xy 181.447817 -41.080216) (xy 181.563542 -41.175189) + (xy 181.586046 -41.20261) (xy 181.6933 -41.19299) (xy 181.81767 -41.206336) (xy 181.937046 -41.24369) (xy 182.765501 -41.595348) + (xy 182.875297 -41.655272) (xy 182.971292 -41.735465) (xy 183.049798 -41.832845) (xy 183.107797 -41.94367) (xy 183.143061 -42.06368) + (xy 183.154235 -42.188264) (xy 183.140889 -42.312634) (xy 183.103535 -42.43201) (xy 182.634658 -43.536616) (xy 182.574734 -43.646412) + (xy 182.494541 -43.742407) (xy 182.397161 -43.820913) (xy 182.286336 -43.878912) (xy 182.166326 -43.914176) (xy 182.041742 -43.92535) + (xy 181.917372 -43.912004) (xy 181.797996 -43.87465) (xy 180.969541 -43.522992) (xy 180.859745 -43.463068) (xy 180.76375 -43.382875) + (xy 180.685244 -43.285495) (xy 180.627245 -43.17467) (xy 180.61388 -43.129186) (xy 180.342288 -43.241683) (xy 180.035586 -43.30269) + (xy 179.722876 -43.30269) (xy 179.416174 -43.241683) (xy 179.127268 -43.122014) (xy 178.867259 -42.948282) (xy 178.646139 -42.727162) + (xy 178.477777 -42.47519) (xy 178.394228 -42.47519) (xy 176.64993 -44.219488) (xy 183.618473 -44.219488) (xy 183.631819 -44.095118) + (xy 183.669173 -43.975742) (xy 184.13805 -42.871136) (xy 184.197974 -42.76134) (xy 184.278167 -42.665345) (xy 184.375547 -42.586839) + (xy 184.486372 -42.52884) (xy 184.606382 -42.493576) (xy 184.730966 -42.482402) (xy 184.855336 -42.495748) (xy 184.974712 -42.533102) + (xy 185.803167 -42.88476) (xy 185.912963 -42.944684) (xy 186.008958 -43.024877) (xy 186.018602 -43.03684) (xy 186.072657 -42.993262) + (xy 186.183482 -42.935263) (xy 186.303492 -42.899999) (xy 186.428076 -42.888825) (xy 186.552446 -42.902171) (xy 186.671823 -42.939525) + (xy 188.308481 -43.634245) (xy 188.418276 -43.694169) (xy 188.514271 -43.774362) (xy 188.592777 -43.871742) (xy 188.650776 -43.982567) + (xy 188.68604 -44.102577) (xy 188.697214 -44.227161) (xy 188.683868 -44.351531) (xy 188.646514 -44.470908) (xy 187.951794 -46.107566) + (xy 187.89187 -46.217361) (xy 187.811677 -46.313356) (xy 187.714297 -46.391862) (xy 187.603472 -46.449861) (xy 187.483462 -46.485125) + (xy 187.358878 -46.496299) (xy 187.234508 -46.482953) (xy 187.115131 -46.445599) (xy 185.478473 -45.750879) (xy 185.368678 -45.690955) + (xy 185.272683 -45.610762) (xy 185.194177 -45.513382) (xy 185.136178 -45.402557) (xy 185.100914 -45.282547) (xy 185.094711 -45.213389) + (xy 185.079408 -45.214762) (xy 184.955038 -45.201416) (xy 184.835662 -45.164062) (xy 184.007207 -44.812404) (xy 183.897411 -44.75248) + (xy 183.801416 -44.672287) (xy 183.72291 -44.574907) (xy 183.664911 -44.464082) (xy 183.629647 -44.344072) (xy 183.618473 -44.219488) + (xy 176.64993 -44.219488) (xy 176.514873 -44.354545) (xy 176.610185 -44.335586) (xy 176.902881 -44.335586) (xy 177.189954 -44.392688) + (xy 177.460371 -44.504698) (xy 177.703739 -44.667312) (xy 177.910707 -44.87428) (xy 178.073321 -45.117648) (xy 178.185331 -45.388065) + (xy 178.242433 -45.675138) (xy 178.242433 -45.967834) (xy 178.185331 -46.254907) (xy 178.073321 -46.525324) (xy 177.920583 -46.753912) + (xy 177.944419 -46.763785) (xy 178.2941 -46.997434) (xy 178.59148 -47.294814) (xy 178.803798 -47.612571) (xy 178.803798 -47.547476) + (xy 178.904825 -47.039578) (xy 179.102997 -46.561149) (xy 179.390698 -46.130574) (xy 179.756872 -45.7644) (xy 180.187447 -45.476699) + (xy 180.665876 -45.278527) (xy 181.173774 -45.1775) (xy 181.691622 -45.1775) (xy 182.19952 -45.278527) (xy 182.677949 -45.476699) + (xy 183.108524 -45.7644) (xy 183.474698 -46.130574) (xy 183.762399 -46.561149) (xy 183.960571 -47.039578) (xy 184.061598 -47.547476) + (xy 184.061598 -48.065324) (xy 183.960571 -48.573222) (xy 183.762399 -49.051651) (xy 183.474698 -49.482226) (xy 183.108524 -49.8484) + (xy 182.974934 -49.937662) (xy 184.622963 -49.937662) (xy 184.622963 -49.644966) (xy 184.680065 -49.357893) (xy 184.792075 -49.087476) + (xy 184.954689 -48.844108) (xy 185.161657 -48.63714) (xy 185.405025 -48.474526) (xy 185.675442 -48.362516) (xy 185.962515 -48.305414) + (xy 186.255211 -48.305414) (xy 186.542284 -48.362516) (xy 186.812701 -48.474526) (xy 187.056069 -48.63714) (xy 187.263037 -48.844108) + (xy 187.425651 -49.087476) (xy 187.537661 -49.357893) (xy 187.594763 -49.644966) (xy 187.594763 -49.937662) (xy 187.537661 -50.224735) + (xy 187.425651 -50.495152) (xy 187.263037 -50.73852) (xy 187.056069 -50.945488) (xy 186.812701 -51.108102) (xy 186.542284 -51.220112) + (xy 186.255211 -51.277214) (xy 185.962515 -51.277214) (xy 185.675442 -51.220112) (xy 185.405025 -51.108102) (xy 185.161657 -50.945488) + (xy 184.954689 -50.73852) (xy 184.792075 -50.495152) (xy 184.680065 -50.224735) (xy 184.622963 -49.937662) (xy 182.974934 -49.937662) + (xy 182.677949 -50.136101) (xy 182.19952 -50.334273) (xy 181.691622 -50.4353) (xy 181.173774 -50.4353) (xy 180.665876 -50.334273) + (xy 180.187447 -50.136101) (xy 179.756872 -49.8484) (xy 179.390698 -49.482226) (xy 179.102997 -49.051651) (xy 179.054495 -48.934557) + (xy 178.98607 -49.278553) (xy 178.825129 -49.667099) (xy 178.59148 -50.01678) (xy 178.2941 -50.31416) (xy 177.944419 -50.547809) + (xy 177.555873 -50.70875) (xy 177.143396 -50.790797) (xy 176.722838 -50.790797) (xy 176.310361 -50.70875) (xy 175.921815 -50.547809) + (xy 175.572134 -50.31416) (xy 175.274754 -50.01678) (xy 175.041105 -49.667099) (xy 174.880164 -49.278553) (xy 174.877314 -49.264224) + (xy 172.643464 -49.264224) (xy 172.518982 -49.251964) (xy 172.399284 -49.215654) (xy 172.28897 -49.156689) (xy 172.192279 -49.077337) + (xy 172.112927 -48.980646) (xy 172.053962 -48.870332) (xy 172.017652 -48.750634) (xy 172.005392 -48.626152) (xy 172.005392 -46.395384) + (xy 167.295197 -51.105578) (xy 167.295197 -53.193849) (xy 167.282937 -53.318331) (xy 167.246627 -53.438029) (xy 167.187662 -53.548343) + (xy 167.10831 -53.645034) (xy 167.059245 -53.685301) (xy 179.650866 -53.685301) (xy 179.650866 -53.264743) (xy 179.732913 -52.852266) + (xy 179.893854 -52.46372) (xy 180.127503 -52.114039) (xy 180.424883 -51.816659) (xy 180.774564 -51.58301) (xy 181.16311 -51.422069) + (xy 181.575587 -51.340022) (xy 181.996145 -51.340022) (xy 182.408622 -51.422069) (xy 182.797168 -51.58301) (xy 183.146849 -51.816659) + (xy 183.444229 -52.114039) (xy 183.677878 -52.46372) (xy 183.838819 -52.852266) (xy 183.843768 -52.877144) (xy 185.638644 -52.877144) + (xy 190.22025 -48.295537) (xy 190.220249 -38.581962) (xy 190.216573 -38.54464) (xy 190.220249 -38.507317) (xy 190.220249 -38.507308) + (xy 190.231246 -38.395655) (xy 190.274703 -38.252394) (xy 190.336193 -38.137356) (xy 190.336193 -37.800513) (xy 190.22106 -37.877442) + (xy 189.832514 -38.038383) (xy 189.420037 -38.12043) (xy 188.999479 -38.12043) (xy 188.587002 -38.038383) (xy 188.198456 -37.877442) + (xy 187.848775 -37.643793) (xy 187.551395 -37.346413) (xy 187.317746 -36.996732) (xy 187.156805 -36.608186) (xy 187.074758 -36.195709) + (xy 187.074758 -35.775151) (xy 187.156805 -35.362674) (xy 187.317746 -34.974128) (xy 187.551395 -34.624447) (xy 187.848775 -34.327067) + (xy 188.198456 -34.093418) (xy 188.587002 -33.932477) (xy 188.999479 -33.85043) (xy 189.420037 -33.85043) (xy 189.832514 -33.932477) + (xy 190.22106 -34.093418) (xy 190.570741 -34.327067) (xy 190.868121 -34.624447) (xy 191.10177 -34.974128) (xy 191.262711 -35.362674) + (xy 191.26766 -35.387552) (xy 191.489265 -35.387552) (xy 191.489265 -35.362869) (xy 191.485589 -35.325546) (xy 191.489265 -35.288224) + (xy 191.489265 -35.288214) (xy 191.500262 -35.176561) (xy 191.526842 -35.088937) (xy 191.543719 -35.0333) (xy 191.614291 -34.90127) + (xy 191.632951 -34.878533) (xy 191.709264 -34.785545) (xy 191.738268 -34.761742) (xy 192.866099 -33.633911) (xy 192.828917 -33.61851) + (xy 192.585549 -33.455896) (xy 192.378581 -33.248928) (xy 192.215967 -33.00556) (xy 192.103957 -32.735143) (xy 192.046855 -32.44807) + (xy 192.046855 -32.155374) (xy 192.103957 -31.868301) (xy 192.215967 -31.597884) (xy 192.378581 -31.354516) (xy 192.585549 -31.147548) + (xy 192.828917 -30.984934) (xy 193.099334 -30.872924) (xy 193.386407 -30.815822) (xy 193.679103 -30.815822) (xy 193.966176 -30.872924) + (xy 194.236593 -30.984934) (xy 194.479961 -31.147548) (xy 194.686929 -31.354516) (xy 194.849543 -31.597884) (xy 194.864944 -31.635066) + (xy 198.913157 -27.586852) (xy 198.913156 -21.674103) (xy 198.398156 -21.674103) (xy 198.273674 -21.661843) (xy 198.153976 -21.625533) + (xy 198.043662 -21.566568) (xy 197.946971 -21.487216) (xy 197.867619 -21.390525) (xy 197.808654 -21.280211) (xy 197.772344 -21.160513) + (xy 197.760084 -21.036031) (xy 197.760084 -20.31092) (xy 197.644951 -20.387849) (xy 197.256405 -20.54879) (xy 196.843928 -20.630837) + (xy 196.42337 -20.630837) (xy 196.010893 -20.54879) (xy 195.622347 -20.387849) (xy 195.272666 -20.1542) (xy 194.975286 -19.85682) + (xy 194.741637 -19.507139) (xy 194.580696 -19.118593) (xy 194.498649 -18.706116) (xy 194.498649 -18.285558) (xy 194.580696 -17.873081) + (xy 194.741637 -17.484535) (xy 194.975286 -17.134854) (xy 195.272666 -16.837474) (xy 195.622347 -16.603825) (xy 196.010893 -16.442884) + (xy 196.42337 -16.360837) (xy 196.843928 -16.360837) (xy 197.256405 -16.442884) (xy 197.644951 -16.603825) (xy 197.994632 -16.837474) + (xy 198.292012 -17.134854) (xy 198.525661 -17.484535) (xy 198.686602 -17.873081) (xy 198.691551 -17.897959) (xy 200.486427 -17.897959) + (xy 206.337048 -12.047337) (xy 206.337047 -4.184511) (xy 205.822047 -4.184511) (xy 205.697565 -4.172251) (xy 205.577867 -4.135941) + (xy 205.467553 -4.076976) (xy 205.370862 -3.997624) (xy 205.29151 -3.900933) (xy 205.232545 -3.790619) (xy 205.196235 -3.670921) + (xy 205.183975 -3.546439) (xy 205.183975 -2.821328) (xy 205.068842 -2.898257) (xy 204.680296 -3.059198) (xy 204.267819 -3.141245) + (xy 203.847261 -3.141245) (xy 203.434784 -3.059198) (xy 203.046238 -2.898257) (xy 202.696557 -2.664608) (xy 202.399177 -2.367228) + (xy 202.165528 -2.017547) (xy 202.004587 -1.629001) (xy 201.92254 -1.216524) (xy 201.92254 -0.795966) (xy 202.004587 -0.383489) + (xy 202.165528 0.005057) (xy 202.399177 0.354738) (xy 202.696557 0.652118) (xy 203.046238 0.885767) (xy 203.434784 1.046708) + (xy 203.847261 1.128755) (xy 204.267819 1.128755) (xy 204.680296 1.046708) (xy 205.068842 0.885767) (xy 205.418523 0.652118) + (xy 205.715903 0.354738) (xy 205.949552 0.005057) (xy 206.110493 -0.383489) (xy 206.115442 -0.408367) (xy 208.372047 -0.408367) + (xy 208.496529 -0.420627) (xy 208.616227 -0.456937) (xy 208.726541 -0.515902) (xy 208.823232 -0.595254) (xy 208.902584 -0.691945) + (xy 208.961549 -0.802259) (xy 208.966855 -0.819752) (xy 212.938852 -0.819752) (xy 212.938852 1.680248) (xy 212.951112 1.80473) + (xy 212.987422 1.924428) (xy 213.046387 2.034742) (xy 213.125739 2.131433) (xy 213.22243 2.210785) (xy 213.332744 2.26975) + (xy 213.452442 2.30606) (xy 213.576924 2.31832) (xy 214.197598 2.31832) (xy 214.21695 2.354524) (xy 214.265337 2.413483) + (xy 214.311924 2.470249) (xy 214.340922 2.494047) (xy 218.449087 6.602213) (xy 218.472885 6.631211) (xy 218.501883 6.655009) + (xy 218.588609 6.726184) (xy 218.716895 6.794755) (xy 218.720639 6.796756) (xy 218.8639 6.840213) (xy 218.975553 6.85121) + (xy 218.975563 6.85121) (xy 219.012886 6.854886) (xy 219.050209 6.85121) (xy 219.411237 6.85121) (xy 219.579599 7.103182) + (xy 219.800719 7.324302) (xy 220.060728 7.498034) (xy 220.349634 7.617703) (xy 220.656336 7.67871) (xy 220.969046 7.67871) + (xy 221.275748 7.617703) (xy 221.564654 7.498034) (xy 221.824663 7.324302) (xy 222.045783 7.103182) (xy 222.219515 6.843173) + (xy 222.237232 6.800401) (xy 222.249248 6.796756) (xy 222.381277 6.726184) (xy 222.497002 6.631211) (xy 222.519506 6.60379) + (xy 222.62676 6.61341) (xy 222.75113 6.600064) (xy 222.870506 6.56271) (xy 223.698961 6.211052) (xy 223.808757 6.151128) + (xy 223.904752 6.070935) (xy 223.983258 5.973555) (xy 224.041257 5.86273) (xy 224.076521 5.74272) (xy 224.087695 5.618136) + (xy 224.074349 5.493766) (xy 224.036995 5.37439) (xy 223.568118 4.269784) (xy 223.508194 4.159988) (xy 223.428001 4.063993) + (xy 223.330621 3.985487) (xy 223.219796 3.927488) (xy 223.099786 3.892224) (xy 222.975202 3.88105) (xy 222.850832 3.894396) + (xy 222.731456 3.93175) (xy 221.903001 4.283408) (xy 221.793205 4.343332) (xy 221.69721 4.423525) (xy 221.618704 4.520905) + (xy 221.560705 4.63173) (xy 221.54734 4.677214) (xy 221.275748 4.564717) (xy 220.969046 4.50371) (xy 220.656336 4.50371) + (xy 220.349634 4.564717) (xy 220.060728 4.684386) (xy 219.800719 4.858118) (xy 219.579599 5.079238) (xy 219.411237 5.33121) + (xy 219.327688 5.33121) (xy 217.58339 3.586912) (xy 224.551933 3.586912) (xy 224.565279 3.711282) (xy 224.602633 3.830658) + (xy 225.07151 4.935264) (xy 225.131434 5.04506) (xy 225.211627 5.141055) (xy 225.309007 5.219561) (xy 225.419832 5.27756) + (xy 225.539842 5.312824) (xy 225.664426 5.323998) (xy 225.788796 5.310652) (xy 225.908172 5.273298) (xy 226.736627 4.92164) + (xy 226.846423 4.861716) (xy 226.942418 4.781523) (xy 226.952062 4.76956) (xy 227.006117 4.813138) (xy 227.116942 4.871137) + (xy 227.236952 4.906401) (xy 227.361536 4.917575) (xy 227.485906 4.904229) (xy 227.605283 4.866875) (xy 229.241941 4.172155) + (xy 229.351736 4.112231) (xy 229.447731 4.032038) (xy 229.526237 3.934658) (xy 229.584236 3.823833) (xy 229.6195 3.703823) + (xy 229.630674 3.579239) (xy 229.617328 3.454869) (xy 229.579974 3.335492) (xy 228.885254 1.698834) (xy 228.82533 1.589039) + (xy 228.745137 1.493044) (xy 228.647757 1.414538) (xy 228.536932 1.356539) (xy 228.416922 1.321275) (xy 228.292338 1.310101) + (xy 228.167968 1.323447) (xy 228.048591 1.360801) (xy 226.411933 2.055521) (xy 226.302138 2.115445) (xy 226.206143 2.195638) + (xy 226.127637 2.293018) (xy 226.069638 2.403843) (xy 226.034374 2.523853) (xy 226.028171 2.593011) (xy 226.012868 2.591638) + (xy 225.888498 2.604984) (xy 225.769122 2.642338) (xy 224.940667 2.993996) (xy 224.830871 3.05392) (xy 224.734876 3.134113) + (xy 224.65637 3.231493) (xy 224.598371 3.342318) (xy 224.563107 3.462328) (xy 224.551933 3.586912) (xy 217.58339 3.586912) + (xy 217.448333 3.451855) (xy 217.543645 3.470814) (xy 217.836341 3.470814) (xy 218.123414 3.413712) (xy 218.393831 3.301702) + (xy 218.637199 3.139088) (xy 218.844167 2.93212) (xy 219.006781 2.688752) (xy 219.118791 2.418335) (xy 219.175893 2.131262) + (xy 219.175893 1.838566) (xy 219.118791 1.551493) (xy 219.006781 1.281076) (xy 218.854043 1.052488) (xy 218.877879 1.042615) + (xy 219.22756 0.808966) (xy 219.52494 0.511586) (xy 219.737258 0.193829) (xy 219.737258 0.258924) (xy 219.838285 0.766822) + (xy 220.036457 1.245251) (xy 220.324158 1.675826) (xy 220.690332 2.042) (xy 221.120907 2.329701) (xy 221.599336 2.527873) + (xy 222.107234 2.6289) (xy 222.625082 2.6289) (xy 223.13298 2.527873) (xy 223.611409 2.329701) (xy 224.041984 2.042) + (xy 224.408158 1.675826) (xy 224.695859 1.245251) (xy 224.894031 0.766822) (xy 224.995058 0.258924) (xy 224.995058 -0.258924) + (xy 224.894031 -0.766822) (xy 224.695859 -1.245251) (xy 224.408158 -1.675826) (xy 224.041984 -2.042) (xy 223.908394 -2.131262) + (xy 225.556423 -2.131262) (xy 225.556423 -1.838566) (xy 225.613525 -1.551493) (xy 225.725535 -1.281076) (xy 225.888149 -1.037708) + (xy 226.095117 -0.83074) (xy 226.338485 -0.668126) (xy 226.608902 -0.556116) (xy 226.895975 -0.499014) (xy 227.188671 -0.499014) + (xy 227.475744 -0.556116) (xy 227.746161 -0.668126) (xy 227.989529 -0.83074) (xy 228.196497 -1.037708) (xy 228.359111 -1.281076) + (xy 228.471121 -1.551493) (xy 228.528223 -1.838566) (xy 228.528223 -2.131262) (xy 228.471121 -2.418335) (xy 228.359111 -2.688752) + (xy 228.196497 -2.93212) (xy 227.989529 -3.139088) (xy 227.746161 -3.301702) (xy 227.475744 -3.413712) (xy 227.188671 -3.470814) + (xy 226.895975 -3.470814) (xy 226.608902 -3.413712) (xy 226.338485 -3.301702) (xy 226.095117 -3.139088) (xy 225.888149 -2.93212) + (xy 225.725535 -2.688752) (xy 225.613525 -2.418335) (xy 225.556423 -2.131262) (xy 223.908394 -2.131262) (xy 223.611409 -2.329701) + (xy 223.13298 -2.527873) (xy 222.625082 -2.6289) (xy 222.107234 -2.6289) (xy 221.599336 -2.527873) (xy 221.120907 -2.329701) + (xy 220.690332 -2.042) (xy 220.324158 -1.675826) (xy 220.036457 -1.245251) (xy 219.987955 -1.128157) (xy 219.91953 -1.472153) + (xy 219.758589 -1.860699) (xy 219.52494 -2.21038) (xy 219.22756 -2.50776) (xy 218.877879 -2.741409) (xy 218.489333 -2.90235) + (xy 218.076856 -2.984397) (xy 217.656298 -2.984397) (xy 217.243821 -2.90235) (xy 216.855275 -2.741409) (xy 216.505594 -2.50776) + (xy 216.208214 -2.21038) (xy 215.974565 -1.860699) (xy 215.813624 -1.472153) (xy 215.810774 -1.457824) (xy 213.576924 -1.457824) + (xy 213.452442 -1.445564) (xy 213.332744 -1.409254) (xy 213.22243 -1.350289) (xy 213.125739 -1.270937) (xy 213.046387 -1.174246) + (xy 212.987422 -1.063932) (xy 212.951112 -0.944234) (xy 212.938852 -0.819752) (xy 208.966855 -0.819752) (xy 208.997859 -0.921957) + (xy 209.010119 -1.046439) (xy 209.010119 -3.546439) (xy 208.997859 -3.670921) (xy 208.961549 -3.790619) (xy 208.902584 -3.900933) + (xy 208.823232 -3.997624) (xy 208.726541 -4.076976) (xy 208.616227 -4.135941) (xy 208.496529 -4.172251) (xy 208.372047 -4.184511) + (xy 207.857047 -4.184511) (xy 207.857047 -12.324818) (xy 207.860723 -12.362141) (xy 207.857047 -12.399464) (xy 207.857047 -12.399473) + (xy 207.84605 -12.511126) (xy 207.802593 -12.654387) (xy 207.732021 -12.786416) (xy 207.637048 -12.902141) (xy 207.60805 -12.925939) + (xy 202.224645 -18.309344) (xy 205.514961 -18.309344) (xy 205.514961 -15.809344) (xy 205.527221 -15.684862) (xy 205.563531 -15.565164) + (xy 205.622496 -15.45485) (xy 205.701848 -15.358159) (xy 205.798539 -15.278807) (xy 205.908853 -15.219842) (xy 206.028551 -15.183532) + (xy 206.153033 -15.171272) (xy 206.773707 -15.171272) (xy 206.793059 -15.135068) (xy 206.841446 -15.076109) (xy 206.888033 -15.019343) + (xy 206.917031 -14.995545) (xy 211.025196 -10.887379) (xy 211.048994 -10.858381) (xy 211.077992 -10.834583) (xy 211.164718 -10.763408) + (xy 211.296748 -10.692836) (xy 211.440009 -10.649379) (xy 211.551662 -10.638382) (xy 211.551672 -10.638382) (xy 211.588995 -10.634706) + (xy 211.626318 -10.638382) (xy 211.987345 -10.638382) (xy 212.155707 -10.38641) (xy 212.376827 -10.16529) (xy 212.636836 -9.991558) + (xy 212.925742 -9.871889) (xy 213.232444 -9.810882) (xy 213.545154 -9.810882) (xy 213.851856 -9.871889) (xy 214.140762 -9.991558) + (xy 214.400771 -10.16529) (xy 214.621891 -10.38641) (xy 214.795623 -10.646419) (xy 214.81334 -10.689191) (xy 214.825356 -10.692836) + (xy 214.957385 -10.763408) (xy 215.07311 -10.858381) (xy 215.095614 -10.885802) (xy 215.202868 -10.876182) (xy 215.327238 -10.889528) + (xy 215.446614 -10.926882) (xy 216.275069 -11.27854) (xy 216.384865 -11.338464) (xy 216.48086 -11.418657) (xy 216.559366 -11.516037) + (xy 216.617365 -11.626862) (xy 216.652629 -11.746872) (xy 216.663803 -11.871456) (xy 216.650457 -11.995826) (xy 216.613103 -12.115202) + (xy 216.144226 -13.219808) (xy 216.084302 -13.329604) (xy 216.004109 -13.425599) (xy 215.906729 -13.504105) (xy 215.795904 -13.562104) + (xy 215.675894 -13.597368) (xy 215.55131 -13.608542) (xy 215.42694 -13.595196) (xy 215.307564 -13.557842) (xy 214.479109 -13.206184) + (xy 214.369313 -13.14626) (xy 214.273318 -13.066067) (xy 214.194812 -12.968687) (xy 214.136813 -12.857862) (xy 214.123448 -12.812378) + (xy 213.851856 -12.924875) (xy 213.545154 -12.985882) (xy 213.232444 -12.985882) (xy 212.925742 -12.924875) (xy 212.636836 -12.805206) + (xy 212.376827 -12.631474) (xy 212.155707 -12.410354) (xy 211.987345 -12.158382) (xy 211.903797 -12.158382) (xy 210.159499 -13.90268) + (xy 217.128041 -13.90268) (xy 217.141387 -13.77831) (xy 217.178741 -13.658934) (xy 217.647618 -12.554328) (xy 217.707542 -12.444532) + (xy 217.787735 -12.348537) (xy 217.885115 -12.270031) (xy 217.99594 -12.212032) (xy 218.11595 -12.176768) (xy 218.240534 -12.165594) + (xy 218.364904 -12.17894) (xy 218.48428 -12.216294) (xy 219.312735 -12.567952) (xy 219.422531 -12.627876) (xy 219.518526 -12.708069) + (xy 219.52817 -12.720032) (xy 219.582225 -12.676454) (xy 219.69305 -12.618455) (xy 219.81306 -12.583191) (xy 219.937644 -12.572017) + (xy 220.062014 -12.585363) (xy 220.181391 -12.622717) (xy 221.818049 -13.317437) (xy 221.927844 -13.377361) (xy 222.023839 -13.457554) + (xy 222.102345 -13.554934) (xy 222.160344 -13.665759) (xy 222.195608 -13.785769) (xy 222.206782 -13.910353) (xy 222.193436 -14.034723) + (xy 222.156082 -14.1541) (xy 221.461362 -15.790758) (xy 221.401438 -15.900553) (xy 221.321245 -15.996548) (xy 221.223865 -16.075054) + (xy 221.11304 -16.133053) (xy 220.99303 -16.168317) (xy 220.868446 -16.179491) (xy 220.744076 -16.166145) (xy 220.624699 -16.128791) + (xy 218.988041 -15.434071) (xy 218.878246 -15.374147) (xy 218.782251 -15.293954) (xy 218.703745 -15.196574) (xy 218.645746 -15.085749) + (xy 218.610482 -14.965739) (xy 218.604279 -14.896581) (xy 218.588976 -14.897954) (xy 218.464606 -14.884608) (xy 218.34523 -14.847254) + (xy 217.516775 -14.495596) (xy 217.406979 -14.435672) (xy 217.310984 -14.355479) (xy 217.232478 -14.258099) (xy 217.174479 -14.147274) + (xy 217.139215 -14.027264) (xy 217.128041 -13.90268) (xy 210.159499 -13.90268) (xy 210.024442 -14.037737) (xy 210.119754 -14.018778) + (xy 210.41245 -14.018778) (xy 210.699523 -14.07588) (xy 210.96994 -14.18789) (xy 211.213308 -14.350504) (xy 211.420276 -14.557472) + (xy 211.58289 -14.80084) (xy 211.6949 -15.071257) (xy 211.752002 -15.35833) (xy 211.752002 -15.651026) (xy 211.6949 -15.938099) + (xy 211.58289 -16.208516) (xy 211.430152 -16.437104) (xy 211.453988 -16.446977) (xy 211.803669 -16.680626) (xy 212.101049 -16.978006) + (xy 212.313367 -17.295763) (xy 212.313367 -17.230668) (xy 212.414394 -16.72277) (xy 212.612566 -16.244341) (xy 212.900267 -15.813766) + (xy 213.266441 -15.447592) (xy 213.697016 -15.159891) (xy 214.175445 -14.961719) (xy 214.683343 -14.860692) (xy 215.201191 -14.860692) + (xy 215.709089 -14.961719) (xy 216.187518 -15.159891) (xy 216.618093 -15.447592) (xy 216.984267 -15.813766) (xy 217.271968 -16.244341) + (xy 217.47014 -16.72277) (xy 217.571167 -17.230668) (xy 217.571167 -17.748516) (xy 217.47014 -18.256414) (xy 217.271968 -18.734843) + (xy 216.984267 -19.165418) (xy 216.618093 -19.531592) (xy 216.484503 -19.620854) (xy 218.132532 -19.620854) (xy 218.132532 -19.328158) + (xy 218.189634 -19.041085) (xy 218.301644 -18.770668) (xy 218.464258 -18.5273) (xy 218.671226 -18.320332) (xy 218.914594 -18.157718) + (xy 219.185011 -18.045708) (xy 219.472084 -17.988606) (xy 219.76478 -17.988606) (xy 220.051853 -18.045708) (xy 220.32227 -18.157718) + (xy 220.565638 -18.320332) (xy 220.772606 -18.5273) (xy 220.93522 -18.770668) (xy 221.04723 -19.041085) (xy 221.104332 -19.328158) + (xy 221.104332 -19.620854) (xy 221.04723 -19.907927) (xy 220.93522 -20.178344) (xy 220.772606 -20.421712) (xy 220.565638 -20.62868) + (xy 220.32227 -20.791294) (xy 220.051853 -20.903304) (xy 219.76478 -20.960406) (xy 219.472084 -20.960406) (xy 219.185011 -20.903304) + (xy 218.914594 -20.791294) (xy 218.671226 -20.62868) (xy 218.464258 -20.421712) (xy 218.301644 -20.178344) (xy 218.189634 -19.907927) + (xy 218.132532 -19.620854) (xy 216.484503 -19.620854) (xy 216.187518 -19.819293) (xy 215.709089 -20.017465) (xy 215.201191 -20.118492) + (xy 214.683343 -20.118492) (xy 214.175445 -20.017465) (xy 213.697016 -19.819293) (xy 213.266441 -19.531592) (xy 212.900267 -19.165418) + (xy 212.612566 -18.734843) (xy 212.564064 -18.617749) (xy 212.495639 -18.961745) (xy 212.334698 -19.350291) (xy 212.101049 -19.699972) + (xy 211.803669 -19.997352) (xy 211.453988 -20.231001) (xy 211.065442 -20.391942) (xy 210.652965 -20.473989) (xy 210.232407 -20.473989) + (xy 209.81993 -20.391942) (xy 209.431384 -20.231001) (xy 209.081703 -19.997352) (xy 208.784323 -19.699972) (xy 208.550674 -19.350291) + (xy 208.389733 -18.961745) (xy 208.386883 -18.947416) (xy 206.153033 -18.947416) (xy 206.028551 -18.935156) (xy 205.908853 -18.898846) + (xy 205.798539 -18.839881) (xy 205.701848 -18.760529) (xy 205.622496 -18.663838) (xy 205.563531 -18.553524) (xy 205.527221 -18.433826) + (xy 205.514961 -18.309344) (xy 202.224645 -18.309344) (xy 201.586228 -18.94776) (xy 201.586228 -21.036031) (xy 201.573968 -21.160513) + (xy 201.537658 -21.280211) (xy 201.478693 -21.390525) (xy 201.399341 -21.487216) (xy 201.30265 -21.566568) (xy 201.192336 -21.625533) + (xy 201.072638 -21.661843) (xy 200.948156 -21.674103) (xy 200.433156 -21.674103) (xy 200.433156 -27.864333) (xy 200.436832 -27.901656) + (xy 200.433156 -27.938979) (xy 200.433156 -27.938988) (xy 200.422159 -28.050641) (xy 200.378702 -28.193902) (xy 200.30813 -28.325931) + (xy 200.213157 -28.441656) (xy 200.184159 -28.465454) (xy 193.26206 -35.387552) (xy 193.524265 -35.387552) (xy 193.648747 -35.399812) + (xy 193.768445 -35.436122) (xy 193.878759 -35.495087) (xy 193.97545 -35.574439) (xy 194.054802 -35.67113) (xy 194.113767 -35.781444) + (xy 194.119073 -35.798936) (xy 198.091069 -35.798936) (xy 198.091069 -33.298936) (xy 198.103329 -33.174454) (xy 198.139639 -33.054756) + (xy 198.198604 -32.944442) (xy 198.277956 -32.847751) (xy 198.374647 -32.768399) (xy 198.484961 -32.709434) (xy 198.604659 -32.673124) + (xy 198.729141 -32.660864) (xy 199.349815 -32.660864) (xy 199.369167 -32.62466) (xy 199.428668 -32.552159) (xy 199.464141 -32.508935) + (xy 199.493139 -32.485137) (xy 203.601304 -28.376971) (xy 203.625102 -28.347973) (xy 203.6541 -28.324175) (xy 203.740826 -28.253) + (xy 203.837433 -28.201362) (xy 203.872856 -28.182428) (xy 204.016117 -28.138971) (xy 204.12777 -28.127974) (xy 204.12778 -28.127974) + (xy 204.165103 -28.124298) (xy 204.202426 -28.127974) (xy 204.563454 -28.127974) (xy 204.731816 -27.876002) (xy 204.952936 -27.654882) + (xy 205.212945 -27.48115) (xy 205.501851 -27.361481) (xy 205.808553 -27.300474) (xy 206.121263 -27.300474) (xy 206.427965 -27.361481) + (xy 206.716871 -27.48115) (xy 206.97688 -27.654882) (xy 207.198 -27.876002) (xy 207.371732 -28.136011) (xy 207.389449 -28.178783) + (xy 207.401465 -28.182428) (xy 207.533494 -28.253) (xy 207.649219 -28.347973) (xy 207.671723 -28.375394) (xy 207.778977 -28.365774) + (xy 207.903347 -28.37912) (xy 208.022723 -28.416474) (xy 208.851178 -28.768132) (xy 208.960974 -28.828056) (xy 209.056969 -28.908249) + (xy 209.135475 -29.005629) (xy 209.193474 -29.116454) (xy 209.228738 -29.236464) (xy 209.239912 -29.361048) (xy 209.226566 -29.485418) + (xy 209.189212 -29.604794) (xy 208.720335 -30.7094) (xy 208.660411 -30.819196) (xy 208.580218 -30.915191) (xy 208.482838 -30.993697) + (xy 208.372013 -31.051696) (xy 208.252003 -31.08696) (xy 208.127419 -31.098134) (xy 208.003049 -31.084788) (xy 207.883673 -31.047434) + (xy 207.055218 -30.695776) (xy 206.945422 -30.635852) (xy 206.849427 -30.555659) (xy 206.770921 -30.458279) (xy 206.712922 -30.347454) + (xy 206.699557 -30.30197) (xy 206.427965 -30.414467) (xy 206.121263 -30.475474) (xy 205.808553 -30.475474) (xy 205.501851 -30.414467) + (xy 205.212945 -30.294798) (xy 204.952936 -30.121066) (xy 204.731816 -29.899946) (xy 204.563454 -29.647974) (xy 204.479905 -29.647974) + (xy 202.735607 -31.392272) (xy 209.70415 -31.392272) (xy 209.717496 -31.267902) (xy 209.75485 -31.148526) (xy 210.223727 -30.04392) + (xy 210.283651 -29.934124) (xy 210.363844 -29.838129) (xy 210.461224 -29.759623) (xy 210.572049 -29.701624) (xy 210.692059 -29.66636) + (xy 210.816643 -29.655186) (xy 210.941013 -29.668532) (xy 211.060389 -29.705886) (xy 211.888844 -30.057544) (xy 211.99864 -30.117468) + (xy 212.094635 -30.197661) (xy 212.104279 -30.209624) (xy 212.158334 -30.166046) (xy 212.269159 -30.108047) (xy 212.389169 -30.072783) + (xy 212.513753 -30.061609) (xy 212.638123 -30.074955) (xy 212.7575 -30.112309) (xy 214.394158 -30.807029) (xy 214.503953 -30.866953) + (xy 214.599948 -30.947146) (xy 214.678454 -31.044526) (xy 214.736453 -31.155351) (xy 214.771717 -31.275361) (xy 214.782891 -31.399945) + (xy 214.769545 -31.524315) (xy 214.732191 -31.643692) (xy 214.037471 -33.28035) (xy 213.977547 -33.390145) (xy 213.897354 -33.48614) + (xy 213.799974 -33.564646) (xy 213.689149 -33.622645) (xy 213.569139 -33.657909) (xy 213.444555 -33.669083) (xy 213.320185 -33.655737) + (xy 213.200808 -33.618383) (xy 211.56415 -32.923663) (xy 211.454355 -32.863739) (xy 211.35836 -32.783546) (xy 211.279854 -32.686166) + (xy 211.221855 -32.575341) (xy 211.186591 -32.455331) (xy 211.180388 -32.386173) (xy 211.165085 -32.387546) (xy 211.040715 -32.3742) + (xy 210.921339 -32.336846) (xy 210.092884 -31.985188) (xy 209.983088 -31.925264) (xy 209.887093 -31.845071) (xy 209.808587 -31.747691) + (xy 209.750588 -31.636866) (xy 209.715324 -31.516856) (xy 209.70415 -31.392272) (xy 202.735607 -31.392272) (xy 202.60055 -31.527329) + (xy 202.695862 -31.50837) (xy 202.988558 -31.50837) (xy 203.275631 -31.565472) (xy 203.546048 -31.677482) (xy 203.789416 -31.840096) + (xy 203.996384 -32.047064) (xy 204.158998 -32.290432) (xy 204.271008 -32.560849) (xy 204.32811 -32.847922) (xy 204.32811 -33.140618) + (xy 204.271008 -33.427691) (xy 204.158998 -33.698108) (xy 204.00626 -33.926696) (xy 204.030096 -33.936569) (xy 204.379777 -34.170218) + (xy 204.677157 -34.467598) (xy 204.889475 -34.785355) (xy 204.889475 -34.72026) (xy 204.990502 -34.212362) (xy 205.188674 -33.733933) + (xy 205.476375 -33.303358) (xy 205.842549 -32.937184) (xy 206.273124 -32.649483) (xy 206.751553 -32.451311) (xy 207.259451 -32.350284) + (xy 207.777299 -32.350284) (xy 208.285197 -32.451311) (xy 208.763626 -32.649483) (xy 209.194201 -32.937184) (xy 209.560375 -33.303358) + (xy 209.848076 -33.733933) (xy 210.046248 -34.212362) (xy 210.147275 -34.72026) (xy 210.147275 -35.238108) (xy 210.046248 -35.746006) + (xy 209.848076 -36.224435) (xy 209.560375 -36.65501) (xy 209.194201 -37.021184) (xy 209.060611 -37.110446) (xy 210.70864 -37.110446) + (xy 210.70864 -36.81775) (xy 210.765742 -36.530677) (xy 210.877752 -36.26026) (xy 211.040366 -36.016892) (xy 211.247334 -35.809924) + (xy 211.490702 -35.64731) (xy 211.761119 -35.5353) (xy 212.048192 -35.478198) (xy 212.340888 -35.478198) (xy 212.627961 -35.5353) + (xy 212.898378 -35.64731) (xy 213.141746 -35.809924) (xy 213.348714 -36.016892) (xy 213.511328 -36.26026) (xy 213.623338 -36.530677) + (xy 213.68044 -36.81775) (xy 213.68044 -37.110446) (xy 213.623338 -37.397519) (xy 213.511328 -37.667936) (xy 213.348714 -37.911304) + (xy 213.141746 -38.118272) (xy 212.898378 -38.280886) (xy 212.627961 -38.392896) (xy 212.340888 -38.449998) (xy 212.048192 -38.449998) + (xy 211.761119 -38.392896) (xy 211.490702 -38.280886) (xy 211.247334 -38.118272) (xy 211.040366 -37.911304) (xy 210.877752 -37.667936) + (xy 210.765742 -37.397519) (xy 210.70864 -37.110446) (xy 209.060611 -37.110446) (xy 208.763626 -37.308885) (xy 208.285197 -37.507057) + (xy 207.777299 -37.608084) (xy 207.259451 -37.608084) (xy 206.751553 -37.507057) (xy 206.273124 -37.308885) (xy 205.842549 -37.021184) + (xy 205.476375 -36.65501) (xy 205.188674 -36.224435) (xy 205.140172 -36.107341) (xy 205.071747 -36.451337) (xy 204.910806 -36.839883) + (xy 204.677157 -37.189564) (xy 204.379777 -37.486944) (xy 204.030096 -37.720593) (xy 203.64155 -37.881534) (xy 203.229073 -37.963581) + (xy 202.808515 -37.963581) (xy 202.396038 -37.881534) (xy 202.007492 -37.720593) (xy 201.657811 -37.486944) (xy 201.360431 -37.189564) + (xy 201.126782 -36.839883) (xy 200.965841 -36.451337) (xy 200.962991 -36.437008) (xy 198.729141 -36.437008) (xy 198.604659 -36.424748) + (xy 198.484961 -36.388438) (xy 198.374647 -36.329473) (xy 198.277956 -36.250121) (xy 198.198604 -36.15343) (xy 198.139639 -36.043116) + (xy 198.103329 -35.923418) (xy 198.091069 -35.798936) (xy 194.119073 -35.798936) (xy 194.150077 -35.901142) (xy 194.162337 -36.025624) + (xy 194.162337 -38.525624) (xy 194.150077 -38.650106) (xy 194.113767 -38.769804) (xy 194.054802 -38.880118) (xy 193.97545 -38.976809) + (xy 193.878759 -39.056161) (xy 193.768445 -39.115126) (xy 193.648747 -39.151436) (xy 193.524265 -39.163696) (xy 191.740249 -39.163696) + (xy 191.740249 -48.573018) (xy 191.743925 -48.610341) (xy 191.740249 -48.647664) (xy 191.740249 -48.647673) (xy 191.729252 -48.759326) + (xy 191.685795 -48.902587) (xy 191.668344 -48.935235) (xy 191.615223 -49.034617) (xy 191.544048 -49.121343) (xy 191.52025 -49.150341) + (xy 191.491252 -49.174139) (xy 187.376862 -53.288529) (xy 190.667178 -53.288529) (xy 190.667178 -50.788529) (xy 190.679438 -50.664047) + (xy 190.715748 -50.544349) (xy 190.774713 -50.434035) (xy 190.854065 -50.337344) (xy 190.950756 -50.257992) (xy 191.06107 -50.199027) + (xy 191.180768 -50.162717) (xy 191.30525 -50.150457) (xy 191.925924 -50.150457) (xy 191.945276 -50.114253) (xy 191.989404 -50.060484) + (xy 192.04025 -49.998528) (xy 192.069248 -49.97473) (xy 196.177414 -45.866563) (xy 196.201212 -45.837565) (xy 196.316937 -45.742592) + (xy 196.448966 -45.67202) (xy 196.592227 -45.628563) (xy 196.70388 -45.617566) (xy 196.703889 -45.617566) (xy 196.741212 -45.61389) + (xy 196.778535 -45.617566) (xy 197.139562 -45.617566) (xy 197.307924 -45.365594) (xy 197.529044 -45.144474) (xy 197.789053 -44.970742) + (xy 198.077959 -44.851073) (xy 198.384661 -44.790066) (xy 198.697371 -44.790066) (xy 199.004073 -44.851073) (xy 199.292979 -44.970742) + (xy 199.552988 -45.144474) (xy 199.774108 -45.365594) (xy 199.94784 -45.625603) (xy 199.965557 -45.668375) (xy 199.977573 -45.67202) + (xy 200.109602 -45.742592) (xy 200.225327 -45.837565) (xy 200.247831 -45.864986) (xy 200.355085 -45.855366) (xy 200.479455 -45.868712) + (xy 200.598831 -45.906066) (xy 201.427286 -46.257724) (xy 201.537082 -46.317648) (xy 201.633077 -46.397841) (xy 201.711583 -46.495221) + (xy 201.769582 -46.606046) (xy 201.804846 -46.726056) (xy 201.81602 -46.85064) (xy 201.802674 -46.97501) (xy 201.76532 -47.094386) + (xy 201.296443 -48.198992) (xy 201.236519 -48.308788) (xy 201.156326 -48.404783) (xy 201.058946 -48.483289) (xy 200.948121 -48.541288) + (xy 200.828111 -48.576552) (xy 200.703527 -48.587726) (xy 200.579157 -48.57438) (xy 200.459781 -48.537026) (xy 199.631326 -48.185368) + (xy 199.52153 -48.125444) (xy 199.425535 -48.045251) (xy 199.347029 -47.947871) (xy 199.28903 -47.837046) (xy 199.275665 -47.791562) + (xy 199.004073 -47.904059) (xy 198.697371 -47.965066) (xy 198.384661 -47.965066) (xy 198.077959 -47.904059) (xy 197.789053 -47.78439) + (xy 197.529044 -47.610658) (xy 197.307924 -47.389538) (xy 197.139562 -47.137566) (xy 197.056015 -47.137566) (xy 195.311717 -48.881864) + (xy 202.280258 -48.881864) (xy 202.293604 -48.757494) (xy 202.330958 -48.638118) (xy 202.799835 -47.533512) (xy 202.859759 -47.423716) + (xy 202.939952 -47.327721) (xy 203.037332 -47.249215) (xy 203.148157 -47.191216) (xy 203.268167 -47.155952) (xy 203.392751 -47.144778) + (xy 203.517121 -47.158124) (xy 203.636497 -47.195478) (xy 204.464952 -47.547136) (xy 204.574748 -47.60706) (xy 204.670743 -47.687253) + (xy 204.680387 -47.699216) (xy 204.734442 -47.655638) (xy 204.845267 -47.597639) (xy 204.965277 -47.562375) (xy 205.089861 -47.551201) + (xy 205.214231 -47.564547) (xy 205.333608 -47.601901) (xy 206.970266 -48.296621) (xy 207.080061 -48.356545) (xy 207.176056 -48.436738) + (xy 207.254562 -48.534118) (xy 207.312561 -48.644943) (xy 207.347825 -48.764953) (xy 207.358999 -48.889537) (xy 207.345653 -49.013907) + (xy 207.308299 -49.133284) (xy 206.613579 -50.769942) (xy 206.553655 -50.879737) (xy 206.473462 -50.975732) (xy 206.376082 -51.054238) + (xy 206.265257 -51.112237) (xy 206.145247 -51.147501) (xy 206.020663 -51.158675) (xy 205.896293 -51.145329) (xy 205.776916 -51.107975) + (xy 204.140258 -50.413255) (xy 204.030463 -50.353331) (xy 203.934468 -50.273138) (xy 203.855962 -50.175758) (xy 203.797963 -50.064933) + (xy 203.762699 -49.944923) (xy 203.756496 -49.875765) (xy 203.741193 -49.877138) (xy 203.616823 -49.863792) (xy 203.497447 -49.826438) + (xy 202.668992 -49.47478) (xy 202.559196 -49.414856) (xy 202.463201 -49.334663) (xy 202.384695 -49.237283) (xy 202.326696 -49.126458) + (xy 202.291432 -49.006448) (xy 202.280258 -48.881864) (xy 195.311717 -48.881864) (xy 195.176659 -49.016922) (xy 195.271971 -48.997963) + (xy 195.564667 -48.997963) (xy 195.85174 -49.055065) (xy 196.122157 -49.167075) (xy 196.365525 -49.329689) (xy 196.572493 -49.536657) + (xy 196.735107 -49.780025) (xy 196.847117 -50.050442) (xy 196.904219 -50.337515) (xy 196.904219 -50.630211) (xy 196.847117 -50.917284) + (xy 196.735107 -51.187701) (xy 196.582369 -51.416289) (xy 196.606205 -51.426162) (xy 196.955886 -51.659811) (xy 197.253266 -51.957191) + (xy 197.465584 -52.274948) (xy 197.465584 -52.209853) (xy 197.566611 -51.701955) (xy 197.764783 -51.223526) (xy 198.052484 -50.792951) + (xy 198.418658 -50.426777) (xy 198.849233 -50.139076) (xy 199.327662 -49.940904) (xy 199.83556 -49.839877) (xy 200.353408 -49.839877) + (xy 200.861306 -49.940904) (xy 201.339735 -50.139076) (xy 201.77031 -50.426777) (xy 202.136484 -50.792951) (xy 202.424185 -51.223526) + (xy 202.622357 -51.701955) (xy 202.723384 -52.209853) (xy 202.723384 -52.727701) (xy 202.622357 -53.235599) (xy 202.424185 -53.714028) + (xy 202.136484 -54.144603) (xy 201.77031 -54.510777) (xy 201.63672 -54.600039) (xy 203.284749 -54.600039) (xy 203.284749 -54.307343) + (xy 203.341851 -54.02027) (xy 203.453861 -53.749853) (xy 203.616475 -53.506485) (xy 203.823443 -53.299517) (xy 204.066811 -53.136903) + (xy 204.337228 -53.024893) (xy 204.624301 -52.967791) (xy 204.916997 -52.967791) (xy 205.20407 -53.024893) (xy 205.474487 -53.136903) + (xy 205.717855 -53.299517) (xy 205.924823 -53.506485) (xy 206.087437 -53.749853) (xy 206.199447 -54.02027) (xy 206.256549 -54.307343) + (xy 206.256549 -54.600039) (xy 206.199447 -54.887112) (xy 206.087437 -55.157529) (xy 205.924823 -55.400897) (xy 205.717855 -55.607865) + (xy 205.474487 -55.770479) (xy 205.20407 -55.882489) (xy 204.916997 -55.939591) (xy 204.624301 -55.939591) (xy 204.337228 -55.882489) + (xy 204.066811 -55.770479) (xy 203.823443 -55.607865) (xy 203.616475 -55.400897) (xy 203.453861 -55.157529) (xy 203.341851 -54.887112) + (xy 203.284749 -54.600039) (xy 201.63672 -54.600039) (xy 201.339735 -54.798478) (xy 200.861306 -54.99665) (xy 200.353408 -55.097677) + (xy 199.83556 -55.097677) (xy 199.327662 -54.99665) (xy 198.849233 -54.798478) (xy 198.418658 -54.510777) (xy 198.052484 -54.144603) + (xy 197.764783 -53.714028) (xy 197.716281 -53.596934) (xy 197.647856 -53.94093) (xy 197.486915 -54.329476) (xy 197.253266 -54.679157) + (xy 196.955886 -54.976537) (xy 196.606205 -55.210186) (xy 196.217659 -55.371127) (xy 195.805182 -55.453174) (xy 195.384624 -55.453174) + (xy 194.972147 -55.371127) (xy 194.583601 -55.210186) (xy 194.23392 -54.976537) (xy 193.93654 -54.679157) (xy 193.702891 -54.329476) + (xy 193.54195 -53.94093) (xy 193.5391 -53.926601) (xy 191.30525 -53.926601) (xy 191.180768 -53.914341) (xy 191.06107 -53.878031) + (xy 190.950756 -53.819066) (xy 190.854065 -53.739714) (xy 190.774713 -53.643023) (xy 190.715748 -53.532709) (xy 190.679438 -53.413011) + (xy 190.667178 -53.288529) (xy 187.376862 -53.288529) (xy 186.738445 -53.926945) (xy 186.738445 -56.015216) (xy 186.726185 -56.139698) + (xy 186.689875 -56.259396) (xy 186.63091 -56.36971) (xy 186.551558 -56.466401) (xy 186.454867 -56.545753) (xy 186.344553 -56.604718) + (xy 186.224855 -56.641028) (xy 186.100373 -56.653288) (xy 183.550373 -56.653288) (xy 183.425891 -56.641028) (xy 183.306193 -56.604718) + (xy 183.195879 -56.545753) (xy 183.099188 -56.466401) (xy 183.019836 -56.36971) (xy 182.960871 -56.259396) (xy 182.924561 -56.139698) + (xy 182.912301 -56.015216) (xy 182.912301 -55.290105) (xy 182.797168 -55.367034) (xy 182.408622 -55.527975) (xy 181.996145 -55.610022) + (xy 181.575587 -55.610022) (xy 181.16311 -55.527975) (xy 180.774564 -55.367034) (xy 180.424883 -55.133385) (xy 180.127503 -54.836005) + (xy 179.893854 -54.486324) (xy 179.732913 -54.097778) (xy 179.650866 -53.685301) (xy 167.059245 -53.685301) (xy 167.011619 -53.724386) + (xy 166.901305 -53.783351) (xy 166.781607 -53.819661) (xy 166.657125 -53.831921) (xy 164.107125 -53.831921) (xy 163.982643 -53.819661) + (xy 163.862945 -53.783351) (xy 163.752631 -53.724386) (xy 163.65594 -53.645034) (xy 163.576588 -53.548343) (xy 163.517623 -53.438029) + (xy 163.481313 -53.318331) (xy 163.469053 -53.193849) (xy 163.469053 -52.468738) (xy 163.35392 -52.545667) (xy 162.965374 -52.706608) + (xy 162.552897 -52.788655) (xy 162.132339 -52.788655) (xy 161.719862 -52.706608) (xy 161.331316 -52.545667) (xy 160.981635 -52.312018) + (xy 160.684255 -52.014638) (xy 160.450606 -51.664957) (xy 160.289665 -51.276411) (xy 160.207618 -50.863934) (xy 146.685816 -50.863934) + (xy 146.656857 -50.932155) (xy 146.629696 -51.018824) (xy 146.623656 -51.074426) (xy 146.628531 -51.130149) (xy 146.644137 -51.183866) + (xy 146.669875 -51.233519) (xy 146.704775 -51.277237) (xy 146.747493 -51.313337) (xy 146.824967 -51.356281) (xy 167.936583 -60.317628) + (xy 168.023241 -60.344786) (xy 168.078847 -60.350826) (xy 168.134566 -60.345952) (xy 168.18828 -60.330346) (xy 168.237939 -60.304605) + (xy 168.281655 -60.269707) (xy 168.317755 -60.226988) (xy 168.360696 -60.149522) (xy 169.898095 -56.527631) (xy 169.908557 -56.494197) + (xy 169.92534 -56.463446) (xy 169.925345 -56.463435) (xy 169.975558 -56.371434) (xy 170.065223 -56.264101) (xy 170.174104 -56.176323) + (xy 170.298019 -56.111473) (xy 170.432204 -56.072044) (xy 170.571502 -56.059551) (xy 170.710562 -56.074473) (xy 170.844038 -56.116238) + (xy 170.874806 -56.133031) (xy 176.092189 -58.347678) (xy 198.312652 -58.347678) (xy 198.312652 -57.92712) (xy 198.394699 -57.514643) + (xy 198.55564 -57.126097) (xy 198.789289 -56.776416) (xy 199.086669 -56.479036) (xy 199.43635 -56.245387) (xy 199.824896 -56.084446) + (xy 200.237373 -56.002399) (xy 200.657931 -56.002399) (xy 201.070408 -56.084446) (xy 201.458954 -56.245387) (xy 201.808635 -56.479036) + (xy 202.106015 -56.776416) (xy 202.339664 -57.126097) (xy 202.500605 -57.514643) (xy 202.505554 -57.539521) (xy 204.30043 -57.539521) + (xy 210.151051 -51.688899) (xy 210.15105 -43.826072) (xy 209.63605 -43.826072) (xy 209.511568 -43.813812) (xy 209.39187 -43.777502) + (xy 209.281556 -43.718537) (xy 209.184865 -43.639185) (xy 209.105513 -43.542494) (xy 209.046548 -43.43218) (xy 209.010238 -43.312482) + (xy 208.997978 -43.188) (xy 208.997978 -42.462889) (xy 208.882845 -42.539818) (xy 208.494299 -42.700759) (xy 208.081822 -42.782806) + (xy 207.661264 -42.782806) (xy 207.248787 -42.700759) (xy 206.860241 -42.539818) (xy 206.51056 -42.306169) (xy 206.21318 -42.008789) + (xy 205.979531 -41.659108) (xy 205.81859 -41.270562) (xy 205.736543 -40.858085) (xy 205.736543 -40.437527) (xy 205.81859 -40.02505) + (xy 205.979531 -39.636504) (xy 206.21318 -39.286823) (xy 206.51056 -38.989443) (xy 206.860241 -38.755794) (xy 207.248787 -38.594853) + (xy 207.661264 -38.512806) (xy 208.081822 -38.512806) (xy 208.494299 -38.594853) (xy 208.882845 -38.755794) (xy 209.232526 -38.989443) + (xy 209.529906 -39.286823) (xy 209.763555 -39.636504) (xy 209.924496 -40.02505) (xy 209.929445 -40.049928) (xy 211.724321 -40.049928) + (xy 217.574943 -34.199305) (xy 217.574942 -26.33648) (xy 217.059942 -26.33648) (xy 216.93546 -26.32422) (xy 216.815762 -26.28791) + (xy 216.705448 -26.228945) (xy 216.608757 -26.149593) (xy 216.529405 -26.052902) (xy 216.47044 -25.942588) (xy 216.43413 -25.82289) + (xy 216.42187 -25.698408) (xy 216.42187 -24.973297) (xy 216.306737 -25.050226) (xy 215.918191 -25.211167) (xy 215.505714 -25.293214) + (xy 215.085156 -25.293214) (xy 214.672679 -25.211167) (xy 214.284133 -25.050226) (xy 213.934452 -24.816577) (xy 213.637072 -24.519197) + (xy 213.403423 -24.169516) (xy 213.242482 -23.78097) (xy 213.160435 -23.368493) (xy 213.160435 -22.947935) (xy 213.242482 -22.535458) + (xy 213.403423 -22.146912) (xy 213.637072 -21.797231) (xy 213.934452 -21.499851) (xy 214.284133 -21.266202) (xy 214.672679 -21.105261) + (xy 215.085156 -21.023214) (xy 215.505714 -21.023214) (xy 215.918191 -21.105261) (xy 216.306737 -21.266202) (xy 216.656418 -21.499851) + (xy 216.953798 -21.797231) (xy 217.187447 -22.146912) (xy 217.348388 -22.535458) (xy 217.353337 -22.560336) (xy 219.148213 -22.560336) + (xy 224.998834 -16.709714) (xy 224.998833 -8.846888) (xy 224.483833 -8.846888) (xy 224.359351 -8.834628) (xy 224.239653 -8.798318) + (xy 224.129339 -8.739353) (xy 224.032648 -8.660001) (xy 223.953296 -8.56331) (xy 223.894331 -8.452996) (xy 223.858021 -8.333298) + (xy 223.845761 -8.208816) (xy 223.845761 -7.483705) (xy 223.730628 -7.560634) (xy 223.342082 -7.721575) (xy 222.929605 -7.803622) + (xy 222.509047 -7.803622) (xy 222.09657 -7.721575) (xy 221.708024 -7.560634) (xy 221.358343 -7.326985) (xy 221.060963 -7.029605) + (xy 220.827314 -6.679924) (xy 220.666373 -6.291378) (xy 220.584326 -5.878901) (xy 220.584326 -5.458343) (xy 220.666373 -5.045866) + (xy 220.827314 -4.65732) (xy 221.060963 -4.307639) (xy 221.358343 -4.010259) (xy 221.708024 -3.77661) (xy 222.09657 -3.615669) + (xy 222.509047 -3.533622) (xy 222.929605 -3.533622) (xy 223.342082 -3.615669) (xy 223.730628 -3.77661) (xy 224.080309 -4.010259) + (xy 224.377689 -4.307639) (xy 224.611338 -4.65732) (xy 224.772279 -5.045866) (xy 224.777228 -5.070744) (xy 227.033833 -5.070744) + (xy 227.158315 -5.083004) (xy 227.278013 -5.119314) (xy 227.388327 -5.178279) (xy 227.485018 -5.257631) (xy 227.56437 -5.354322) + (xy 227.623335 -5.464636) (xy 227.659645 -5.584334) (xy 227.671905 -5.708816) (xy 227.671905 -8.208816) (xy 227.659645 -8.333298) + (xy 227.623335 -8.452996) (xy 227.56437 -8.56331) (xy 227.485018 -8.660001) (xy 227.388327 -8.739353) (xy 227.278013 -8.798318) + (xy 227.158315 -8.834628) (xy 227.033833 -8.846888) (xy 226.518833 -8.846888) (xy 226.518833 -16.987195) (xy 226.522509 -17.024518) + (xy 226.518833 -17.061841) (xy 226.518833 -17.06185) (xy 226.507836 -17.173503) (xy 226.464379 -17.316764) (xy 226.393807 -17.448793) + (xy 226.298834 -17.564518) (xy 226.269836 -17.588316) (xy 220.248014 -23.610137) (xy 220.248014 -25.698408) (xy 220.235754 -25.82289) + (xy 220.199444 -25.942588) (xy 220.140479 -26.052902) (xy 220.061127 -26.149593) (xy 219.964436 -26.228945) (xy 219.854122 -26.28791) + (xy 219.734424 -26.32422) (xy 219.609942 -26.33648) (xy 219.094942 -26.33648) (xy 219.094942 -34.476783) (xy 219.098618 -34.514108) + (xy 219.094942 -34.551433) (xy 219.094942 -34.551441) (xy 219.083945 -34.663094) (xy 219.040488 -34.806355) (xy 218.969916 -34.938384) + (xy 218.874943 -35.054109) (xy 218.845945 -35.077907) (xy 212.824122 -41.099729) (xy 212.824122 -43.188) (xy 212.811862 -43.312482) + (xy 212.775552 -43.43218) (xy 212.716587 -43.542494) (xy 212.637235 -43.639185) (xy 212.540544 -43.718537) (xy 212.43023 -43.777502) + (xy 212.310532 -43.813812) (xy 212.18605 -43.826072) (xy 211.67105 -43.826072) (xy 211.67105 -51.96638) (xy 211.674726 -52.003703) + (xy 211.67105 -52.041026) (xy 211.67105 -52.041035) (xy 211.660053 -52.152688) (xy 211.616596 -52.295949) (xy 211.546024 -52.427978) + (xy 211.451051 -52.543703) (xy 211.422053 -52.567501) (xy 205.400231 -58.589322) (xy 205.400231 -60.677593) (xy 205.387971 -60.802075) + (xy 205.351661 -60.921773) (xy 205.292696 -61.032087) (xy 205.213344 -61.128778) (xy 205.116653 -61.20813) (xy 205.006339 -61.267095) + (xy 204.886641 -61.303405) (xy 204.762159 -61.315665) (xy 202.212159 -61.315665) (xy 202.087677 -61.303405) (xy 201.967979 -61.267095) + (xy 201.857665 -61.20813) (xy 201.760974 -61.128778) (xy 201.681622 -61.032087) (xy 201.622657 -60.921773) (xy 201.586347 -60.802075) + (xy 201.574087 -60.677593) (xy 201.574087 -59.952482) (xy 201.458954 -60.029411) (xy 201.070408 -60.190352) (xy 200.657931 -60.272399) + (xy 200.237373 -60.272399) (xy 199.824896 -60.190352) (xy 199.43635 -60.029411) (xy 199.086669 -59.795762) (xy 198.789289 -59.498382) + (xy 198.55564 -59.148701) (xy 198.394699 -58.760155) (xy 198.312652 -58.347678) (xy 176.092189 -58.347678) (xy 187.379837 -63.138998) + (xy 187.466489 -63.166153) (xy 187.522095 -63.172193) (xy 187.577815 -63.167319) (xy 187.631532 -63.151713) (xy 187.681185 -63.125975) + (xy 187.724903 -63.091075) (xy 187.761003 -63.048357) (xy 187.803943 -62.970891) (xy 188.559881 -61.190008) (xy 188.570343 -61.156574) + (xy 188.587126 -61.125823) (xy 188.587131 -61.125812) (xy 188.637344 -61.033811) (xy 188.719654 -60.935282) (xy 188.72701 -60.926477) + (xy 188.746485 -60.910777) (xy 188.83589 -60.8387) (xy 188.959805 -60.77385) (xy 189.09399 -60.734421) (xy 189.233288 -60.721928) + (xy 189.372348 -60.73685) (xy 189.505824 -60.778615) (xy 189.536592 -60.795408) (xy 206.041595 -67.801365) (xy 206.128275 -67.828529) + (xy 206.18388 -67.834569) (xy 206.239601 -67.829694) (xy 206.293316 -67.814089) (xy 206.34297 -67.788351) (xy 206.386686 -67.753452) + (xy 206.422789 -67.71073) (xy 206.465733 -67.633257) (xy 215.45427 -46.457587) (xy 215.45428 -46.457569) (xy 221.315063 -32.650426) + (xy 221.315068 -32.650416) (xy 230.302053 -11.478403) (xy 230.302063 -11.478385) (xy 237.698753 5.94713) (xy 237.725911 6.033791) + (xy 237.731951 6.089397) (xy 237.727076 6.145118) (xy 237.711471 6.198831) (xy 237.685732 6.248489) (xy 237.650836 6.292202) + (xy 237.608115 6.328304) (xy 237.530638 6.37125) (xy 216.419044 15.332591) (xy 216.332366 15.359754) (xy 216.276764 15.365794) + (xy 216.22104 15.360918) (xy 216.167327 15.345313) (xy 216.117669 15.319574) (xy 216.073956 15.284678) (xy 216.037854 15.241957) + (xy 215.994908 15.16448) (xy 215.23898 13.383626) (xy 215.228513 13.350174) (xy 215.161511 13.227411) (xy 215.071846 13.120077) + (xy 214.962965 13.0323) (xy 214.83905 12.96745) (xy 214.704865 12.928021) (xy 214.676622 12.925488) (xy 214.565568 12.915528) + (xy 214.565567 12.915528) (xy 214.426507 12.93045) (xy 214.378824 12.94537) (xy 214.293032 12.972215) (xy 214.262268 12.989006) + (xy 197.757258 19.994968) (xy 197.670581 20.022131) (xy 197.614979 20.028171) (xy 197.559255 20.023295) (xy 197.505542 20.00769) + (xy 197.455884 19.981951) (xy 197.412171 19.947055) (xy 197.376069 19.904334) (xy 197.333127 19.826864) (xy 195.795732 16.204993) + (xy 195.785265 16.171541) (xy 195.718263 16.048778) (xy 195.628598 15.941444) (xy 195.519717 15.853667) (xy 195.395802 15.788817) + (xy 195.261617 15.749388) (xy 195.197616 15.743648) (xy 195.12232 15.736895) (xy 195.122319 15.736895) (xy 194.983259 15.751817) + (xy 194.969789 15.756032) (xy 194.849784 15.793582) (xy 194.81902 15.810373) (xy 182.916673 20.86262) (xy 182.883221 20.873087) + (xy 182.761226 20.93967) (xy 182.760458 20.940089) (xy 182.653124 21.029754) (xy 182.565347 21.138635) (xy 182.500497 21.26255) + (xy 182.461068 21.396735) (xy 182.448575 21.536032) (xy 182.463497 21.675092) (xy 182.505262 21.808568) (xy 182.522055 21.839336) + (xy 184.05778 25.457281) (xy 184.084941 25.543951) (xy 184.090981 25.599557) (xy 184.086106 25.655278) (xy 184.070501 25.708991) + (xy 184.044762 25.758649) (xy 184.009866 25.802362) (xy 183.967145 25.838464) (xy 183.889671 25.881408) (xy 167.380736 32.889036) + (xy 167.347284 32.899503) (xy 167.237195 32.959588) (xy 167.224521 32.966505) (xy 167.117187 33.05617) (xy 167.02941 33.165051) + (xy 166.96456 33.288966) (xy 166.925131 33.423151) (xy 166.912638 33.562448) (xy 166.92756 33.701508) (xy 166.969325 33.834984) + (xy 166.986118 33.865752) (xy 168.912574 38.404201) (xy 168.939735 38.490871) (xy 168.945775 38.546477) (xy 168.9409 38.602198) + (xy 168.925295 38.655911) (xy 168.899556 38.705569) (xy 168.86466 38.749282) (xy 168.821939 38.785384) (xy 168.744465 38.828328) + (xy 147.632869 47.789671) (xy 147.546191 47.816834) (xy 147.490589 47.822874) (xy 147.434865 47.817998) (xy 147.381152 47.802393) + (xy 147.331494 47.776654) (xy 147.287781 47.741758) (xy 147.251679 47.699037) (xy 147.208733 47.62156) (xy 143.717684 39.397166) + (xy 143.707219 39.363721) (xy 143.67712 39.308571) (xy 143.640218 39.240958) (xy 143.550553 39.133624) (xy 143.441672 39.045847) + (xy 143.317757 38.980997) (xy 143.183572 38.941568) (xy 143.044275 38.929075) (xy 143.044274 38.929075) (xy 142.905214 38.943997) + (xy 142.834723 38.966054) (xy 142.771739 38.985762) (xy 142.740978 39.002551) (xy 126.235965 46.008514) (xy 126.149287 46.035677) + (xy 126.093685 46.041717) (xy 126.037961 46.036841) (xy 125.984248 46.021236) (xy 125.93459 45.995497) (xy 125.890877 45.960601) + (xy 125.854775 45.91788) (xy 125.811831 45.840406) (xy 119.026925 29.856171) (xy 122.755773 29.856171) (xy 122.755773 32.356171) + (xy 122.768033 32.480653) (xy 122.804343 32.600351) (xy 122.863308 32.710665) (xy 122.94266 32.807356) (xy 123.039351 32.886708) + (xy 123.149665 32.945673) (xy 123.269363 32.981983) (xy 123.393845 32.994243) (xy 124.014519 32.994243) (xy 124.033871 33.030447) + (xy 124.105046 33.117173) (xy 124.128845 33.146172) (xy 124.157843 33.16997) (xy 128.266009 37.278137) (xy 128.289807 37.307135) + (xy 128.405532 37.402108) (xy 128.537561 37.47268) (xy 128.680822 37.516137) (xy 128.792475 37.527134) (xy 128.792484 37.527134) + (xy 128.829807 37.53081) (xy 128.86713 37.527134) (xy 129.228158 37.527134) (xy 129.39652 37.779106) (xy 129.61764 38.000226) + (xy 129.877649 38.173958) (xy 130.166555 38.293627) (xy 130.473257 38.354634) (xy 130.785967 38.354634) (xy 131.092669 38.293627) + (xy 131.381575 38.173958) (xy 131.641584 38.000226) (xy 131.862704 37.779106) (xy 132.036436 37.519097) (xy 132.054153 37.476325) + (xy 132.066169 37.47268) (xy 132.198198 37.402108) (xy 132.313923 37.307135) (xy 132.336427 37.279714) (xy 132.443681 37.289334) + (xy 132.568051 37.275988) (xy 132.687427 37.238634) (xy 133.515882 36.886976) (xy 133.625678 36.827052) (xy 133.721673 36.746859) + (xy 133.800179 36.649479) (xy 133.858178 36.538654) (xy 133.893442 36.418644) (xy 133.904616 36.29406) (xy 133.89127 36.16969) + (xy 133.853916 36.050314) (xy 133.385039 34.945708) (xy 133.325115 34.835912) (xy 133.244922 34.739917) (xy 133.147542 34.661411) + (xy 133.036717 34.603412) (xy 132.916707 34.568148) (xy 132.792123 34.556974) (xy 132.667753 34.57032) (xy 132.548377 34.607674) + (xy 131.719922 34.959332) (xy 131.610126 35.019256) (xy 131.514131 35.099449) (xy 131.435625 35.196829) (xy 131.377626 35.307654) + (xy 131.364261 35.353138) (xy 131.092669 35.240641) (xy 130.785967 35.179634) (xy 130.473257 35.179634) (xy 130.166555 35.240641) + (xy 129.877649 35.36031) (xy 129.61764 35.534042) (xy 129.39652 35.755162) (xy 129.228158 36.007134) (xy 129.14461 36.007134) + (xy 127.400312 34.262836) (xy 134.368854 34.262836) (xy 134.3822 34.387206) (xy 134.419554 34.506582) (xy 134.888431 35.611188) + (xy 134.948355 35.720984) (xy 135.028548 35.816979) (xy 135.125928 35.895485) (xy 135.236753 35.953484) (xy 135.356763 35.988748) + (xy 135.481347 35.999922) (xy 135.605717 35.986576) (xy 135.725093 35.949222) (xy 136.553548 35.597564) (xy 136.663344 35.53764) + (xy 136.759339 35.457447) (xy 136.768983 35.445484) (xy 136.823038 35.489062) (xy 136.933863 35.547061) (xy 137.053873 35.582325) + (xy 137.178457 35.593499) (xy 137.302827 35.580153) (xy 137.422204 35.542799) (xy 139.058862 34.848079) (xy 139.168657 34.788155) + (xy 139.264652 34.707962) (xy 139.343158 34.610582) (xy 139.401157 34.499757) (xy 139.436421 34.379747) (xy 139.447595 34.255163) + (xy 139.434249 34.130793) (xy 139.396895 34.011416) (xy 138.702175 32.374758) (xy 138.642251 32.264963) (xy 138.562058 32.168968) + (xy 138.464678 32.090462) (xy 138.353853 32.032463) (xy 138.233843 31.997199) (xy 138.109259 31.986025) (xy 137.984889 31.999371) + (xy 137.865512 32.036725) (xy 136.228854 32.731445) (xy 136.119059 32.791369) (xy 136.023064 32.871562) (xy 135.944558 32.968942) + (xy 135.886559 33.079767) (xy 135.851295 33.199777) (xy 135.845092 33.268935) (xy 135.829789 33.267562) (xy 135.705419 33.280908) + (xy 135.586043 33.318262) (xy 134.757588 33.66992) (xy 134.647792 33.729844) (xy 134.551797 33.810037) (xy 134.473291 33.907417) + (xy 134.415292 34.018242) (xy 134.380028 34.138252) (xy 134.368854 34.262836) (xy 127.400312 34.262836) (xy 127.265254 34.127778) + (xy 127.360566 34.146737) (xy 127.653262 34.146737) (xy 127.940335 34.089635) (xy 128.210752 33.977625) (xy 128.45412 33.815011) + (xy 128.661088 33.608043) (xy 128.823702 33.364675) (xy 128.935712 33.094258) (xy 128.992814 32.807185) (xy 128.992814 32.514489) + (xy 128.935712 32.227416) (xy 128.823702 31.956999) (xy 128.670964 31.728411) (xy 128.6948 31.718538) (xy 129.044481 31.484889) + (xy 129.341861 31.187509) (xy 129.554179 30.869752) (xy 129.554179 30.934847) (xy 129.655206 31.442745) (xy 129.853378 31.921174) + (xy 130.141079 32.351749) (xy 130.507253 32.717923) (xy 130.937828 33.005624) (xy 131.416257 33.203796) (xy 131.924155 33.304823) + (xy 132.442003 33.304823) (xy 132.949901 33.203796) (xy 133.42833 33.005624) (xy 133.858905 32.717923) (xy 134.225079 32.351749) + (xy 134.51278 31.921174) (xy 134.630352 31.637328) (xy 144.152677 31.637328) (xy 144.152677 34.137328) (xy 144.164937 34.26181) + (xy 144.201247 34.381508) (xy 144.260212 34.491822) (xy 144.339564 34.588513) (xy 144.436255 34.667865) (xy 144.546569 34.72683) + (xy 144.666267 34.76314) (xy 144.790749 34.7754) (xy 145.411423 34.7754) (xy 145.430775 34.811604) (xy 145.50195 34.89833) + (xy 145.525749 34.927329) (xy 145.554747 34.951127) (xy 149.662913 39.059294) (xy 149.686711 39.088292) (xy 149.802436 39.183265) + (xy 149.934465 39.253837) (xy 150.077726 39.297294) (xy 150.189379 39.308291) (xy 150.189388 39.308291) (xy 150.226711 39.311967) + (xy 150.264034 39.308291) (xy 150.625061 39.308291) (xy 150.793423 39.560263) (xy 151.014543 39.781383) (xy 151.274552 39.955115) + (xy 151.563458 40.074784) (xy 151.87016 40.135791) (xy 152.18287 40.135791) (xy 152.489572 40.074784) (xy 152.778478 39.955115) + (xy 153.038487 39.781383) (xy 153.259607 39.560263) (xy 153.433339 39.300254) (xy 153.451056 39.257482) (xy 153.463072 39.253837) + (xy 153.595101 39.183265) (xy 153.710826 39.088292) (xy 153.73333 39.060871) (xy 153.840584 39.070491) (xy 153.964954 39.057145) + (xy 154.08433 39.019791) (xy 154.912785 38.668133) (xy 155.022581 38.608209) (xy 155.118576 38.528016) (xy 155.197082 38.430636) + (xy 155.255081 38.319811) (xy 155.290345 38.199801) (xy 155.301519 38.075217) (xy 155.288173 37.950847) (xy 155.250819 37.831471) + (xy 154.781942 36.726865) (xy 154.722018 36.617069) (xy 154.641825 36.521074) (xy 154.544445 36.442568) (xy 154.43362 36.384569) + (xy 154.31361 36.349305) (xy 154.189026 36.338131) (xy 154.064656 36.351477) (xy 153.94528 36.388831) (xy 153.116825 36.740489) + (xy 153.007029 36.800413) (xy 152.911034 36.880606) (xy 152.832528 36.977986) (xy 152.774529 37.088811) (xy 152.761164 37.134295) + (xy 152.489572 37.021798) (xy 152.18287 36.960791) (xy 151.87016 36.960791) (xy 151.563458 37.021798) (xy 151.274552 37.141467) + (xy 151.014543 37.315199) (xy 150.793423 37.536319) (xy 150.625061 37.788291) (xy 150.541514 37.788291) (xy 148.797216 36.043993) + (xy 155.765757 36.043993) (xy 155.779103 36.168363) (xy 155.816457 36.287739) (xy 156.285334 37.392345) (xy 156.345258 37.502141) + (xy 156.425451 37.598136) (xy 156.522831 37.676642) (xy 156.633656 37.734641) (xy 156.753666 37.769905) (xy 156.87825 37.781079) + (xy 157.00262 37.767733) (xy 157.121996 37.730379) (xy 157.950451 37.378721) (xy 158.060247 37.318797) (xy 158.156242 37.238604) + (xy 158.165886 37.226641) (xy 158.219941 37.270219) (xy 158.330766 37.328218) (xy 158.450776 37.363482) (xy 158.57536 37.374656) + (xy 158.69973 37.36131) (xy 158.819107 37.323956) (xy 160.455765 36.629236) (xy 160.56556 36.569312) (xy 160.661555 36.489119) + (xy 160.740061 36.391739) (xy 160.79806 36.280914) (xy 160.833324 36.160904) (xy 160.844498 36.03632) (xy 160.831152 35.91195) + (xy 160.793798 35.792573) (xy 160.099078 34.155915) (xy 160.039154 34.04612) (xy 159.958961 33.950125) (xy 159.861581 33.871619) + (xy 159.750756 33.81362) (xy 159.630746 33.778356) (xy 159.506162 33.767182) (xy 159.381792 33.780528) (xy 159.262415 33.817882) + (xy 157.625757 34.512602) (xy 157.515962 34.572526) (xy 157.419967 34.652719) (xy 157.341461 34.750099) (xy 157.283462 34.860924) + (xy 157.248198 34.980934) (xy 157.241995 35.050092) (xy 157.226692 35.048719) (xy 157.102322 35.062065) (xy 156.982946 35.099419) + (xy 156.154491 35.451077) (xy 156.044695 35.511001) (xy 155.9487 35.591194) (xy 155.870194 35.688574) (xy 155.812195 35.799399) + (xy 155.776931 35.919409) (xy 155.765757 36.043993) (xy 148.797216 36.043993) (xy 148.662158 35.908935) (xy 148.75747 35.927894) + (xy 149.050166 35.927894) (xy 149.337239 35.870792) (xy 149.607656 35.758782) (xy 149.851024 35.596168) (xy 150.057992 35.3892) + (xy 150.220606 35.145832) (xy 150.332616 34.875415) (xy 150.389718 34.588342) (xy 150.389718 34.295646) (xy 150.332616 34.008573) + (xy 150.220606 33.738156) (xy 150.067868 33.509568) (xy 150.091704 33.499695) (xy 150.441385 33.266046) (xy 150.738765 32.968666) + (xy 150.951083 32.650909) (xy 150.951083 32.716004) (xy 151.05211 33.223902) (xy 151.250282 33.702331) (xy 151.537983 34.132906) + (xy 151.904157 34.49908) (xy 152.334732 34.786781) (xy 152.813161 34.984953) (xy 153.321059 35.08598) (xy 153.838907 35.08598) + (xy 154.346805 34.984953) (xy 154.825234 34.786781) (xy 155.255809 34.49908) (xy 155.621983 34.132906) (xy 155.909684 33.702331) + (xy 156.107856 33.223902) (xy 156.208883 32.716004) (xy 156.208883 32.198156) (xy 156.107856 31.690258) (xy 155.909684 31.211829) + (xy 155.621983 30.781254) (xy 155.255809 30.41508) (xy 155.122219 30.325818) (xy 156.770248 30.325818) (xy 156.770248 30.618514) + (xy 156.82735 30.905587) (xy 156.93936 31.176004) (xy 157.101974 31.419372) (xy 157.308942 31.62634) (xy 157.55231 31.788954) + (xy 157.822727 31.900964) (xy 158.1098 31.958066) (xy 158.402496 31.958066) (xy 158.689569 31.900964) (xy 158.959986 31.788954) + (xy 159.203354 31.62634) (xy 159.410322 31.419372) (xy 159.572936 31.176004) (xy 159.684946 30.905587) (xy 159.742048 30.618514) + (xy 159.742048 30.325818) (xy 159.684946 30.038745) (xy 159.572936 29.768328) (xy 159.410322 29.52496) (xy 159.203354 29.317992) + (xy 158.959986 29.155378) (xy 158.689569 29.043368) (xy 158.402496 28.986266) (xy 158.1098 28.986266) (xy 157.822727 29.043368) + (xy 157.55231 29.155378) (xy 157.308942 29.317992) (xy 157.101974 29.52496) (xy 156.93936 29.768328) (xy 156.82735 30.038745) + (xy 156.770248 30.325818) (xy 155.122219 30.325818) (xy 154.825234 30.127379) (xy 154.346805 29.929207) (xy 153.838907 29.82818) + (xy 153.321059 29.82818) (xy 152.813161 29.929207) (xy 152.334732 30.127379) (xy 151.904157 30.41508) (xy 151.537983 30.781254) + (xy 151.250282 31.211829) (xy 151.20178 31.328923) (xy 151.133355 30.984927) (xy 150.972414 30.596381) (xy 150.738765 30.2467) + (xy 150.441385 29.94932) (xy 150.091704 29.715671) (xy 149.703158 29.55473) (xy 149.290681 29.472683) (xy 148.870123 29.472683) + (xy 148.457646 29.55473) (xy 148.0691 29.715671) (xy 147.719419 29.94932) (xy 147.422039 30.2467) (xy 147.18839 30.596381) + (xy 147.027449 30.984927) (xy 147.024599 30.999256) (xy 144.790749 30.999256) (xy 144.666267 31.011516) (xy 144.546569 31.047826) + (xy 144.436255 31.106791) (xy 144.339564 31.186143) (xy 144.260212 31.282834) (xy 144.201247 31.393148) (xy 144.164937 31.512846) + (xy 144.152677 31.637328) (xy 134.630352 31.637328) (xy 134.710952 31.442745) (xy 134.811979 30.934847) (xy 134.811979 30.416999) + (xy 134.710952 29.909101) (xy 134.51278 29.430672) (xy 134.225079 29.000097) (xy 133.858905 28.633923) (xy 133.725315 28.544661) + (xy 135.373344 28.544661) (xy 135.373344 28.837357) (xy 135.430446 29.12443) (xy 135.542456 29.394847) (xy 135.70507 29.638215) + (xy 135.912038 29.845183) (xy 136.155406 30.007797) (xy 136.425823 30.119807) (xy 136.712896 30.176909) (xy 137.005592 30.176909) + (xy 137.292665 30.119807) (xy 137.563082 30.007797) (xy 137.80645 29.845183) (xy 138.013418 29.638215) (xy 138.176032 29.394847) + (xy 138.288042 29.12443) (xy 138.345144 28.837357) (xy 138.345144 28.544661) (xy 138.288042 28.257588) (xy 138.176032 27.987171) + (xy 138.013418 27.743803) (xy 137.80645 27.536835) (xy 137.563082 27.374221) (xy 137.292665 27.262211) (xy 137.005592 27.205109) + (xy 136.712896 27.205109) (xy 136.425823 27.262211) (xy 136.155406 27.374221) (xy 135.912038 27.536835) (xy 135.70507 27.743803) + (xy 135.542456 27.987171) (xy 135.430446 28.257588) (xy 135.373344 28.544661) (xy 133.725315 28.544661) (xy 133.42833 28.346222) + (xy 132.949901 28.14805) (xy 132.442003 28.047023) (xy 131.924155 28.047023) (xy 131.416257 28.14805) (xy 130.937828 28.346222) + (xy 130.507253 28.633923) (xy 130.141079 29.000097) (xy 129.853378 29.430672) (xy 129.804876 29.547766) (xy 129.736451 29.20377) + (xy 129.57551 28.815224) (xy 129.341861 28.465543) (xy 129.044481 28.168163) (xy 128.6948 27.934514) (xy 128.306254 27.773573) + (xy 127.893777 27.691526) (xy 127.473219 27.691526) (xy 127.060742 27.773573) (xy 126.672196 27.934514) (xy 126.322515 28.168163) + (xy 126.025135 28.465543) (xy 125.791486 28.815224) (xy 125.630545 29.20377) (xy 125.627695 29.218099) (xy 123.393845 29.218099) + (xy 123.269363 29.230359) (xy 123.149665 29.266669) (xy 123.039351 29.325634) (xy 122.94266 29.404986) (xy 122.863308 29.501677) + (xy 122.804343 29.611991) (xy 122.768033 29.731689) (xy 122.755773 29.856171) (xy 119.026925 29.856171) (xy 116.848575 24.724301) + (xy 116.808072 24.601042) (xy 116.790142 24.541936) (xy 116.724214 24.418593) (xy 116.635489 24.310481) (xy 116.527377 24.221756) + (xy 116.404034 24.155828) (xy 116.270198 24.115229) (xy 116.165891 24.104956) (xy 106.200267 24.104956) (xy 106.09596 24.115229) + (xy 105.962124 24.155828) (xy 105.838781 24.221756) (xy 105.730669 24.310481) (xy 105.641944 24.418593) (xy 105.576016 24.541936) + (xy 105.558075 24.60108) (xy 105.517591 24.724278) (xy 96.555995 45.836478) (xy 96.512515 45.916227) (xy 96.476711 45.959201) + (xy 96.433241 45.994401) (xy 96.383767 46.020486) (xy 96.330161 46.036467) (xy 96.274475 46.04173) (xy 96.218829 46.036078) + (xy 96.134133 46.010184) (xy 79.625187 39.002555) (xy 79.594419 38.985762) (xy 79.460943 38.943997) (xy 79.321883 38.929075) + (xy 79.182585 38.941568) (xy 79.0484 38.980997) (xy 78.924485 39.045847) (xy 78.815604 39.133625) (xy 78.725939 39.240958) + (xy 78.675726 39.332959) (xy 78.675721 39.33297) (xy 78.658938 39.363721) (xy 78.648476 39.397155) (xy 75.159091 47.617635) + (xy 75.115611 47.697384) (xy 75.079807 47.740358) (xy 75.036337 47.775558) (xy 74.986863 47.801643) (xy 74.933257 47.817624) + (xy 74.877571 47.822887) (xy 74.821925 47.817235) (xy 74.737229 47.791341) (xy 53.625621 38.829996) (xy 53.545872 38.786516) + (xy 53.502898 38.750712) (xy 53.467698 38.707242) (xy 53.441613 38.657768) (xy 53.425632 38.604162) (xy 53.420369 38.548476) + (xy 53.426021 38.49283) (xy 53.45192 38.408117) (xy 53.593227 38.075217) (xy 67.064639 38.075217) (xy 67.075813 38.199801) + (xy 67.111077 38.319811) (xy 67.169076 38.430636) (xy 67.247582 38.528016) (xy 67.343577 38.608209) (xy 67.453373 38.668133) + (xy 68.281828 39.019791) (xy 68.401204 39.057145) (xy 68.525574 39.070491) (xy 68.540877 39.069118) (xy 68.54708 39.138276) + (xy 68.582344 39.258286) (xy 68.640343 39.369111) (xy 68.718849 39.466491) (xy 68.814844 39.546684) (xy 68.924639 39.606608) + (xy 70.561297 40.301328) (xy 70.680674 40.338682) (xy 70.805044 40.352028) (xy 70.929628 40.340854) (xy 71.049638 40.30559) + (xy 71.160463 40.247591) (xy 71.257843 40.169085) (xy 71.338036 40.07309) (xy 71.39796 39.963295) (xy 72.09268 38.326637) + (xy 72.130034 38.20726) (xy 72.14338 38.08289) (xy 72.132206 37.958306) (xy 72.096942 37.838296) (xy 72.038943 37.727471) + (xy 71.960437 37.630091) (xy 71.864442 37.549898) (xy 71.754647 37.489974) (xy 70.117989 36.795254) (xy 69.998612 36.7579) + (xy 69.874242 36.744554) (xy 69.749658 36.755728) (xy 69.629648 36.790992) (xy 69.518823 36.848991) (xy 69.464768 36.892569) + (xy 69.455124 36.880606) (xy 69.359129 36.800413) (xy 69.249333 36.740489) (xy 68.420878 36.388831) (xy 68.301502 36.351477) + (xy 68.177132 36.338131) (xy 68.052548 36.349305) (xy 67.932538 36.384569) (xy 67.821713 36.442568) (xy 67.724333 36.521074) + (xy 67.64414 36.617069) (xy 67.584216 36.726865) (xy 67.115339 37.831471) (xy 67.077985 37.950847) (xy 67.064639 38.075217) + (xy 53.593227 38.075217) (xy 55.380045 33.865742) (xy 55.396832 33.834984) (xy 55.410983 33.789762) (xy 55.438598 33.701509) + (xy 55.45352 33.562449) (xy 55.447892 33.499695) (xy 55.441027 33.42315) (xy 55.401598 33.288965) (xy 55.336748 33.16505) + (xy 55.24897 33.056169) (xy 55.141637 32.966504) (xy 55.049636 32.916291) (xy 55.049625 32.916286) (xy 55.018874 32.899503) + (xy 54.98544 32.889041) (xy 38.480415 25.883076) (xy 38.400666 25.839596) (xy 38.357692 25.803792) (xy 38.322492 25.760322) + (xy 38.296407 25.710848) (xy 38.280426 25.657242) (xy 38.275163 25.601556) (xy 38.280815 25.54591) (xy 38.306714 25.461197) + (xy 38.448022 25.128296) (xy 51.919433 25.128296) (xy 51.930607 25.25288) (xy 51.965871 25.37289) (xy 52.02387 25.483715) + (xy 52.102376 25.581095) (xy 52.198371 25.661288) (xy 52.308167 25.721212) (xy 53.136622 26.07287) (xy 53.255998 26.110224) + (xy 53.380368 26.12357) (xy 53.395671 26.122197) (xy 53.401874 26.191355) (xy 53.437138 26.311365) (xy 53.495137 26.42219) + (xy 53.573643 26.51957) (xy 53.669638 26.599763) (xy 53.779433 26.659687) (xy 55.416091 27.354407) (xy 55.535468 27.391761) + (xy 55.659838 27.405107) (xy 55.784422 27.393933) (xy 55.904432 27.358669) (xy 56.015257 27.30067) (xy 56.112637 27.222164) + (xy 56.19283 27.126169) (xy 56.252754 27.016374) (xy 56.641448 26.100668) (xy 61.343784 26.100668) (xy 61.343784 28.600668) + (xy 61.356044 28.72515) (xy 61.392354 28.844848) (xy 61.451319 28.955162) (xy 61.530671 29.051853) (xy 61.627362 29.131205) + (xy 61.737676 29.19017) (xy 61.857374 29.22648) (xy 61.981856 29.23874) (xy 62.17411 29.23874) (xy 62.174111 34.477141) + (xy 62.092305 34.558947) (xy 61.918573 34.818956) (xy 61.798904 35.107862) (xy 61.737897 35.414564) (xy 61.737897 35.727274) + (xy 61.798904 36.033976) (xy 61.918573 36.322882) (xy 62.092305 36.582891) (xy 62.313425 36.804011) (xy 62.573434 36.977743) + (xy 62.86234 37.097412) (xy 63.169042 37.158419) (xy 63.481752 37.158419) (xy 63.788454 37.097412) (xy 64.060046 36.984915) + (xy 64.073411 37.030399) (xy 64.13141 37.141224) (xy 64.209916 37.238604) (xy 64.305911 37.318797) (xy 64.415707 37.378721) + (xy 65.244162 37.730379) (xy 65.363538 37.767733) (xy 65.487908 37.781079) (xy 65.612492 37.769905) (xy 65.732502 37.734641) + (xy 65.843327 37.676642) (xy 65.940707 37.598136) (xy 66.0209 37.502141) (xy 66.080824 37.392345) (xy 66.547017 36.29406) + (xy 88.461542 36.29406) (xy 88.472716 36.418644) (xy 88.50798 36.538654) (xy 88.565979 36.649479) (xy 88.644485 36.746859) + (xy 88.74048 36.827052) (xy 88.850276 36.886976) (xy 89.678731 37.238634) (xy 89.798107 37.275988) (xy 89.922477 37.289334) + (xy 89.93778 37.287961) (xy 89.943983 37.357119) (xy 89.979247 37.477129) (xy 90.037246 37.587954) (xy 90.115752 37.685334) + (xy 90.211747 37.765527) (xy 90.321542 37.825451) (xy 91.9582 38.520171) (xy 92.077577 38.557525) (xy 92.201947 38.570871) + (xy 92.326531 38.559697) (xy 92.446541 38.524433) (xy 92.557366 38.466434) (xy 92.654746 38.387928) (xy 92.734939 38.291933) + (xy 92.794863 38.182138) (xy 93.489583 36.54548) (xy 93.526937 36.426103) (xy 93.540283 36.301733) (xy 93.529109 36.177149) + (xy 93.493845 36.057139) (xy 93.435846 35.946314) (xy 93.35734 35.848934) (xy 93.261345 35.768741) (xy 93.15155 35.708817) + (xy 91.514892 35.014097) (xy 91.395515 34.976743) (xy 91.271145 34.963397) (xy 91.146561 34.974571) (xy 91.026551 35.009835) + (xy 90.915726 35.067834) (xy 90.861671 35.111412) (xy 90.852027 35.099449) (xy 90.756032 35.019256) (xy 90.646236 34.959332) + (xy 89.817781 34.607674) (xy 89.698405 34.57032) (xy 89.574035 34.556974) (xy 89.449451 34.568148) (xy 89.329441 34.603412) + (xy 89.218616 34.661411) (xy 89.121236 34.739917) (xy 89.041043 34.835912) (xy 88.981119 34.945708) (xy 88.512242 36.050314) + (xy 88.474888 36.16969) (xy 88.461542 36.29406) (xy 66.547017 36.29406) (xy 66.549701 36.287739) (xy 66.587055 36.168363) + (xy 66.600401 36.043993) (xy 66.589227 35.919409) (xy 66.553963 35.799399) (xy 66.495964 35.688574) (xy 66.417458 35.591194) + (xy 66.321463 35.511001) (xy 66.211667 35.451077) (xy 65.383212 35.099419) (xy 65.263836 35.062065) (xy 65.139466 35.048719) + (xy 65.032212 35.058339) (xy 65.009708 35.030918) (xy 64.893983 34.935945) (xy 64.761954 34.865373) (xy 64.749938 34.861728) + (xy 64.732221 34.818956) (xy 64.558489 34.558947) (xy 64.337369 34.337827) (xy 64.07736 34.164095) (xy 63.788454 34.044426) + (xy 63.69411 34.02566) (xy 63.69411 31.904449) (xy 63.963663 31.958066) (xy 64.256359 31.958066) (xy 64.543432 31.900964) + (xy 64.813849 31.788954) (xy 65.057217 31.62634) (xy 65.264185 31.419372) (xy 65.426799 31.176004) (xy 65.538809 30.905587) + (xy 65.588034 30.658114) (xy 65.648754 30.683265) (xy 66.061231 30.765312) (xy 66.481789 30.765312) (xy 66.829228 30.696202) + (xy 66.744176 30.781254) (xy 66.456475 31.211829) (xy 66.258303 31.690258) (xy 66.157276 32.198156) (xy 66.157276 32.716004) + (xy 66.258303 33.223902) (xy 66.456475 33.702331) (xy 66.744176 34.132906) (xy 67.11035 34.49908) (xy 67.540925 34.786781) + (xy 68.019354 34.984953) (xy 68.527252 35.08598) (xy 69.0451 35.08598) (xy 69.552998 34.984953) (xy 70.031427 34.786781) + (xy 70.462002 34.49908) (xy 70.665436 34.295646) (xy 71.976441 34.295646) (xy 71.976441 34.588342) (xy 72.033543 34.875415) + (xy 72.145553 35.145832) (xy 72.308167 35.3892) (xy 72.515135 35.596168) (xy 72.758503 35.758782) (xy 73.02892 35.870792) + (xy 73.315993 35.927894) (xy 73.608689 35.927894) (xy 73.895762 35.870792) (xy 74.166179 35.758782) (xy 74.409547 35.596168) + (xy 74.616515 35.3892) (xy 74.779129 35.145832) (xy 74.891139 34.875415) (xy 74.948241 34.588342) (xy 74.948241 34.295646) + (xy 74.891139 34.008573) (xy 74.779129 33.738156) (xy 74.616515 33.494788) (xy 74.409547 33.28782) (xy 74.166179 33.125206) + (xy 73.895762 33.013196) (xy 73.608689 32.956094) (xy 73.315993 32.956094) (xy 73.02892 33.013196) (xy 72.758503 33.125206) + (xy 72.515135 33.28782) (xy 72.308167 33.494788) (xy 72.145553 33.738156) (xy 72.033543 34.008573) (xy 71.976441 34.295646) + (xy 70.665436 34.295646) (xy 70.828176 34.132906) (xy 71.115877 33.702331) (xy 71.314049 33.223902) (xy 71.415076 32.716004) + (xy 71.415076 32.198156) (xy 71.314049 31.690258) (xy 71.115877 31.211829) (xy 70.828176 30.781254) (xy 70.462002 30.41508) + (xy 70.031427 30.127379) (xy 69.552998 29.929207) (xy 69.0451 29.82818) (xy 68.527252 29.82818) (xy 68.019354 29.929207) + (xy 67.952992 29.956695) (xy 68.163522 29.641614) (xy 68.324463 29.253068) (xy 68.40651 28.840591) (xy 68.40651 28.563093) + (xy 70.974172 28.563093) (xy 70.974172 28.983651) (xy 71.056219 29.396128) (xy 71.21716 29.784674) (xy 71.450809 30.134355) + (xy 71.748189 30.431735) (xy 72.09787 30.665384) (xy 72.486416 30.826325) (xy 72.898893 30.908372) (xy 73.319451 30.908372) + (xy 73.731928 30.826325) (xy 74.120474 30.665384) (xy 74.235607 30.588455) (xy 74.235607 31.313567) (xy 74.247867 31.438049) + (xy 74.284177 31.557747) (xy 74.343142 31.668061) (xy 74.422494 31.764752) (xy 74.519185 31.844104) (xy 74.629499 31.903069) + (xy 74.749197 31.939379) (xy 74.873679 31.951639) (xy 77.423679 31.951639) (xy 77.548161 31.939379) (xy 77.667859 31.903069) + (xy 77.778173 31.844104) (xy 77.874864 31.764752) (xy 77.954216 31.668061) (xy 78.013181 31.557747) (xy 78.049491 31.438049) + (xy 78.061751 31.313567) (xy 78.061751 29.225296) (xy 82.740687 24.546361) (xy 82.740687 26.819511) (xy 82.752947 26.943993) + (xy 82.789257 27.063691) (xy 82.848222 27.174005) (xy 82.927574 27.270696) (xy 83.024265 27.350048) (xy 83.134579 27.409013) + (xy 83.254277 27.445323) (xy 83.378759 27.457583) (xy 83.571013 27.457583) (xy 83.571014 32.695984) (xy 83.489208 32.77779) + (xy 83.315476 33.037799) (xy 83.195807 33.326705) (xy 83.1348 33.633407) (xy 83.1348 33.946117) (xy 83.195807 34.252819) + (xy 83.315476 34.541725) (xy 83.489208 34.801734) (xy 83.710328 35.022854) (xy 83.970337 35.196586) (xy 84.259243 35.316255) + (xy 84.565945 35.377262) (xy 84.878655 35.377262) (xy 85.185357 35.316255) (xy 85.456949 35.203758) (xy 85.470314 35.249242) + (xy 85.528313 35.360067) (xy 85.606819 35.457447) (xy 85.702814 35.53764) (xy 85.81261 35.597564) (xy 86.641065 35.949222) + (xy 86.760441 35.986576) (xy 86.884811 35.999922) (xy 87.009395 35.988748) (xy 87.129405 35.953484) (xy 87.24023 35.895485) + (xy 87.33761 35.816979) (xy 87.417803 35.720984) (xy 87.477727 35.611188) (xy 87.946604 34.506582) (xy 87.983958 34.387206) + (xy 87.997304 34.262836) (xy 87.98613 34.138252) (xy 87.950866 34.018242) (xy 87.892867 33.907417) (xy 87.814361 33.810037) + (xy 87.718366 33.729844) (xy 87.60857 33.66992) (xy 86.780115 33.318262) (xy 86.660739 33.280908) (xy 86.536369 33.267562) + (xy 86.429115 33.277182) (xy 86.406611 33.249761) (xy 86.290886 33.154788) (xy 86.158857 33.084216) (xy 86.146841 33.080571) + (xy 86.129124 33.037799) (xy 85.955392 32.77779) (xy 85.734272 32.55667) (xy 85.474263 32.382938) (xy 85.185357 32.263269) + (xy 85.091013 32.244503) (xy 85.091013 30.123292) (xy 85.360566 30.176909) (xy 85.653262 30.176909) (xy 85.940335 30.119807) + (xy 86.210752 30.007797) (xy 86.45412 29.845183) (xy 86.661088 29.638215) (xy 86.823702 29.394847) (xy 86.935712 29.12443) + (xy 86.984937 28.876957) (xy 87.045657 28.902108) (xy 87.458134 28.984155) (xy 87.878692 28.984155) (xy 88.226131 28.915045) + (xy 88.141079 29.000097) (xy 87.853378 29.430672) (xy 87.655206 29.909101) (xy 87.554179 30.416999) (xy 87.554179 30.934847) + (xy 87.655206 31.442745) (xy 87.853378 31.921174) (xy 88.141079 32.351749) (xy 88.507253 32.717923) (xy 88.937828 33.005624) + (xy 89.416257 33.203796) (xy 89.924155 33.304823) (xy 90.442003 33.304823) (xy 90.949901 33.203796) (xy 91.42833 33.005624) + (xy 91.858905 32.717923) (xy 92.062339 32.514489) (xy 93.373344 32.514489) (xy 93.373344 32.807185) (xy 93.430446 33.094258) + (xy 93.542456 33.364675) (xy 93.70507 33.608043) (xy 93.912038 33.815011) (xy 94.155406 33.977625) (xy 94.425823 34.089635) + (xy 94.712896 34.146737) (xy 95.005592 34.146737) (xy 95.292665 34.089635) (xy 95.563082 33.977625) (xy 95.80645 33.815011) + (xy 96.013418 33.608043) (xy 96.176032 33.364675) (xy 96.288042 33.094258) (xy 96.345144 32.807185) (xy 96.345144 32.514489) + (xy 96.288042 32.227416) (xy 96.176032 31.956999) (xy 96.013418 31.713631) (xy 95.80645 31.506663) (xy 95.563082 31.344049) + (xy 95.292665 31.232039) (xy 95.005592 31.174937) (xy 94.712896 31.174937) (xy 94.425823 31.232039) (xy 94.155406 31.344049) + (xy 93.912038 31.506663) (xy 93.70507 31.713631) (xy 93.542456 31.956999) (xy 93.430446 32.227416) (xy 93.373344 32.514489) + (xy 92.062339 32.514489) (xy 92.225079 32.351749) (xy 92.51278 31.921174) (xy 92.710952 31.442745) (xy 92.811979 30.934847) + (xy 92.811979 30.416999) (xy 92.710952 29.909101) (xy 92.51278 29.430672) (xy 92.225079 29.000097) (xy 91.858905 28.633923) + (xy 91.42833 28.346222) (xy 90.949901 28.14805) (xy 90.442003 28.047023) (xy 89.924155 28.047023) (xy 89.416257 28.14805) + (xy 89.349895 28.175538) (xy 89.560425 27.860457) (xy 89.721366 27.471911) (xy 89.803413 27.059434) (xy 89.803413 26.638876) + (xy 89.721366 26.226399) (xy 89.560425 25.837853) (xy 89.326776 25.488172) (xy 89.029396 25.190792) (xy 88.679715 24.957143) + (xy 88.291169 24.796202) (xy 87.878692 24.714155) (xy 87.458134 24.714155) (xy 87.045657 24.796202) (xy 86.657111 24.957143) + (xy 86.566831 25.017466) (xy 86.566831 24.319511) (xy 86.554571 24.195029) (xy 86.518261 24.075331) (xy 86.459296 23.965017) + (xy 86.379944 23.868326) (xy 86.283253 23.788974) (xy 86.172939 23.730009) (xy 86.053241 23.693699) (xy 85.928759 23.681439) + (xy 83.605609 23.681439) (xy 84.083574 23.203474) (xy 84.112571 23.179677) (xy 84.207544 23.063952) (xy 84.278116 22.931923) + (xy 84.321573 22.788662) (xy 84.33257 22.677009) (xy 84.33257 22.677) (xy 84.336246 22.639677) (xy 84.33257 22.602354) + (xy 84.33257 14.462047) (xy 84.38584 14.462047) (xy 84.802696 14.878904) (xy 84.82649 14.907897) (xy 84.855483 14.931691) + (xy 84.855487 14.931695) (xy 84.906379 14.97346) (xy 84.942215 15.00287) (xy 85.074244 15.073442) (xy 85.217505 15.116899) + (xy 85.329158 15.127896) (xy 85.329167 15.127896) (xy 85.36649 15.131572) (xy 85.403813 15.127896) (xy 102.253269 15.127896) + (xy 102.389175 15.331294) (xy 102.599681 15.5418) (xy 102.743499 15.637896) (xy 102.599681 15.733992) (xy 102.389175 15.944498) + (xy 102.223782 16.192027) (xy 102.109857 16.467066) (xy 102.051779 16.759046) (xy 102.051779 17.056746) (xy 102.099503 17.296671) + (xy 97.034585 22.361589) (xy 97.005581 22.385392) (xy 96.975292 22.4223) (xy 96.910608 22.501117) (xy 96.866575 22.583497) + (xy 96.840036 22.633147) (xy 96.796579 22.776408) (xy 96.785582 22.888061) (xy 96.785582 22.888071) (xy 96.781906 22.925393) + (xy 96.785582 22.962716) (xy 96.785583 26.394338) (xy 96.563977 26.394338) (xy 96.559028 26.369459) (xy 96.398087 25.980913) + (xy 96.164438 25.631232) (xy 95.867058 25.333852) (xy 95.517377 25.100203) (xy 95.128831 24.939262) (xy 94.716354 24.857215) + (xy 94.295796 24.857215) (xy 93.883319 24.939262) (xy 93.494773 25.100203) (xy 93.145092 25.333852) (xy 92.847712 25.631232) + (xy 92.614063 25.980913) (xy 92.453122 26.369459) (xy 92.371075 26.781936) (xy 92.371075 27.202494) (xy 92.453122 27.614971) + (xy 92.614063 28.003517) (xy 92.847712 28.353198) (xy 93.145092 28.650578) (xy 93.494773 28.884227) (xy 93.883319 29.045168) + (xy 94.295796 29.127215) (xy 94.716354 29.127215) (xy 95.128831 29.045168) (xy 95.517377 28.884227) (xy 95.63251 28.807298) + (xy 95.63251 29.53241) (xy 95.64477 29.656892) (xy 95.68108 29.77659) (xy 95.740045 29.886904) (xy 95.819397 29.983595) + (xy 95.916088 30.062947) (xy 96.026402 30.121912) (xy 96.1461 30.158222) (xy 96.270582 30.170482) (xy 98.820582 30.170482) + (xy 98.945064 30.158222) (xy 99.064762 30.121912) (xy 99.175076 30.062947) (xy 99.271767 29.983595) (xy 99.351119 29.886904) + (xy 99.410084 29.77659) (xy 99.446394 29.656892) (xy 99.458654 29.53241) (xy 99.458654 27.03241) (xy 99.446394 26.907928) + (xy 99.410084 26.78823) (xy 99.351119 26.677916) (xy 99.271767 26.581225) (xy 99.175076 26.501873) (xy 99.064762 26.442908) + (xy 98.945064 26.406598) (xy 98.820582 26.394338) (xy 98.305582 26.394338) (xy 98.305582 23.240194) (xy 102.051779 19.493998) + (xy 102.051779 19.596746) (xy 102.109857 19.888726) (xy 102.223782 20.163765) (xy 102.389175 20.411294) (xy 102.599681 20.6218) + (xy 102.84721 20.787193) (xy 103.122249 20.901118) (xy 103.414229 20.959196) (xy 103.711929 20.959196) (xy 104.003909 20.901118) + (xy 104.278948 20.787193) (xy 104.526477 20.6218) (xy 104.736983 20.411294) (xy 104.902376 20.163765) (xy 105.016301 19.888726) + (xy 105.074379 19.596746) (xy 105.074379 19.493997) (xy 109.273683 23.693302) (xy 109.297482 23.722301) (xy 109.413207 23.817274) + (xy 109.545236 23.887846) (xy 109.688497 23.931303) (xy 109.80015 23.9423) (xy 109.800159 23.9423) (xy 109.837482 23.945976) + (xy 109.874805 23.9423) (xy 130.680115 23.9423) (xy 130.644235 23.995999) (xy 130.483294 24.384545) (xy 130.401247 24.797022) + (xy 130.401247 25.21758) (xy 130.483294 25.630057) (xy 130.644235 26.018603) (xy 130.877884 26.368284) (xy 131.175264 26.665664) + (xy 131.524945 26.899313) (xy 131.913491 27.060254) (xy 132.325968 27.142301) (xy 132.746526 27.142301) (xy 133.159003 27.060254) + (xy 133.547549 26.899313) (xy 133.89723 26.665664) (xy 134.19461 26.368284) (xy 134.428259 26.018603) (xy 134.5892 25.630057) + (xy 134.594149 25.605179) (xy 136.850754 25.605179) (xy 136.975236 25.592919) (xy 137.094934 25.556609) (xy 137.205248 25.497644) + (xy 137.301939 25.418292) (xy 137.381291 25.321601) (xy 137.440256 25.211287) (xy 137.476566 25.091589) (xy 137.488826 24.967107) + (xy 137.488826 22.467107) (xy 137.476566 22.342625) (xy 137.440256 22.222927) (xy 137.381291 22.112613) (xy 137.301939 22.015922) + (xy 137.205248 21.93657) (xy 137.094934 21.877605) (xy 136.975236 21.841295) (xy 136.850754 21.829035) (xy 134.300754 21.829035) + (xy 134.176272 21.841295) (xy 134.056574 21.877605) (xy 133.94626 21.93657) (xy 133.849569 22.015922) (xy 133.770217 22.112613) + (xy 133.711252 22.222927) (xy 133.674942 22.342625) (xy 133.667095 22.4223) (xy 110.152285 22.4223) (xy 105.026655 17.296671) + (xy 105.074379 17.056746) (xy 105.074379 16.759046) (xy 105.016301 16.467066) (xy 104.902376 16.192027) (xy 104.736983 15.944498) + (xy 104.526477 15.733992) (xy 104.382659 15.637896) (xy 104.526477 15.5418) (xy 104.736983 15.331294) (xy 104.902376 15.083765) + (xy 105.016301 14.808726) (xy 105.074379 14.516746) (xy 105.074379 14.219046) (xy 105.026655 13.979121) (xy 107.619182 11.386595) + (xy 117.350052 11.386595) (xy 117.349857 11.387066) (xy 117.291779 11.679046) (xy 117.291779 11.976746) (xy 117.339503 12.216671) + (xy 112.519003 17.037171) (xy 112.489999 17.060974) (xy 112.458857 17.098921) (xy 112.395026 17.176699) (xy 112.34742 17.265763) + (xy 112.324454 17.308729) (xy 112.280997 17.45199) (xy 112.27 17.563643) (xy 112.27 17.563653) (xy 112.266324 17.600975) + (xy 112.27 17.638298) (xy 112.270001 19.616288) (xy 112.226063 19.660226) (xy 112.112795 19.829744) (xy 112.034774 20.018102) + (xy 111.995 20.218061) (xy 111.995 20.421939) (xy 112.034774 20.621898) (xy 112.112795 20.810256) (xy 112.226063 20.979774) + (xy 112.370226 21.123937) (xy 112.539744 21.237205) (xy 112.728102 21.315226) (xy 112.928061 21.355) (xy 113.131939 21.355) + (xy 113.331898 21.315226) (xy 113.520256 21.237205) (xy 113.689774 21.123937) (xy 113.833937 20.979774) (xy 113.947205 20.810256) + (xy 114.025226 20.621898) (xy 114.065 20.421939) (xy 114.065 20.218061) (xy 114.025226 20.018102) (xy 113.947205 19.829744) + (xy 113.833937 19.660226) (xy 113.79 19.616289) (xy 113.79 17.915776) (xy 117.291779 14.413998) (xy 117.291779 14.516746) + (xy 117.349857 14.808726) (xy 117.463782 15.083765) (xy 117.629175 15.331294) (xy 117.839681 15.5418) (xy 117.983499 15.637896) + (xy 117.839681 15.733992) (xy 117.629175 15.944498) (xy 117.463782 16.192027) (xy 117.349857 16.467066) (xy 117.291779 16.759046) + (xy 117.291779 17.056746) (xy 117.349857 17.348726) (xy 117.463782 17.623765) (xy 117.629175 17.871294) (xy 117.839681 18.0818) + (xy 117.983499 18.177896) (xy 117.839681 18.273992) (xy 117.629175 18.484498) (xy 117.463782 18.732027) (xy 117.349857 19.007066) + (xy 117.291779 19.299046) (xy 117.291779 19.596746) (xy 117.349857 19.888726) (xy 117.463782 20.163765) (xy 117.629175 20.411294) + (xy 117.839681 20.6218) (xy 118.08721 20.787193) (xy 118.362249 20.901118) (xy 118.654229 20.959196) (xy 118.951929 20.959196) + (xy 119.243909 20.901118) (xy 119.518948 20.787193) (xy 119.766477 20.6218) (xy 119.976983 20.411294) (xy 120.142376 20.163765) + (xy 120.256301 19.888726) (xy 120.314379 19.596746) (xy 120.314379 19.299046) (xy 120.256301 19.007066) (xy 120.142376 18.732027) + (xy 119.976983 18.484498) (xy 119.766477 18.273992) (xy 119.622659 18.177896) (xy 119.766477 18.0818) (xy 119.976983 17.871294) + (xy 120.142376 17.623765) (xy 120.256301 17.348726) (xy 120.314379 17.056746) (xy 120.314379 16.759046) (xy 120.256301 16.467066) + (xy 120.142376 16.192027) (xy 119.976983 15.944498) (xy 119.766477 15.733992) (xy 119.622659 15.637896) (xy 119.766477 15.5418) + (xy 119.976983 15.331294) (xy 120.142376 15.083765) (xy 120.256301 14.808726) (xy 120.314379 14.516746) (xy 120.314379 14.219046) + (xy 120.300195 14.147736) (xy 136.728785 14.147736) (xy 136.728785 16.647736) (xy 136.741045 16.772218) (xy 136.777355 16.891916) + (xy 136.83632 17.00223) (xy 136.915672 17.098921) (xy 137.012363 17.178273) (xy 137.122677 17.237238) (xy 137.242375 17.273548) + (xy 137.366857 17.285808) (xy 137.987531 17.285808) (xy 138.006883 17.322012) (xy 138.047359 17.371331) (xy 138.101857 17.437737) + (xy 138.130855 17.461535) (xy 142.23902 21.569701) (xy 142.262818 21.598699) (xy 142.291816 21.622497) (xy 142.378542 21.693672) + (xy 142.429566 21.720945) (xy 142.510572 21.764244) (xy 142.653833 21.807701) (xy 142.765486 21.818698) (xy 142.765496 21.818698) + (xy 142.802819 21.822374) (xy 142.840142 21.818698) (xy 143.20117 21.818698) (xy 143.369532 22.07067) (xy 143.590652 22.29179) + (xy 143.850661 22.465522) (xy 144.139567 22.585191) (xy 144.446269 22.646198) (xy 144.758979 22.646198) (xy 145.065681 22.585191) + (xy 145.354587 22.465522) (xy 145.614596 22.29179) (xy 145.835716 22.07067) (xy 146.009448 21.810661) (xy 146.027165 21.767889) + (xy 146.039181 21.764244) (xy 146.17121 21.693672) (xy 146.286935 21.598699) (xy 146.309439 21.571278) (xy 146.416693 21.580898) + (xy 146.541063 21.567552) (xy 146.660439 21.530198) (xy 147.488894 21.17854) (xy 147.59869 21.118616) (xy 147.694685 21.038423) + (xy 147.773191 20.941043) (xy 147.83119 20.830218) (xy 147.866454 20.710208) (xy 147.877628 20.585624) (xy 147.864282 20.461254) + (xy 147.826928 20.341878) (xy 147.358051 19.237272) (xy 147.298127 19.127476) (xy 147.217934 19.031481) (xy 147.120554 18.952975) + (xy 147.009729 18.894976) (xy 146.889719 18.859712) (xy 146.765135 18.848538) (xy 146.640765 18.861884) (xy 146.521389 18.899238) + (xy 145.692934 19.250896) (xy 145.583138 19.31082) (xy 145.487143 19.391013) (xy 145.408637 19.488393) (xy 145.350638 19.599218) + (xy 145.337273 19.644702) (xy 145.065681 19.532205) (xy 144.758979 19.471198) (xy 144.446269 19.471198) (xy 144.139567 19.532205) + (xy 143.850661 19.651874) (xy 143.590652 19.825606) (xy 143.369532 20.046726) (xy 143.20117 20.298698) (xy 143.117621 20.298698) + (xy 141.373323 18.5544) (xy 148.341866 18.5544) (xy 148.355212 18.67877) (xy 148.392566 18.798146) (xy 148.861443 19.902752) + (xy 148.921367 20.012548) (xy 149.00156 20.108543) (xy 149.09894 20.187049) (xy 149.209765 20.245048) (xy 149.329775 20.280312) + (xy 149.454359 20.291486) (xy 149.578729 20.27814) (xy 149.698105 20.240786) (xy 150.52656 19.889128) (xy 150.636356 19.829204) + (xy 150.732351 19.749011) (xy 150.741995 19.737048) (xy 150.79605 19.780626) (xy 150.906875 19.838625) (xy 151.026885 19.873889) + (xy 151.151469 19.885063) (xy 151.275839 19.871717) (xy 151.395216 19.834363) (xy 153.031874 19.139643) (xy 153.141669 19.079719) + (xy 153.237664 18.999526) (xy 153.31617 18.902146) (xy 153.374169 18.791321) (xy 153.409433 18.671311) (xy 153.420607 18.546727) + (xy 153.407261 18.422357) (xy 153.369907 18.30298) (xy 152.675187 16.666322) (xy 152.615263 16.556527) (xy 152.53507 16.460532) + (xy 152.43769 16.382026) (xy 152.326865 16.324027) (xy 152.206855 16.288763) (xy 152.082271 16.277589) (xy 151.957901 16.290935) + (xy 151.838524 16.328289) (xy 150.201866 17.023009) (xy 150.092071 17.082933) (xy 149.996076 17.163126) (xy 149.91757 17.260506) + (xy 149.859571 17.371331) (xy 149.824307 17.491341) (xy 149.818104 17.560499) (xy 149.802801 17.559126) (xy 149.678431 17.572472) + (xy 149.559055 17.609826) (xy 148.7306 17.961484) (xy 148.620804 18.021408) (xy 148.524809 18.101601) (xy 148.446303 18.198981) + (xy 148.388304 18.309806) (xy 148.35304 18.429816) (xy 148.341866 18.5544) (xy 141.373323 18.5544) (xy 141.238266 18.419343) + (xy 141.333578 18.438302) (xy 141.626274 18.438302) (xy 141.913347 18.3812) (xy 142.183764 18.26919) (xy 142.427132 18.106576) + (xy 142.6341 17.899608) (xy 142.796714 17.65624) (xy 142.908724 17.385823) (xy 142.965826 17.09875) (xy 142.965826 16.806054) + (xy 142.908724 16.518981) (xy 142.796714 16.248564) (xy 142.643976 16.019976) (xy 142.667812 16.010103) (xy 143.017493 15.776454) + (xy 143.314873 15.479074) (xy 143.527191 15.161317) (xy 143.527191 15.226412) (xy 143.628218 15.73431) (xy 143.82639 16.212739) + (xy 144.114091 16.643314) (xy 144.480265 17.009488) (xy 144.91084 17.297189) (xy 145.389269 17.495361) (xy 145.897167 17.596388) + (xy 146.415015 17.596388) (xy 146.922913 17.495361) (xy 147.401342 17.297189) (xy 147.831917 17.009488) (xy 148.198091 16.643314) + (xy 148.485792 16.212739) (xy 148.683964 15.73431) (xy 148.784991 15.226412) (xy 148.784991 14.708564) (xy 148.683964 14.200666) + (xy 148.485792 13.722237) (xy 148.198091 13.291662) (xy 147.831917 12.925488) (xy 147.698327 12.836226) (xy 149.346356 12.836226) + (xy 149.346356 13.128922) (xy 149.403458 13.415995) (xy 149.515468 13.686412) (xy 149.678082 13.92978) (xy 149.88505 14.136748) + (xy 150.128418 14.299362) (xy 150.398835 14.411372) (xy 150.685908 14.468474) (xy 150.978604 14.468474) (xy 151.265677 14.411372) + (xy 151.536094 14.299362) (xy 151.779462 14.136748) (xy 151.98643 13.92978) (xy 152.149044 13.686412) (xy 152.261054 13.415995) + (xy 152.318156 13.128922) (xy 152.318156 12.836226) (xy 152.261054 12.549153) (xy 152.149044 12.278736) (xy 151.98643 12.035368) + (xy 151.779462 11.8284) (xy 151.536094 11.665786) (xy 151.265677 11.553776) (xy 150.978604 11.496674) (xy 150.685908 11.496674) + (xy 150.398835 11.553776) (xy 150.128418 11.665786) (xy 149.88505 11.8284) (xy 149.678082 12.035368) (xy 149.515468 12.278736) + (xy 149.403458 12.549153) (xy 149.346356 12.836226) (xy 147.698327 12.836226) (xy 147.401342 12.637787) (xy 146.922913 12.439615) + (xy 146.415015 12.338588) (xy 145.897167 12.338588) (xy 145.389269 12.439615) (xy 144.91084 12.637787) (xy 144.480265 12.925488) + (xy 144.114091 13.291662) (xy 143.82639 13.722237) (xy 143.777888 13.839331) (xy 143.709463 13.495335) (xy 143.548522 13.106789) + (xy 143.314873 12.757108) (xy 143.017493 12.459728) (xy 142.667812 12.226079) (xy 142.279266 12.065138) (xy 141.866789 11.983091) + (xy 141.446231 11.983091) (xy 141.033754 12.065138) (xy 140.645208 12.226079) (xy 140.295527 12.459728) (xy 139.998147 12.757108) + (xy 139.764498 13.106789) (xy 139.603557 13.495335) (xy 139.600707 13.509664) (xy 137.366857 13.509664) (xy 137.242375 13.521924) + (xy 137.122677 13.558234) (xy 137.012363 13.617199) (xy 136.915672 13.696551) (xy 136.83632 13.793242) (xy 136.777355 13.903556) + (xy 136.741045 14.023254) (xy 136.728785 14.147736) (xy 120.300195 14.147736) (xy 120.256301 13.927066) (xy 120.142376 13.652027) + (xy 119.976983 13.404498) (xy 119.766477 13.193992) (xy 119.622659 13.097896) (xy 119.766477 13.0018) (xy 119.976983 12.791294) + (xy 120.142376 12.543765) (xy 120.256301 12.268726) (xy 120.314379 11.976746) (xy 120.314379 11.679046) (xy 120.256301 11.387066) + (xy 120.256106 11.386595) (xy 142.443206 11.386595) (xy 142.480528 11.390271) (xy 142.51785 11.386595) (xy 142.517861 11.386595) + (xy 142.629514 11.375598) (xy 142.772775 11.332141) (xy 142.904804 11.261569) (xy 143.020529 11.166596) (xy 143.044332 11.137592) + (xy 144.423787 9.758138) (xy 144.456306 9.921622) (xy 144.617247 10.310168) (xy 144.850896 10.659849) (xy 145.148276 10.957229) + (xy 145.497957 11.190878) (xy 145.886503 11.351819) (xy 146.29898 11.433866) (xy 146.719538 11.433866) (xy 147.132015 11.351819) + (xy 147.520561 11.190878) (xy 147.870242 10.957229) (xy 148.167622 10.659849) (xy 148.401271 10.310168) (xy 148.562212 9.921622) + (xy 148.567161 9.896744) (xy 150.362037 9.896744) (xy 156.212659 15.747367) (xy 156.212658 23.610192) (xy 155.697658 23.610192) + (xy 155.573176 23.622452) (xy 155.453478 23.658762) (xy 155.343164 23.717727) (xy 155.246473 23.797079) (xy 155.167121 23.89377) + (xy 155.108156 24.004084) (xy 155.071846 24.123782) (xy 155.059586 24.248264) (xy 155.059586 24.973375) (xy 154.944453 24.896446) + (xy 154.555907 24.735505) (xy 154.14343 24.653458) (xy 153.722872 24.653458) (xy 153.310395 24.735505) (xy 152.921849 24.896446) + (xy 152.572168 25.130095) (xy 152.274788 25.427475) (xy 152.041139 25.777156) (xy 151.880198 26.165702) (xy 151.798151 26.578179) + (xy 151.798151 26.998737) (xy 151.880198 27.411214) (xy 152.041139 27.79976) (xy 152.274788 28.149441) (xy 152.572168 28.446821) + (xy 152.921849 28.68047) (xy 153.310395 28.841411) (xy 153.722872 28.923458) (xy 154.14343 28.923458) (xy 154.555907 28.841411) + (xy 154.944453 28.68047) (xy 155.294134 28.446821) (xy 155.591514 28.149441) (xy 155.825163 27.79976) (xy 155.986104 27.411214) + (xy 155.991053 27.386336) (xy 158.247658 27.386336) (xy 158.37214 27.374076) (xy 158.491838 27.337766) (xy 158.602152 27.278801) + (xy 158.698843 27.199449) (xy 158.778195 27.102758) (xy 158.83716 26.992444) (xy 158.87347 26.872746) (xy 158.88573 26.748264) + (xy 158.88573 24.248264) (xy 158.87347 24.123782) (xy 158.83716 24.004084) (xy 158.778195 23.89377) (xy 158.698843 23.797079) + (xy 158.602152 23.717727) (xy 158.491838 23.658762) (xy 158.37214 23.622452) (xy 158.247658 23.610192) (xy 157.732658 23.610192) + (xy 157.732658 18.690408) (xy 159.297882 18.690408) (xy 159.297882 21.190408) (xy 159.310142 21.31489) (xy 159.346452 21.434588) + (xy 159.405417 21.544902) (xy 159.484769 21.641593) (xy 159.58146 21.720945) (xy 159.691774 21.77991) (xy 159.811472 21.81622) + (xy 159.935954 21.82848) (xy 160.556628 21.82848) (xy 160.57598 21.864684) (xy 160.634976 21.93657) (xy 160.670954 21.980409) + (xy 160.699952 22.004207) (xy 164.808117 26.112373) (xy 164.831915 26.141371) (xy 164.860913 26.165169) (xy 164.947639 26.236344) + (xy 165.022911 26.276578) (xy 165.079669 26.306916) (xy 165.22293 26.350373) (xy 165.334583 26.36137) (xy 165.334593 26.36137) + (xy 165.371916 26.365046) (xy 165.409239 26.36137) (xy 165.770267 26.36137) (xy 165.938629 26.613342) (xy 166.159749 26.834462) + (xy 166.419758 27.008194) (xy 166.708664 27.127863) (xy 167.015366 27.18887) (xy 167.328076 27.18887) (xy 167.634778 27.127863) + (xy 167.923684 27.008194) (xy 168.183693 26.834462) (xy 168.404813 26.613342) (xy 168.578545 26.353333) (xy 168.596262 26.310561) + (xy 168.608278 26.306916) (xy 168.740307 26.236344) (xy 168.856032 26.141371) (xy 168.878536 26.11395) (xy 168.98579 26.12357) + (xy 169.11016 26.110224) (xy 169.229536 26.07287) (xy 170.057991 25.721212) (xy 170.167787 25.661288) (xy 170.263782 25.581095) + (xy 170.342288 25.483715) (xy 170.400287 25.37289) (xy 170.435551 25.25288) (xy 170.446725 25.128296) (xy 170.433379 25.003926) + (xy 170.396025 24.88455) (xy 169.927148 23.779944) (xy 169.867224 23.670148) (xy 169.787031 23.574153) (xy 169.689651 23.495647) + (xy 169.578826 23.437648) (xy 169.458816 23.402384) (xy 169.334232 23.39121) (xy 169.209862 23.404556) (xy 169.090486 23.44191) + (xy 168.262031 23.793568) (xy 168.152235 23.853492) (xy 168.05624 23.933685) (xy 167.977734 24.031065) (xy 167.919735 24.14189) + (xy 167.90637 24.187374) (xy 167.634778 24.074877) (xy 167.328076 24.01387) (xy 167.015366 24.01387) (xy 166.708664 24.074877) + (xy 166.419758 24.194546) (xy 166.159749 24.368278) (xy 165.938629 24.589398) (xy 165.770267 24.84137) (xy 165.686718 24.84137) + (xy 163.94242 23.097072) (xy 170.910963 23.097072) (xy 170.924309 23.221442) (xy 170.961663 23.340818) (xy 171.43054 24.445424) + (xy 171.490464 24.55522) (xy 171.570657 24.651215) (xy 171.668037 24.729721) (xy 171.778862 24.78772) (xy 171.898872 24.822984) + (xy 172.023456 24.834158) (xy 172.147826 24.820812) (xy 172.267202 24.783458) (xy 173.095657 24.4318) (xy 173.205453 24.371876) + (xy 173.301448 24.291683) (xy 173.311092 24.27972) (xy 173.365147 24.323298) (xy 173.475972 24.381297) (xy 173.595982 24.416561) + (xy 173.720566 24.427735) (xy 173.844936 24.414389) (xy 173.964313 24.377035) (xy 175.600971 23.682315) (xy 175.710766 23.622391) + (xy 175.806761 23.542198) (xy 175.885267 23.444818) (xy 175.943266 23.333993) (xy 175.97853 23.213983) (xy 175.989704 23.089399) + (xy 175.976358 22.965029) (xy 175.939004 22.845652) (xy 175.244284 21.208994) (xy 175.18436 21.099199) (xy 175.104167 21.003204) + (xy 175.006787 20.924698) (xy 174.895962 20.866699) (xy 174.775952 20.831435) (xy 174.651368 20.820261) (xy 174.526998 20.833607) + (xy 174.407621 20.870961) (xy 172.770963 21.565681) (xy 172.661168 21.625605) (xy 172.565173 21.705798) (xy 172.486667 21.803178) + (xy 172.428668 21.914003) (xy 172.393404 22.034013) (xy 172.387201 22.103171) (xy 172.371898 22.101798) (xy 172.247528 22.115144) + (xy 172.128152 22.152498) (xy 171.299697 22.504156) (xy 171.189901 22.56408) (xy 171.093906 22.644273) (xy 171.0154 22.741653) + (xy 170.957401 22.852478) (xy 170.922137 22.972488) (xy 170.910963 23.097072) (xy 163.94242 23.097072) (xy 163.807363 22.962015) + (xy 163.902675 22.980974) (xy 164.195371 22.980974) (xy 164.482444 22.923872) (xy 164.752861 22.811862) (xy 164.996229 22.649248) + (xy 165.203197 22.44228) (xy 165.365811 22.198912) (xy 165.477821 21.928495) (xy 165.534923 21.641422) (xy 165.534923 21.348726) + (xy 165.477821 21.061653) (xy 165.365811 20.791236) (xy 165.213073 20.562648) (xy 165.236909 20.552775) (xy 165.58659 20.319126) + (xy 165.88397 20.021746) (xy 166.096288 19.703989) (xy 166.096288 19.769084) (xy 166.197315 20.276982) (xy 166.395487 20.755411) + (xy 166.683188 21.185986) (xy 167.049362 21.55216) (xy 167.479937 21.839861) (xy 167.958366 22.038033) (xy 168.466264 22.13906) + (xy 168.984112 22.13906) (xy 169.49201 22.038033) (xy 169.970439 21.839861) (xy 170.401014 21.55216) (xy 170.767188 21.185986) + (xy 171.054889 20.755411) (xy 171.253061 20.276982) (xy 171.354088 19.769084) (xy 171.354088 19.251236) (xy 171.253061 18.743338) + (xy 171.054889 18.264909) (xy 170.767188 17.834334) (xy 170.401014 17.46816) (xy 170.267424 17.378898) (xy 171.915453 17.378898) + (xy 171.915453 17.671594) (xy 171.972555 17.958667) (xy 172.084565 18.229084) (xy 172.247179 18.472452) (xy 172.454147 18.67942) + (xy 172.697515 18.842034) (xy 172.967932 18.954044) (xy 173.255005 19.011146) (xy 173.547701 19.011146) (xy 173.834774 18.954044) + (xy 174.105191 18.842034) (xy 174.348559 18.67942) (xy 174.555527 18.472452) (xy 174.718141 18.229084) (xy 174.830151 17.958667) + (xy 174.887253 17.671594) (xy 174.887253 17.378898) (xy 174.830151 17.091825) (xy 174.718141 16.821408) (xy 174.555527 16.57804) + (xy 174.348559 16.371072) (xy 174.105191 16.208458) (xy 173.834774 16.096448) (xy 173.547701 16.039346) (xy 173.255005 16.039346) + (xy 172.967932 16.096448) (xy 172.697515 16.208458) (xy 172.454147 16.371072) (xy 172.247179 16.57804) (xy 172.084565 16.821408) + (xy 171.972555 17.091825) (xy 171.915453 17.378898) (xy 170.267424 17.378898) (xy 169.970439 17.180459) (xy 169.49201 16.982287) + (xy 168.984112 16.88126) (xy 168.466264 16.88126) (xy 167.958366 16.982287) (xy 167.479937 17.180459) (xy 167.049362 17.46816) + (xy 166.683188 17.834334) (xy 166.395487 18.264909) (xy 166.346985 18.382003) (xy 166.27856 18.038007) (xy 166.117619 17.649461) + (xy 165.88397 17.29978) (xy 165.58659 17.0024) (xy 165.236909 16.768751) (xy 164.848363 16.60781) (xy 164.435886 16.525763) + (xy 164.015328 16.525763) (xy 163.602851 16.60781) (xy 163.214305 16.768751) (xy 162.864624 17.0024) (xy 162.567244 17.29978) + (xy 162.333595 17.649461) (xy 162.172654 18.038007) (xy 162.169804 18.052336) (xy 159.935954 18.052336) (xy 159.811472 18.064596) + (xy 159.691774 18.100906) (xy 159.58146 18.159871) (xy 159.484769 18.239223) (xy 159.405417 18.335914) (xy 159.346452 18.446228) + (xy 159.310142 18.565926) (xy 159.297882 18.690408) (xy 157.732658 18.690408) (xy 157.732658 15.469889) (xy 157.736334 15.432564) + (xy 157.732658 15.395239) (xy 157.732658 15.395231) (xy 157.721661 15.283578) (xy 157.678204 15.140317) (xy 157.607632 15.008288) + (xy 157.512659 14.892563) (xy 157.483661 14.868765) (xy 151.461838 8.846943) (xy 151.461838 6.758672) (xy 151.449578 6.63419) + (xy 151.413268 6.514492) (xy 151.354303 6.404178) (xy 151.274951 6.307487) (xy 151.17826 6.228135) (xy 151.067946 6.16917) + (xy 150.948248 6.13286) (xy 150.823766 6.1206) (xy 150.308766 6.1206) (xy 150.308766 1.200815) (xy 151.873991 1.200815) + (xy 151.873991 3.700815) (xy 151.886251 3.825297) (xy 151.922561 3.944995) (xy 151.981526 4.055309) (xy 152.060878 4.152) + (xy 152.157569 4.231352) (xy 152.267883 4.290317) (xy 152.387581 4.326627) (xy 152.512063 4.338887) (xy 153.132737 4.338887) + (xy 153.152089 4.375091) (xy 153.216281 4.453308) (xy 153.247063 4.490816) (xy 153.276061 4.514614) (xy 157.384227 8.622781) + (xy 157.408025 8.651779) (xy 157.52375 8.746752) (xy 157.655779 8.817324) (xy 157.79904 8.860781) (xy 157.910693 8.871778) + (xy 157.910702 8.871778) (xy 157.948025 8.875454) (xy 157.985348 8.871778) (xy 158.346375 8.871778) (xy 158.514737 9.12375) + (xy 158.735857 9.34487) (xy 158.995866 9.518602) (xy 159.284772 9.638271) (xy 159.591474 9.699278) (xy 159.904184 9.699278) + (xy 160.210886 9.638271) (xy 160.499792 9.518602) (xy 160.759801 9.34487) (xy 160.980921 9.12375) (xy 161.154653 8.863741) + (xy 161.17237 8.820969) (xy 161.184386 8.817324) (xy 161.316415 8.746752) (xy 161.43214 8.651779) (xy 161.454644 8.624358) + (xy 161.561898 8.633978) (xy 161.686268 8.620632) (xy 161.805644 8.583278) (xy 162.634099 8.23162) (xy 162.743895 8.171696) + (xy 162.83989 8.091503) (xy 162.918396 7.994123) (xy 162.976395 7.883298) (xy 163.011659 7.763288) (xy 163.022833 7.638704) + (xy 163.009487 7.514334) (xy 162.972133 7.394958) (xy 162.503256 6.290352) (xy 162.443332 6.180556) (xy 162.363139 6.084561) + (xy 162.265759 6.006055) (xy 162.154934 5.948056) (xy 162.034924 5.912792) (xy 161.91034 5.901618) (xy 161.78597 5.914964) + (xy 161.666594 5.952318) (xy 160.838139 6.303976) (xy 160.728343 6.3639) (xy 160.632348 6.444093) (xy 160.553842 6.541473) + (xy 160.495843 6.652298) (xy 160.482478 6.697782) (xy 160.210886 6.585285) (xy 159.904184 6.524278) (xy 159.591474 6.524278) + (xy 159.284772 6.585285) (xy 158.995866 6.704954) (xy 158.735857 6.878686) (xy 158.514737 7.099806) (xy 158.346375 7.351778) + (xy 158.262828 7.351778) (xy 156.51853 5.60748) (xy 163.487071 5.60748) (xy 163.500417 5.73185) (xy 163.537771 5.851226) + (xy 164.006648 6.955832) (xy 164.066572 7.065628) (xy 164.146765 7.161623) (xy 164.244145 7.240129) (xy 164.35497 7.298128) + (xy 164.47498 7.333392) (xy 164.599564 7.344566) (xy 164.723934 7.33122) (xy 164.84331 7.293866) (xy 165.671765 6.942208) + (xy 165.781561 6.882284) (xy 165.877556 6.802091) (xy 165.8872 6.790128) (xy 165.941255 6.833706) (xy 166.05208 6.891705) + (xy 166.17209 6.926969) (xy 166.296674 6.938143) (xy 166.421044 6.924797) (xy 166.540421 6.887443) (xy 168.177079 6.192723) + (xy 168.286874 6.132799) (xy 168.382869 6.052606) (xy 168.461375 5.955226) (xy 168.519374 5.844401) (xy 168.554638 5.724391) + (xy 168.565812 5.599807) (xy 168.552466 5.475437) (xy 168.515112 5.35606) (xy 167.820392 3.719402) (xy 167.760468 3.609607) + (xy 167.680275 3.513612) (xy 167.582895 3.435106) (xy 167.47207 3.377107) (xy 167.35206 3.341843) (xy 167.227476 3.330669) + (xy 167.103106 3.344015) (xy 166.983729 3.381369) (xy 165.347071 4.076089) (xy 165.237276 4.136013) (xy 165.141281 4.216206) + (xy 165.062775 4.313586) (xy 165.004776 4.424411) (xy 164.969512 4.544421) (xy 164.963309 4.613579) (xy 164.948006 4.612206) + (xy 164.823636 4.625552) (xy 164.70426 4.662906) (xy 163.875805 5.014564) (xy 163.766009 5.074488) (xy 163.670014 5.154681) + (xy 163.591508 5.252061) (xy 163.533509 5.362886) (xy 163.498245 5.482896) (xy 163.487071 5.60748) (xy 156.51853 5.60748) + (xy 156.383472 5.472422) (xy 156.478784 5.491381) (xy 156.77148 5.491381) (xy 157.058553 5.434279) (xy 157.32897 5.322269) + (xy 157.572338 5.159655) (xy 157.779306 4.952687) (xy 157.94192 4.709319) (xy 158.05393 4.438902) (xy 158.111032 4.151829) + (xy 158.111032 3.859133) (xy 158.05393 3.57206) (xy 157.94192 3.301643) (xy 157.789182 3.073055) (xy 157.813018 3.063182) + (xy 158.162699 2.829533) (xy 158.460079 2.532153) (xy 158.672397 2.214396) (xy 158.672397 2.279491) (xy 158.773424 2.787389) + (xy 158.971596 3.265818) (xy 159.259297 3.696393) (xy 159.625471 4.062567) (xy 160.056046 4.350268) (xy 160.534475 4.54844) + (xy 161.042373 4.649467) (xy 161.560221 4.649467) (xy 162.068119 4.54844) (xy 162.546548 4.350268) (xy 162.977123 4.062567) + (xy 163.343297 3.696393) (xy 163.630998 3.265818) (xy 163.82917 2.787389) (xy 163.930197 2.279491) (xy 163.930197 1.761643) + (xy 163.82917 1.253745) (xy 163.630998 0.775316) (xy 163.343297 0.344741) (xy 162.977123 -0.021433) (xy 162.843533 -0.110695) + (xy 164.491562 -0.110695) (xy 164.491562 0.182001) (xy 164.548664 0.469074) (xy 164.660674 0.739491) (xy 164.823288 0.982859) + (xy 165.030256 1.189827) (xy 165.273624 1.352441) (xy 165.544041 1.464451) (xy 165.831114 1.521553) (xy 166.12381 1.521553) + (xy 166.410883 1.464451) (xy 166.6813 1.352441) (xy 166.924668 1.189827) (xy 167.131636 0.982859) (xy 167.29425 0.739491) + (xy 167.40626 0.469074) (xy 167.463362 0.182001) (xy 167.463362 -0.110695) (xy 167.40626 -0.397768) (xy 167.29425 -0.668185) + (xy 167.131636 -0.911553) (xy 166.924668 -1.118521) (xy 166.6813 -1.281135) (xy 166.410883 -1.393145) (xy 166.12381 -1.450247) + (xy 165.831114 -1.450247) (xy 165.544041 -1.393145) (xy 165.273624 -1.281135) (xy 165.030256 -1.118521) (xy 164.823288 -0.911553) + (xy 164.660674 -0.668185) (xy 164.548664 -0.397768) (xy 164.491562 -0.110695) (xy 162.843533 -0.110695) (xy 162.546548 -0.309134) + (xy 162.068119 -0.507306) (xy 161.560221 -0.608333) (xy 161.042373 -0.608333) (xy 160.534475 -0.507306) (xy 160.056046 -0.309134) + (xy 159.625471 -0.021433) (xy 159.259297 0.344741) (xy 158.971596 0.775316) (xy 158.923094 0.89241) (xy 158.854669 0.548414) + (xy 158.693728 0.159868) (xy 158.460079 -0.189813) (xy 158.162699 -0.487193) (xy 157.813018 -0.720842) (xy 157.424472 -0.881783) + (xy 157.011995 -0.96383) (xy 156.591437 -0.96383) (xy 156.17896 -0.881783) (xy 155.790414 -0.720842) (xy 155.440733 -0.487193) + (xy 155.143353 -0.189813) (xy 154.909704 0.159868) (xy 154.748763 0.548414) (xy 154.745913 0.562743) (xy 152.512063 0.562743) + (xy 152.387581 0.575003) (xy 152.267883 0.611313) (xy 152.157569 0.670278) (xy 152.060878 0.74963) (xy 151.981526 0.846321) + (xy 151.922561 0.956635) (xy 151.886251 1.076333) (xy 151.873991 1.200815) (xy 150.308766 1.200815) (xy 150.308766 -0.069629) + (xy 150.312442 -0.106952) (xy 150.308766 -0.144275) (xy 150.308766 -0.144284) (xy 150.297769 -0.255937) (xy 150.254312 -0.399198) + (xy 150.18374 -0.531227) (xy 150.088767 -0.646952) (xy 150.059769 -0.67075) (xy 143.13767 -7.592848) (xy 143.399875 -7.592848) + (xy 143.524357 -7.605108) (xy 143.644055 -7.641418) (xy 143.754369 -7.700383) (xy 143.85106 -7.779735) (xy 143.930412 -7.876426) + (xy 143.989377 -7.98674) (xy 144.025687 -8.106438) (xy 144.037947 -8.23092) (xy 144.037947 -10.73092) (xy 144.025687 -10.855402) + (xy 143.989377 -10.9751) (xy 143.930412 -11.085414) (xy 143.85106 -11.182105) (xy 143.754369 -11.261457) (xy 143.644055 -11.320422) + (xy 143.524357 -11.356732) (xy 143.399875 -11.368992) (xy 142.884875 -11.368992) (xy 142.884875 -14.078549) (xy 142.888551 -14.115874) + (xy 142.884875 -14.153199) (xy 142.884875 -14.153207) (xy 142.873878 -14.26486) (xy 142.830421 -14.408121) (xy 142.759849 -14.54015) + (xy 142.664876 -14.655875) (xy 142.635878 -14.679673) (xy 141.026774 -16.288777) (xy 144.450099 -16.288777) (xy 144.450099 -13.788777) + (xy 144.462359 -13.664295) (xy 144.498669 -13.544597) (xy 144.557634 -13.434283) (xy 144.636986 -13.337592) (xy 144.733677 -13.25824) + (xy 144.843991 -13.199275) (xy 144.963689 -13.162965) (xy 145.088171 -13.150705) (xy 145.708845 -13.150705) (xy 145.728197 -13.114501) + (xy 145.792389 -13.036284) (xy 145.823171 -12.998776) (xy 145.852169 -12.974978) (xy 149.960335 -8.866811) (xy 149.984133 -8.837813) + (xy 150.099858 -8.74284) (xy 150.231887 -8.672268) (xy 150.375148 -8.628811) (xy 150.486801 -8.617814) (xy 150.48681 -8.617814) + (xy 150.524133 -8.614138) (xy 150.561456 -8.617814) (xy 150.922484 -8.617814) (xy 151.090846 -8.365842) (xy 151.311966 -8.144722) + (xy 151.571975 -7.97099) (xy 151.860881 -7.851321) (xy 152.167583 -7.790314) (xy 152.480293 -7.790314) (xy 152.786995 -7.851321) + (xy 153.075901 -7.97099) (xy 153.33591 -8.144722) (xy 153.55703 -8.365842) (xy 153.730762 -8.625851) (xy 153.748479 -8.668623) + (xy 153.760495 -8.672268) (xy 153.892524 -8.74284) (xy 154.008249 -8.837813) (xy 154.030753 -8.865234) (xy 154.138007 -8.855614) + (xy 154.262377 -8.86896) (xy 154.381753 -8.906314) (xy 155.210208 -9.257972) (xy 155.320004 -9.317896) (xy 155.415999 -9.398089) + (xy 155.494505 -9.495469) (xy 155.552504 -9.606294) (xy 155.587768 -9.726304) (xy 155.598942 -9.850888) (xy 155.585596 -9.975258) + (xy 155.548242 -10.094634) (xy 155.079365 -11.19924) (xy 155.019441 -11.309036) (xy 154.939248 -11.405031) (xy 154.841868 -11.483537) + (xy 154.731043 -11.541536) (xy 154.611033 -11.5768) (xy 154.486449 -11.587974) (xy 154.362079 -11.574628) (xy 154.242703 -11.537274) + (xy 153.414248 -11.185616) (xy 153.304452 -11.125692) (xy 153.208457 -11.045499) (xy 153.129951 -10.948119) (xy 153.071952 -10.837294) + (xy 153.058587 -10.79181) (xy 152.786995 -10.904307) (xy 152.480293 -10.965314) (xy 152.167583 -10.965314) (xy 151.860881 -10.904307) + (xy 151.571975 -10.784638) (xy 151.311966 -10.610906) (xy 151.090846 -10.389786) (xy 150.922484 -10.137814) (xy 150.838936 -10.137814) + (xy 149.094638 -11.882112) (xy 156.06318 -11.882112) (xy 156.076526 -11.757742) (xy 156.11388 -11.638366) (xy 156.582757 -10.53376) + (xy 156.642681 -10.423964) (xy 156.722874 -10.327969) (xy 156.820254 -10.249463) (xy 156.931079 -10.191464) (xy 157.051089 -10.1562) + (xy 157.175673 -10.145026) (xy 157.300043 -10.158372) (xy 157.419419 -10.195726) (xy 158.247874 -10.547384) (xy 158.35767 -10.607308) + (xy 158.453665 -10.687501) (xy 158.463309 -10.699464) (xy 158.517364 -10.655886) (xy 158.628189 -10.597887) (xy 158.748199 -10.562623) + (xy 158.872783 -10.551449) (xy 158.997153 -10.564795) (xy 159.11653 -10.602149) (xy 160.753188 -11.296869) (xy 160.862983 -11.356793) + (xy 160.958978 -11.436986) (xy 161.037484 -11.534366) (xy 161.095483 -11.645191) (xy 161.130747 -11.765201) (xy 161.141921 -11.889785) + (xy 161.128575 -12.014155) (xy 161.091221 -12.133532) (xy 160.396501 -13.77019) (xy 160.336577 -13.879985) (xy 160.256384 -13.97598) + (xy 160.159004 -14.054486) (xy 160.048179 -14.112485) (xy 159.928169 -14.147749) (xy 159.803585 -14.158923) (xy 159.679215 -14.145577) + (xy 159.559838 -14.108223) (xy 157.92318 -13.413503) (xy 157.813385 -13.353579) (xy 157.71739 -13.273386) (xy 157.638884 -13.176006) + (xy 157.580885 -13.065181) (xy 157.545621 -12.945171) (xy 157.539418 -12.876013) (xy 157.524115 -12.877386) (xy 157.399745 -12.86404) + (xy 157.280369 -12.826686) (xy 156.451914 -12.475028) (xy 156.342118 -12.415104) (xy 156.246123 -12.334911) (xy 156.167617 -12.237531) + (xy 156.109618 -12.126706) (xy 156.074354 -12.006696) (xy 156.06318 -11.882112) (xy 149.094638 -11.882112) (xy 148.95958 -12.01717) + (xy 149.054892 -11.998211) (xy 149.347588 -11.998211) (xy 149.634661 -12.055313) (xy 149.905078 -12.167323) (xy 150.148446 -12.329937) + (xy 150.355414 -12.536905) (xy 150.518028 -12.780273) (xy 150.630038 -13.05069) (xy 150.68714 -13.337763) (xy 150.68714 -13.630459) + (xy 150.630038 -13.917532) (xy 150.518028 -14.187949) (xy 150.36529 -14.416537) (xy 150.389126 -14.42641) (xy 150.738807 -14.660059) + (xy 151.036187 -14.957439) (xy 151.248505 -15.275196) (xy 151.248505 -15.210101) (xy 151.349532 -14.702203) (xy 151.547704 -14.223774) + (xy 151.835405 -13.793199) (xy 152.201579 -13.427025) (xy 152.632154 -13.139324) (xy 153.110583 -12.941152) (xy 153.618481 -12.840125) + (xy 154.136329 -12.840125) (xy 154.644227 -12.941152) (xy 155.122656 -13.139324) (xy 155.553231 -13.427025) (xy 155.919405 -13.793199) + (xy 156.207106 -14.223774) (xy 156.405278 -14.702203) (xy 156.506305 -15.210101) (xy 156.506305 -15.727949) (xy 156.405278 -16.235847) + (xy 156.207106 -16.714276) (xy 155.919405 -17.144851) (xy 155.553231 -17.511025) (xy 155.419641 -17.600287) (xy 157.06767 -17.600287) + (xy 157.06767 -17.307591) (xy 157.124772 -17.020518) (xy 157.236782 -16.750101) (xy 157.399396 -16.506733) (xy 157.606364 -16.299765) + (xy 157.849732 -16.137151) (xy 158.120149 -16.025141) (xy 158.407222 -15.968039) (xy 158.699918 -15.968039) (xy 158.986991 -16.025141) + (xy 159.257408 -16.137151) (xy 159.500776 -16.299765) (xy 159.707744 -16.506733) (xy 159.870358 -16.750101) (xy 159.982368 -17.020518) + (xy 160.03947 -17.307591) (xy 160.03947 -17.600287) (xy 159.982368 -17.88736) (xy 159.870358 -18.157777) (xy 159.707744 -18.401145) + (xy 159.500776 -18.608113) (xy 159.257408 -18.770727) (xy 158.986991 -18.882737) (xy 158.699918 -18.939839) (xy 158.407222 -18.939839) + (xy 158.120149 -18.882737) (xy 157.849732 -18.770727) (xy 157.606364 -18.608113) (xy 157.399396 -18.401145) (xy 157.236782 -18.157777) + (xy 157.124772 -17.88736) (xy 157.06767 -17.600287) (xy 155.419641 -17.600287) (xy 155.122656 -17.798726) (xy 154.644227 -17.996898) + (xy 154.136329 -18.097925) (xy 153.618481 -18.097925) (xy 153.110583 -17.996898) (xy 152.632154 -17.798726) (xy 152.201579 -17.511025) + (xy 151.835405 -17.144851) (xy 151.547704 -16.714276) (xy 151.499202 -16.597182) (xy 151.430777 -16.941178) (xy 151.269836 -17.329724) + (xy 151.036187 -17.679405) (xy 150.738807 -17.976785) (xy 150.389126 -18.210434) (xy 150.00058 -18.371375) (xy 149.588103 -18.453422) + (xy 149.167545 -18.453422) (xy 148.755068 -18.371375) (xy 148.366522 -18.210434) (xy 148.016841 -17.976785) (xy 147.719461 -17.679405) + (xy 147.485812 -17.329724) (xy 147.324871 -16.941178) (xy 147.322021 -16.926849) (xy 145.088171 -16.926849) (xy 144.963689 -16.914589) + (xy 144.843991 -16.878279) (xy 144.733677 -16.819314) (xy 144.636986 -16.739962) (xy 144.557634 -16.643271) (xy 144.498669 -16.532957) + (xy 144.462359 -16.413259) (xy 144.450099 -16.288777) (xy 141.026774 -16.288777) (xy 136.651129 -20.664421) (xy 136.688311 -20.679822) + (xy 136.931679 -20.842436) (xy 137.138647 -21.049404) (xy 137.301261 -21.292772) (xy 137.413271 -21.563189) (xy 137.470373 -21.850262) + (xy 137.470373 -22.142958) (xy 137.413271 -22.430031) (xy 137.301261 -22.700448) (xy 137.138647 -22.943816) (xy 136.931679 -23.150784) + (xy 136.688311 -23.313398) (xy 136.417894 -23.425408) (xy 136.130821 -23.48251) (xy 135.838125 -23.48251) (xy 135.551052 -23.425408) + (xy 135.460983 -23.3881) (xy 135.460983 -25.08244) (xy 135.975983 -25.08244) (xy 136.100465 -25.0947) (xy 136.220163 -25.13101) + (xy 136.330477 -25.189975) (xy 136.427168 -25.269327) (xy 136.50652 -25.366018) (xy 136.565485 -25.476332) (xy 136.601795 -25.59603) + (xy 136.614055 -25.720512) (xy 136.614055 -28.220512) (xy 136.601795 -28.344994) (xy 136.565485 -28.464692) (xy 136.50652 -28.575006) + (xy 136.427168 -28.671697) (xy 136.330477 -28.751049) (xy 136.220163 -28.810014) (xy 136.100465 -28.846324) (xy 135.975983 -28.858584) + (xy 133.425983 -28.858584) (xy 133.301501 -28.846324) (xy 133.181803 -28.810014) (xy 133.071489 -28.751049) (xy 132.974798 -28.671697) + (xy 132.895446 -28.575006) (xy 132.836481 -28.464692) (xy 132.800171 -28.344994) (xy 132.787911 -28.220512) (xy 132.787911 -27.495401) + (xy 132.672778 -27.57233) (xy 132.284232 -27.733271) (xy 131.871755 -27.815318) (xy 131.451197 -27.815318) (xy 131.03872 -27.733271) + (xy 130.650174 -27.57233) (xy 130.300493 -27.338681) (xy 130.003113 -27.041301) (xy 129.769464 -26.69162) (xy 129.608523 -26.303074) + (xy 129.526476 -25.890597) (xy 129.526476 -25.470039) (xy 129.608523 -25.057562) (xy 129.769464 -24.669016) (xy 130.003113 -24.319335) + (xy 130.300493 -24.021955) (xy 130.650174 -23.788306) (xy 131.03872 -23.627365) (xy 131.451197 -23.545318) (xy 131.871755 -23.545318) + (xy 132.284232 -23.627365) (xy 132.672778 -23.788306) (xy 133.022459 -24.021955) (xy 133.319839 -24.319335) (xy 133.553488 -24.669016) + (xy 133.714429 -25.057562) (xy 133.719378 -25.08244) (xy 133.940984 -25.08244) (xy 133.940983 -21.577089) (xy 133.937307 -21.539766) + (xy 133.940983 -21.502444) (xy 133.940983 -21.502434) (xy 133.95198 -21.390781) (xy 133.988386 -21.270764) (xy 133.995437 -21.24752) + (xy 134.066009 -21.11549) (xy 134.098723 -21.075628) (xy 134.160982 -20.999765) (xy 134.189986 -20.975962) (xy 136.656802 -18.509146) + (xy 135.354083 -17.956175) (xy 135.244288 -17.896251) (xy 135.148293 -17.816058) (xy 135.069787 -17.718678) (xy 135.011788 -17.607853) + (xy 134.976524 -17.487843) (xy 134.970321 -17.418685) (xy 134.955018 -17.420058) (xy 134.830648 -17.406712) (xy 134.711272 -17.369358) + (xy 133.882817 -17.0177) (xy 133.773021 -16.957776) (xy 133.677026 -16.877583) (xy 133.59852 -16.780203) (xy 133.540521 -16.669378) + (xy 133.505257 -16.549368) (xy 133.494083 -16.424784) (xy 133.507429 -16.300414) (xy 133.544783 -16.181038) (xy 134.01366 -15.076432) + (xy 134.073584 -14.966636) (xy 134.153777 -14.870641) (xy 134.251157 -14.792135) (xy 134.361982 -14.734136) (xy 134.481992 -14.698872) + (xy 134.606576 -14.687698) (xy 134.730946 -14.701044) (xy 134.850322 -14.738398) (xy 135.678777 -15.090056) (xy 135.788573 -15.14998) + (xy 135.884568 -15.230173) (xy 135.894212 -15.242136) (xy 135.948267 -15.198558) (xy 136.059092 -15.140559) (xy 136.179102 -15.105295) + (xy 136.303686 -15.094121) (xy 136.428056 -15.107467) (xy 136.547433 -15.144821) (xy 138.184091 -15.839541) (xy 138.293886 -15.899465) + (xy 138.389881 -15.979658) (xy 138.468387 -16.077038) (xy 138.526386 -16.187863) (xy 138.56165 -16.307873) (xy 138.572824 -16.432457) + (xy 138.559478 -16.556827) (xy 138.53687 -16.629077) (xy 141.364876 -13.801071) (xy 141.364875 -11.368992) (xy 140.849875 -11.368992) + (xy 140.725393 -11.356732) (xy 140.605695 -11.320422) (xy 140.495381 -11.261457) (xy 140.39869 -11.182105) (xy 140.319338 -11.085414) + (xy 140.260373 -10.9751) (xy 140.224063 -10.855402) (xy 140.211803 -10.73092) (xy 140.211803 -10.005809) (xy 140.09667 -10.082738) + (xy 139.708124 -10.243679) (xy 139.295647 -10.325726) (xy 138.875089 -10.325726) (xy 138.462612 -10.243679) (xy 138.074066 -10.082738) + (xy 137.724385 -9.849089) (xy 137.427005 -9.551709) (xy 137.193356 -9.202028) (xy 137.032415 -8.813482) (xy 136.950368 -8.401005) + (xy 136.950368 -7.980447) (xy 137.032415 -7.56797) (xy 137.193356 -7.179424) (xy 137.427005 -6.829743) (xy 137.724385 -6.532363) + (xy 138.074066 -6.298714) (xy 138.462612 -6.137773) (xy 138.875089 -6.055726) (xy 139.295647 -6.055726) (xy 139.708124 -6.137773) + (xy 140.09667 -6.298714) (xy 140.446351 -6.532363) (xy 140.743731 -6.829743) (xy 140.97738 -7.179424) (xy 141.138321 -7.56797) + (xy 141.14327 -7.592848) (xy 141.364875 -7.592848) (xy 141.364875 -7.568165) (xy 141.361199 -7.530842) (xy 141.364875 -7.49352) + (xy 141.364875 -7.49351) (xy 141.375872 -7.381857) (xy 141.407981 -7.276006) (xy 141.419329 -7.238596) (xy 141.489901 -7.106566) + (xy 141.514136 -7.077036) (xy 141.584874 -6.990841) (xy 141.613878 -6.967038) (xy 142.741709 -5.839207) (xy 142.704527 -5.823806) + (xy 142.461159 -5.661192) (xy 142.254191 -5.454224) (xy 142.091577 -5.210856) (xy 141.979567 -4.940439) (xy 141.922465 -4.653366) + (xy 141.922465 -4.36067) (xy 141.979567 -4.073597) (xy 142.091577 -3.80318) (xy 142.254191 -3.559812) (xy 142.461159 -3.352844) + (xy 142.704527 -3.19023) (xy 142.974944 -3.07822) (xy 143.262017 -3.021118) (xy 143.554713 -3.021118) (xy 143.841786 -3.07822) + (xy 144.112203 -3.19023) (xy 144.355571 -3.352844) (xy 144.562539 -3.559812) (xy 144.725153 -3.80318) (xy 144.740554 -3.840362) + (xy 148.788767 0.207852) (xy 148.788766 6.1206) (xy 148.273766 6.1206) (xy 148.149284 6.13286) (xy 148.029586 6.16917) + (xy 147.919272 6.228135) (xy 147.822581 6.307487) (xy 147.743229 6.404178) (xy 147.684264 6.514492) (xy 147.647954 6.63419) + (xy 147.640107 6.713865) (xy 145.670591 6.713865) (xy 145.633258 6.710188) (xy 145.595925 6.713865) (xy 145.484272 6.724862) + (xy 145.341011 6.768319) (xy 145.208982 6.838891) (xy 145.093257 6.933864) (xy 145.069459 6.962862) (xy 142.165727 9.866595) + (xy 120.199194 9.866595) (xy 120.256301 9.728726) (xy 120.314379 9.436746) (xy 120.314379 9.139046) (xy 120.256301 8.847066) + (xy 120.142376 8.572027) (xy 119.976983 8.324498) (xy 119.766477 8.113992) (xy 119.622659 8.017896) (xy 119.766477 7.9218) + (xy 119.976983 7.711294) (xy 120.142376 7.463765) (xy 120.256301 7.188726) (xy 120.314379 6.896746) (xy 120.314379 6.599046) + (xy 120.256301 6.307066) (xy 120.142376 6.032027) (xy 119.976983 5.784498) (xy 119.766477 5.573992) (xy 119.622659 5.477896) + (xy 119.766477 5.3818) (xy 119.976983 5.171294) (xy 120.142376 4.923765) (xy 120.256301 4.648726) (xy 120.314379 4.356746) + (xy 120.314379 4.059046) (xy 120.256301 3.767066) (xy 120.142376 3.492027) (xy 119.976983 3.244498) (xy 119.766477 3.033992) + (xy 119.622659 2.937896) (xy 119.766477 2.8418) (xy 119.976983 2.631294) (xy 120.142376 2.383765) (xy 120.256301 2.108726) + (xy 120.314379 1.816746) (xy 120.314379 1.519046) (xy 120.256301 1.227066) (xy 120.142376 0.952027) (xy 119.976983 0.704498) + (xy 119.766477 0.493992) (xy 119.60327 0.384941) (xy 119.670642 0.175065) (xy 118.803079 -0.692499) (xy 117.935516 0.175065) + (xy 118.002888 0.384941) (xy 117.839681 0.493992) (xy 117.629175 0.704498) (xy 117.463782 0.952027) (xy 117.349857 1.227066) + (xy 117.291779 1.519046) (xy 117.291779 1.816746) (xy 117.349857 2.108726) (xy 117.463782 2.383765) (xy 117.629175 2.631294) + (xy 117.839681 2.8418) (xy 117.983499 2.937896) (xy 117.839681 3.033992) (xy 117.629175 3.244498) (xy 117.463782 3.492027) + (xy 117.349857 3.767066) (xy 117.291779 4.059046) (xy 117.291779 4.356746) (xy 117.349857 4.648726) (xy 117.463782 4.923765) + (xy 117.629175 5.171294) (xy 117.839681 5.3818) (xy 117.983499 5.477896) (xy 117.839681 5.573992) (xy 117.629175 5.784498) + (xy 117.463782 6.032027) (xy 117.349857 6.307066) (xy 117.291779 6.599046) (xy 117.291779 6.896746) (xy 117.349857 7.188726) + (xy 117.463782 7.463765) (xy 117.629175 7.711294) (xy 117.839681 7.9218) (xy 117.983499 8.017896) (xy 117.839681 8.113992) + (xy 117.629175 8.324498) (xy 117.463782 8.572027) (xy 117.349857 8.847066) (xy 117.291779 9.139046) (xy 117.291779 9.436746) + (xy 117.349857 9.728726) (xy 117.406964 9.866595) (xy 107.341713 9.866595) (xy 107.30438 9.862918) (xy 107.267047 9.866595) + (xy 107.155394 9.877592) (xy 107.012133 9.921049) (xy 106.880104 9.991621) (xy 106.764379 10.086594) (xy 106.740581 10.115592) + (xy 105.074379 11.781794) (xy 105.074379 11.679046) (xy 105.016301 11.387066) (xy 104.902376 11.112027) (xy 104.736983 10.864498) + (xy 104.526477 10.653992) (xy 104.382659 10.557896) (xy 104.526477 10.4618) (xy 104.736983 10.251294) (xy 104.902376 10.003765) + (xy 105.016301 9.728726) (xy 105.074379 9.436746) (xy 105.074379 9.139046) (xy 105.016301 8.847066) (xy 104.902376 8.572027) + (xy 104.736983 8.324498) (xy 104.526477 8.113992) (xy 104.382659 8.017896) (xy 104.526477 7.9218) (xy 104.736983 7.711294) + (xy 104.902376 7.463765) (xy 105.016301 7.188726) (xy 105.074379 6.896746) (xy 105.074379 6.599046) (xy 105.016301 6.307066) + (xy 104.902376 6.032027) (xy 104.736983 5.784498) (xy 104.526477 5.573992) (xy 104.382659 5.477896) (xy 104.526477 5.3818) + (xy 104.736983 5.171294) (xy 104.902376 4.923765) (xy 105.016301 4.648726) (xy 105.074379 4.356746) (xy 105.074379 4.059046) + (xy 105.026655 3.819121) (xy 109.650389 -0.804613) (xy 117.285966 -0.804613) (xy 117.328283 -0.509937) (xy 117.427277 -0.229177) + (xy 117.50415 -0.085358) (xy 117.75591 -0.004541) (xy 118.623474 -0.872104) (xy 118.982684 -0.872104) (xy 119.850248 -0.004541) + (xy 120.102008 -0.085358) (xy 120.230536 -0.353883) (xy 120.304208 -0.642323) (xy 120.320192 -0.939595) (xy 120.277875 -1.234271) + (xy 120.178881 -1.515031) (xy 120.102008 -1.65885) (xy 119.850248 -1.739667) (xy 118.982684 -0.872104) (xy 118.623474 -0.872104) + (xy 117.75591 -1.739667) (xy 117.50415 -1.65885) (xy 117.375622 -1.390325) (xy 117.30195 -1.101885) (xy 117.285966 -0.804613) + (xy 109.650389 -0.804613) (xy 111.210711 -2.364935) (xy 117.935516 -2.364935) (xy 118.007047 -2.142104) (xy 117.935516 -1.919273) + (xy 118.803079 -1.051709) (xy 119.670642 -1.919273) (xy 119.599111 -2.142104) (xy 119.670642 -2.364935) (xy 118.803079 -3.232499) + (xy 117.935516 -2.364935) (xy 111.210711 -2.364935) (xy 112.190389 -3.344613) (xy 117.285966 -3.344613) (xy 117.328283 -3.049937) + (xy 117.427277 -2.769177) (xy 117.50415 -2.625358) (xy 117.75591 -2.544541) (xy 118.623474 -3.412104) (xy 118.982684 -3.412104) + (xy 119.850248 -2.544541) (xy 120.102008 -2.625358) (xy 120.230536 -2.893883) (xy 120.304208 -3.182323) (xy 120.312785 -3.341856) + (xy 129.304894 -3.341856) (xy 129.304894 -0.841856) (xy 129.317154 -0.717374) (xy 129.353464 -0.597676) (xy 129.412429 -0.487362) + (xy 129.491781 -0.390671) (xy 129.588472 -0.311319) (xy 129.698786 -0.252354) (xy 129.818484 -0.216044) (xy 129.942966 -0.203784) + (xy 130.56364 -0.203784) (xy 130.582992 -0.16758) (xy 130.648559 -0.087687) (xy 130.677966 -0.051855) (xy 130.706964 -0.028057) + (xy 134.815129 4.080109) (xy 134.838927 4.109107) (xy 134.867925 4.132905) (xy 134.954651 4.20408) (xy 135.027579 4.243061) + (xy 135.086681 4.274652) (xy 135.229942 4.318109) (xy 135.341595 4.329106) (xy 135.341605 4.329106) (xy 135.378928 4.332782) + (xy 135.416251 4.329106) (xy 135.777278 4.329106) (xy 135.94564 4.581078) (xy 136.16676 4.802198) (xy 136.426769 4.97593) + (xy 136.715675 5.095599) (xy 137.022377 5.156606) (xy 137.335087 5.156606) (xy 137.641789 5.095599) (xy 137.930695 4.97593) + (xy 138.190704 4.802198) (xy 138.411824 4.581078) (xy 138.585556 4.321069) (xy 138.603273 4.278297) (xy 138.615289 4.274652) + (xy 138.747318 4.20408) (xy 138.863043 4.109107) (xy 138.885547 4.081686) (xy 138.992801 4.091306) (xy 139.117171 4.07796) + (xy 139.236547 4.040606) (xy 140.065002 3.688948) (xy 140.174798 3.629024) (xy 140.270793 3.548831) (xy 140.349299 3.451451) + (xy 140.407298 3.340626) (xy 140.442562 3.220616) (xy 140.453736 3.096032) (xy 140.44039 2.971662) (xy 140.403036 2.852286) + (xy 139.934159 1.74768) (xy 139.874235 1.637884) (xy 139.794042 1.541889) (xy 139.696662 1.463383) (xy 139.585837 1.405384) + (xy 139.465827 1.37012) (xy 139.341243 1.358946) (xy 139.216873 1.372292) (xy 139.097497 1.409646) (xy 138.269042 1.761304) + (xy 138.159246 1.821228) (xy 138.063251 1.901421) (xy 137.984745 1.998801) (xy 137.926746 2.109626) (xy 137.913381 2.15511) + (xy 137.641789 2.042613) (xy 137.335087 1.981606) (xy 137.022377 1.981606) (xy 136.715675 2.042613) (xy 136.426769 2.162282) + (xy 136.16676 2.336014) (xy 135.94564 2.557134) (xy 135.777278 2.809106) (xy 135.69373 2.809106) (xy 133.949432 1.064808) + (xy 140.917974 1.064808) (xy 140.93132 1.189178) (xy 140.968674 1.308554) (xy 141.437551 2.41316) (xy 141.497475 2.522956) + (xy 141.577668 2.618951) (xy 141.675048 2.697457) (xy 141.785873 2.755456) (xy 141.905883 2.79072) (xy 142.030467 2.801894) + (xy 142.154837 2.788548) (xy 142.274213 2.751194) (xy 143.102668 2.399536) (xy 143.212464 2.339612) (xy 143.308459 2.259419) + (xy 143.318103 2.247456) (xy 143.372158 2.291034) (xy 143.482983 2.349033) (xy 143.602993 2.384297) (xy 143.727577 2.395471) + (xy 143.851947 2.382125) (xy 143.971324 2.344771) (xy 145.607982 1.650051) (xy 145.717777 1.590127) (xy 145.813772 1.509934) + (xy 145.892278 1.412554) (xy 145.950277 1.301729) (xy 145.985541 1.181719) (xy 145.996715 1.057135) (xy 145.983369 0.932765) + (xy 145.946015 0.813388) (xy 145.251295 -0.82327) (xy 145.191371 -0.933065) (xy 145.111178 -1.02906) (xy 145.013798 -1.107566) + (xy 144.902973 -1.165565) (xy 144.782963 -1.200829) (xy 144.658379 -1.212003) (xy 144.534009 -1.198657) (xy 144.414632 -1.161303) + (xy 142.777974 -0.466583) (xy 142.668179 -0.406659) (xy 142.572184 -0.326466) (xy 142.493678 -0.229086) (xy 142.435679 -0.118261) + (xy 142.400415 0.001749) (xy 142.394212 0.070907) (xy 142.378909 0.069534) (xy 142.254539 0.08288) (xy 142.135163 0.120234) + (xy 141.306708 0.471892) (xy 141.196912 0.531816) (xy 141.100917 0.612009) (xy 141.022411 0.709389) (xy 140.964412 0.820214) + (xy 140.929148 0.940224) (xy 140.917974 1.064808) (xy 133.949432 1.064808) (xy 133.814375 0.929751) (xy 133.909687 0.94871) + (xy 134.202383 0.94871) (xy 134.489456 0.891608) (xy 134.759873 0.779598) (xy 135.003241 0.616984) (xy 135.210209 0.410016) + (xy 135.372823 0.166648) (xy 135.484833 -0.103769) (xy 135.541935 -0.390842) (xy 135.541935 -0.683538) (xy 135.484833 -0.970611) + (xy 135.372823 -1.241028) (xy 135.220085 -1.469616) (xy 135.243921 -1.479489) (xy 135.593602 -1.713138) (xy 135.890982 -2.010518) + (xy 136.1033 -2.328275) (xy 136.1033 -2.26318) (xy 136.204327 -1.755282) (xy 136.402499 -1.276853) (xy 136.6902 -0.846278) + (xy 137.056374 -0.480104) (xy 137.486949 -0.192403) (xy 137.965378 0.005769) (xy 138.473276 0.106796) (xy 138.991124 0.106796) + (xy 139.499022 0.005769) (xy 139.977451 -0.192403) (xy 140.408026 -0.480104) (xy 140.7742 -0.846278) (xy 141.061901 -1.276853) + (xy 141.260073 -1.755282) (xy 141.3611 -2.26318) (xy 141.3611 -2.781028) (xy 141.260073 -3.288926) (xy 141.061901 -3.767355) + (xy 140.7742 -4.19793) (xy 140.408026 -4.564104) (xy 139.977451 -4.851805) (xy 139.499022 -5.049977) (xy 138.991124 -5.151004) + (xy 138.473276 -5.151004) (xy 137.965378 -5.049977) (xy 137.486949 -4.851805) (xy 137.056374 -4.564104) (xy 136.6902 -4.19793) + (xy 136.402499 -3.767355) (xy 136.353997 -3.650261) (xy 136.285572 -3.994257) (xy 136.124631 -4.382803) (xy 135.890982 -4.732484) + (xy 135.593602 -5.029864) (xy 135.243921 -5.263513) (xy 134.855375 -5.424454) (xy 134.442898 -5.506501) (xy 134.02234 -5.506501) + (xy 133.609863 -5.424454) (xy 133.221317 -5.263513) (xy 132.871636 -5.029864) (xy 132.574256 -4.732484) (xy 132.340607 -4.382803) + (xy 132.179666 -3.994257) (xy 132.176816 -3.979928) (xy 129.942966 -3.979928) (xy 129.818484 -3.967668) (xy 129.698786 -3.931358) + (xy 129.588472 -3.872393) (xy 129.491781 -3.793041) (xy 129.412429 -3.69635) (xy 129.353464 -3.586036) (xy 129.317154 -3.466338) + (xy 129.304894 -3.341856) (xy 120.312785 -3.341856) (xy 120.320192 -3.479595) (xy 120.277875 -3.774271) (xy 120.178881 -4.055031) + (xy 120.102008 -4.19885) (xy 119.850248 -4.279667) (xy 118.982684 -3.412104) (xy 118.623474 -3.412104) (xy 117.75591 -4.279667) + (xy 117.50415 -4.19885) (xy 117.375622 -3.930325) (xy 117.30195 -3.641885) (xy 117.285966 -3.344613) (xy 112.190389 -3.344613) + (xy 117.291779 -8.446002) (xy 117.291779 -8.343254) (xy 117.349857 -8.051274) (xy 117.463782 -7.776235) (xy 117.629175 -7.528706) + (xy 117.839681 -7.3182) (xy 117.983499 -7.222104) (xy 117.839681 -7.126008) (xy 117.629175 -6.915502) (xy 117.463782 -6.667973) + (xy 117.349857 -6.392934) (xy 117.291779 -6.100954) (xy 117.291779 -5.803254) (xy 117.349857 -5.511274) (xy 117.463782 -5.236235) + (xy 117.629175 -4.988706) (xy 117.839681 -4.7782) (xy 118.002888 -4.669149) (xy 117.935516 -4.459273) (xy 118.803079 -3.591709) + (xy 119.670642 -4.459273) (xy 119.60327 -4.669149) (xy 119.766477 -4.7782) (xy 119.976983 -4.988706) (xy 120.142376 -5.236235) + (xy 120.256301 -5.511274) (xy 120.314379 -5.803254) (xy 120.314379 -6.100954) (xy 120.256301 -6.392934) (xy 120.142376 -6.667973) + (xy 119.976983 -6.915502) (xy 119.766477 -7.126008) (xy 119.622659 -7.222104) (xy 119.766477 -7.3182) (xy 119.976983 -7.528706) + (xy 120.142376 -7.776235) (xy 120.256301 -8.051274) (xy 120.314379 -8.343254) (xy 120.314379 -8.640954) (xy 120.256301 -8.932934) + (xy 120.142376 -9.207973) (xy 119.976983 -9.455502) (xy 119.766477 -9.666008) (xy 119.518948 -9.831401) (xy 119.243909 -9.945326) + (xy 118.951929 -10.003404) (xy 118.654229 -10.003404) (xy 118.362249 -9.945326) (xy 118.08721 -9.831401) (xy 117.839681 -9.666008) + (xy 117.629175 -9.455502) (xy 117.6 -9.411838) (xy 117.6 -9.456281) (xy 117.643937 -9.500218) (xy 117.757205 -9.669736) + (xy 117.835226 -9.858094) (xy 117.875 -10.058053) (xy 117.875 -10.261931) (xy 117.835226 -10.46189) (xy 117.757205 -10.650248) + (xy 117.643937 -10.819766) (xy 117.499774 -10.963929) (xy 117.330256 -11.077197) (xy 117.141898 -11.155218) (xy 116.941939 -11.194992) + (xy 116.738061 -11.194992) (xy 116.538102 -11.155218) (xy 116.349744 -11.077197) (xy 116.180226 -10.963929) (xy 116.036063 -10.819766) + (xy 115.922795 -10.650248) (xy 115.844774 -10.46189) (xy 115.805 -10.261931) (xy 115.805 -10.058053) (xy 115.844774 -9.858094) + (xy 115.922795 -9.669736) (xy 116.036063 -9.500218) (xy 116.08 -9.456281) (xy 116.08 -9.383827) (xy 105.074379 1.621795) + (xy 105.074379 1.519046) (xy 105.016301 1.227066) (xy 104.902376 0.952027) (xy 104.736983 0.704498) (xy 104.526477 0.493992) + (xy 104.382659 0.397896) (xy 104.526477 0.3018) (xy 104.736983 0.091294) (xy 104.902376 -0.156235) (xy 105.016301 -0.431274) + (xy 105.074379 -0.723254) (xy 105.074379 -1.020954) (xy 105.016301 -1.312934) (xy 104.902376 -1.587973) (xy 104.736983 -1.835502) + (xy 104.526477 -2.046008) (xy 104.382659 -2.142104) (xy 104.526477 -2.2382) (xy 104.736983 -2.448706) (xy 104.902376 -2.696235) + (xy 105.016301 -2.971274) (xy 105.074379 -3.263254) (xy 105.074379 -3.560954) (xy 105.016301 -3.852934) (xy 104.902376 -4.127973) + (xy 104.736983 -4.375502) (xy 104.526477 -4.586008) (xy 104.36327 -4.695059) (xy 104.430642 -4.904935) (xy 103.563079 -5.772499) + (xy 102.695516 -4.904935) (xy 102.762888 -4.695059) (xy 102.599681 -4.586008) (xy 102.389175 -4.375502) (xy 102.223782 -4.127973) + (xy 102.109857 -3.852934) (xy 102.051779 -3.560954) (xy 102.051779 -3.263254) (xy 102.109857 -2.971274) (xy 102.223782 -2.696235) + (xy 102.389175 -2.448706) (xy 102.599681 -2.2382) (xy 102.743499 -2.142104) (xy 102.599681 -2.046008) (xy 102.389175 -1.835502) + (xy 102.223782 -1.587973) (xy 102.109857 -1.312934) (xy 102.051779 -1.020954) (xy 102.051779 -0.723254) (xy 102.109857 -0.431274) + (xy 102.223782 -0.156235) (xy 102.389175 0.091294) (xy 102.599681 0.3018) (xy 102.743499 0.397896) (xy 102.599681 0.493992) + (xy 102.389175 0.704498) (xy 102.223782 0.952027) (xy 102.109857 1.227066) (xy 102.051779 1.519046) (xy 102.051779 1.816746) + (xy 102.109857 2.108726) (xy 102.223782 2.383765) (xy 102.389175 2.631294) (xy 102.599681 2.8418) (xy 102.743499 2.937896) + (xy 102.599681 3.033992) (xy 102.389175 3.244498) (xy 102.223782 3.492027) (xy 102.109857 3.767066) (xy 102.051779 4.059046) + (xy 102.051779 4.356746) (xy 102.109857 4.648726) (xy 102.223782 4.923765) (xy 102.389175 5.171294) (xy 102.599681 5.3818) + (xy 102.743499 5.477896) (xy 102.599681 5.573992) (xy 102.389175 5.784498) (xy 102.223782 6.032027) (xy 102.109857 6.307066) + (xy 102.051779 6.599046) (xy 102.051779 6.896746) (xy 102.109857 7.188726) (xy 102.223782 7.463765) (xy 102.389175 7.711294) + (xy 102.599681 7.9218) (xy 102.743499 8.017896) (xy 102.599681 8.113992) (xy 102.389175 8.324498) (xy 102.223782 8.572027) + (xy 102.109857 8.847066) (xy 102.051779 9.139046) (xy 102.051779 9.436746) (xy 102.109857 9.728726) (xy 102.223782 10.003765) + (xy 102.389175 10.251294) (xy 102.599681 10.4618) (xy 102.743499 10.557896) (xy 102.599681 10.653992) (xy 102.389175 10.864498) + (xy 102.223782 11.112027) (xy 102.109857 11.387066) (xy 102.051779 11.679046) (xy 102.051779 11.976746) (xy 102.109857 12.268726) + (xy 102.223782 12.543765) (xy 102.389175 12.791294) (xy 102.599681 13.0018) (xy 102.743499 13.097896) (xy 102.599681 13.193992) + (xy 102.389175 13.404498) (xy 102.253269 13.607896) (xy 85.681294 13.607896) (xy 85.485642 13.412244) (xy 85.485642 11.735704) + (xy 91.507465 5.713882) (xy 91.536462 5.690085) (xy 91.631435 5.57436) (xy 91.702007 5.442331) (xy 91.745464 5.29907) + (xy 91.756461 5.187417) (xy 91.756461 5.187408) (xy 91.760137 5.150085) (xy 91.756461 5.112762) (xy 91.756461 -3.027545) + (xy 92.271461 -3.027545) (xy 92.395943 -3.039805) (xy 92.515641 -3.076115) (xy 92.625955 -3.13508) (xy 92.722646 -3.214432) + (xy 92.801998 -3.311123) (xy 92.860963 -3.421437) (xy 92.897273 -3.541135) (xy 92.909533 -3.665617) (xy 92.909533 -5.884613) + (xy 102.045966 -5.884613) (xy 102.088283 -5.589937) (xy 102.187277 -5.309177) (xy 102.26415 -5.165358) (xy 102.51591 -5.084541) + (xy 103.383474 -5.952104) (xy 103.369331 -5.966246) (xy 103.548937 -6.145852) (xy 103.563079 -6.131709) (xy 103.577221 -6.145852) + (xy 103.756827 -5.966246) (xy 103.742684 -5.952104) (xy 104.610248 -5.084541) (xy 104.862008 -5.165358) (xy 104.990536 -5.433883) + (xy 105.064208 -5.722323) (xy 105.080192 -6.019595) (xy 105.037875 -6.314271) (xy 104.938881 -6.595031) (xy 104.862008 -6.73885) + (xy 104.61025 -6.819667) (xy 104.72627 -6.935687) (xy 104.646804 -7.015153) (xy 104.683559 -7.026302) (xy 104.793873 -7.085267) + (xy 104.890564 -7.164619) (xy 104.969916 -7.26131) (xy 105.028881 -7.371624) (xy 105.065191 -7.491322) (xy 105.077451 -7.615804) + (xy 105.077451 -9.368404) (xy 105.065191 -9.492886) (xy 105.028881 -9.612584) (xy 104.969916 -9.722898) (xy 104.890564 -9.819589) + (xy 104.793873 -9.898941) (xy 104.683559 -9.957906) (xy 104.563861 -9.994216) (xy 104.439379 -10.006476) (xy 102.686779 -10.006476) + (xy 102.562297 -9.994216) (xy 102.442599 -9.957906) (xy 102.332285 -9.898941) (xy 102.235594 -9.819589) (xy 102.156242 -9.722898) + (xy 102.097277 -9.612584) (xy 102.060967 -9.492886) (xy 102.048707 -9.368404) (xy 102.048707 -7.615804) (xy 102.060967 -7.491322) + (xy 102.097277 -7.371624) (xy 102.156242 -7.26131) (xy 102.235594 -7.164619) (xy 102.332285 -7.085267) (xy 102.442599 -7.026302) + (xy 102.479354 -7.015153) (xy 102.399888 -6.935687) (xy 102.515908 -6.819667) (xy 102.26415 -6.73885) (xy 102.135622 -6.470325) + (xy 102.06195 -6.181885) (xy 102.045966 -5.884613) (xy 92.909533 -5.884613) (xy 92.909533 -6.165617) (xy 92.897273 -6.290099) + (xy 92.860963 -6.409797) (xy 92.801998 -6.520111) (xy 92.722646 -6.616802) (xy 92.625955 -6.696154) (xy 92.515641 -6.755119) + (xy 92.395943 -6.791429) (xy 92.271461 -6.803689) (xy 91.756461 -6.803689) (xy 91.756461 -12.6244) (xy 92.832971 -12.167449) + (xy 92.952348 -12.130095) (xy 93.076718 -12.116749) (xy 93.201302 -12.127923) (xy 93.321312 -12.163187) (xy 93.432137 -12.221186) + (xy 93.529517 -12.299692) (xy 93.60971 -12.395687) (xy 93.669634 -12.505482) (xy 94.364354 -14.14214) (xy 94.401708 -14.261517) + (xy 94.415054 -14.385887) (xy 94.40388 -14.510471) (xy 94.368616 -14.630481) (xy 94.310617 -14.741306) (xy 94.232111 -14.838686) + (xy 94.136116 -14.918879) (xy 94.026321 -14.978803) (xy 92.389663 -15.673523) (xy 92.270286 -15.710877) (xy 92.145916 -15.724223) + (xy 92.021332 -15.713049) (xy 91.901322 -15.677785) (xy 91.790497 -15.619786) (xy 91.736442 -15.576208) (xy 91.726798 -15.588171) + (xy 91.630803 -15.668364) (xy 91.521007 -15.728288) (xy 91.361107 -15.796162) (xy 93.738075 -18.17313) (xy 94.248115 -18.17313) + (xy 94.248115 -17.880434) (xy 94.305217 -17.593361) (xy 94.417227 -17.322944) (xy 94.579841 -17.079576) (xy 94.786809 -16.872608) + (xy 95.030177 -16.709994) (xy 95.300594 -16.597984) (xy 95.587667 -16.540882) (xy 95.880363 -16.540882) (xy 96.167436 -16.597984) + (xy 96.437853 -16.709994) (xy 96.681221 -16.872608) (xy 96.888189 -17.079576) (xy 97.050803 -17.322944) (xy 97.162813 -17.593361) + (xy 97.219915 -17.880434) (xy 97.219915 -18.17313) (xy 97.162813 -18.460203) (xy 97.050803 -18.73062) (xy 96.888189 -18.973988) + (xy 96.681221 -19.180956) (xy 96.437853 -19.34357) (xy 96.167436 -19.45558) (xy 95.880363 -19.512682) (xy 95.587667 -19.512682) + (xy 95.300594 -19.45558) (xy 95.030177 -19.34357) (xy 94.786809 -19.180956) (xy 94.579841 -18.973988) (xy 94.417227 -18.73062) + (xy 94.305217 -18.460203) (xy 94.248115 -18.17313) (xy 93.738075 -18.17313) (xy 96.53726 -20.972314) (xy 96.555851 -20.911029) + (xy 96.614816 -20.800715) (xy 96.694168 -20.704024) (xy 96.790859 -20.624672) (xy 96.901173 -20.565707) (xy 97.020871 -20.529397) + (xy 97.145353 -20.517137) (xy 99.695353 -20.517137) (xy 99.819835 -20.529397) (xy 99.939533 -20.565707) (xy 100.049847 -20.624672) + (xy 100.146538 -20.704024) (xy 100.22589 -20.800715) (xy 100.284855 -20.911029) (xy 100.321165 -21.030727) (xy 100.333425 -21.155209) + (xy 100.333425 -23.655209) (xy 100.321165 -23.779691) (xy 100.284855 -23.899389) (xy 100.22589 -24.009703) (xy 100.146538 -24.106394) + (xy 100.049847 -24.185746) (xy 99.939533 -24.244711) (xy 99.819835 -24.281021) (xy 99.695353 -24.293281) (xy 97.438748 -24.293281) + (xy 97.433799 -24.31816) (xy 97.272858 -24.706706) (xy 97.039209 -25.056387) (xy 96.741829 -25.353767) (xy 96.392148 -25.587416) + (xy 96.003602 -25.748357) (xy 95.591125 -25.830404) (xy 95.170567 -25.830404) (xy 94.75809 -25.748357) (xy 94.369544 -25.587416) + (xy 94.019863 -25.353767) (xy 93.722483 -25.056387) (xy 93.488834 -24.706706) (xy 93.327893 -24.31816) (xy 93.245846 -23.905683) + (xy 93.245846 -23.485125) (xy 93.327893 -23.072648) (xy 93.488834 -22.684102) (xy 93.722483 -22.334421) (xy 94.019863 -22.037041) + (xy 94.369544 -21.803392) (xy 94.75809 -21.642451) (xy 95.008069 -21.592727) (xy 93.686619 -20.271277) (xy 93.585723 -20.778518) + (xy 93.387551 -21.256947) (xy 93.09985 -21.687522) (xy 92.733676 -22.053696) (xy 92.303101 -22.341397) (xy 91.824672 -22.539569) + (xy 91.316774 -22.640596) (xy 90.798926 -22.640596) (xy 90.291028 -22.539569) (xy 90.224666 -22.512081) (xy 90.435196 -22.827162) + (xy 90.596137 -23.215708) (xy 90.678184 -23.628185) (xy 90.678184 -24.048743) (xy 90.596137 -24.46122) (xy 90.435196 -24.849766) + (xy 90.201547 -25.199447) (xy 89.904167 -25.496827) (xy 89.554486 -25.730476) (xy 89.16594 -25.891417) (xy 88.753463 -25.973464) + (xy 88.332905 -25.973464) (xy 87.920428 -25.891417) (xy 87.531882 -25.730476) (xy 87.441602 -25.670153) (xy 87.441602 -26.368108) + (xy 87.429342 -26.49259) (xy 87.393032 -26.612288) (xy 87.334067 -26.722602) (xy 87.254715 -26.819293) (xy 87.158024 -26.898645) + (xy 87.04771 -26.95761) (xy 86.928012 -26.99392) (xy 86.80353 -27.00618) (xy 84.25353 -27.00618) (xy 84.129048 -26.99392) + (xy 84.00935 -26.95761) (xy 83.899036 -26.898645) (xy 83.802345 -26.819293) (xy 83.722993 -26.722602) (xy 83.664028 -26.612288) + (xy 83.627718 -26.49259) (xy 83.615458 -26.368108) (xy 83.615458 -23.868108) (xy 83.627718 -23.743626) (xy 83.664028 -23.623928) + (xy 83.722993 -23.513614) (xy 83.802345 -23.416923) (xy 83.899036 -23.337571) (xy 84.00935 -23.278606) (xy 84.088518 -23.254591) + (xy 84.050588 -23.208372) (xy 84.009598 -23.158426) (xy 83.958262 -23.062384) (xy 83.939026 -23.026396) (xy 83.895569 -22.883135) + (xy 83.884572 -22.771482) (xy 83.884572 -22.771472) (xy 83.880896 -22.73415) (xy 83.884572 -22.696827) (xy 83.884573 -17.887689) + (xy 83.880896 -17.850357) (xy 83.884573 -17.813024) (xy 83.89557 -17.701371) (xy 83.906516 -17.665285) (xy 83.939026 -17.558111) + (xy 84.009598 -17.426081) (xy 84.063079 -17.360915) (xy 84.069115 -17.35356) (xy 84.009571 -17.054213) (xy 84.009571 -16.741503) + (xy 84.070578 -16.434801) (xy 84.190247 -16.145895) (xy 84.363979 -15.885886) (xy 84.585099 -15.664766) (xy 84.845108 -15.491034) + (xy 85.134014 -15.371365) (xy 85.440716 -15.310358) (xy 85.753426 -15.310358) (xy 86.060128 -15.371365) (xy 86.33172 -15.483862) + (xy 86.345085 -15.438378) (xy 86.403084 -15.327553) (xy 86.48159 -15.230173) (xy 86.577585 -15.14998) (xy 86.687381 -15.090056) + (xy 87.515836 -14.738398) (xy 87.635212 -14.701044) (xy 87.759582 -14.687698) (xy 87.884166 -14.698872) (xy 88.004176 -14.734136) + (xy 88.115001 -14.792135) (xy 88.212381 -14.870641) (xy 88.292574 -14.966636) (xy 88.352498 -15.076432) (xy 88.821375 -16.181038) + (xy 88.858729 -16.300414) (xy 88.872075 -16.424784) (xy 88.860901 -16.549368) (xy 88.825637 -16.669378) (xy 88.767638 -16.780203) + (xy 88.689132 -16.877583) (xy 88.593137 -16.957776) (xy 88.483341 -17.0177) (xy 87.654886 -17.369358) (xy 87.53551 -17.406712) + (xy 87.41114 -17.420058) (xy 87.303886 -17.410438) (xy 87.281382 -17.437859) (xy 87.165657 -17.532832) (xy 87.033628 -17.603404) + (xy 87.021612 -17.607049) (xy 87.003895 -17.649821) (xy 86.830163 -17.90983) (xy 86.609043 -18.13095) (xy 86.349034 -18.304682) + (xy 86.060128 -18.424351) (xy 85.753426 -18.485358) (xy 85.440716 -18.485358) (xy 85.404572 -18.478168) (xy 85.404572 -20.872343) + (xy 85.434479 -20.842436) (xy 85.677847 -20.679822) (xy 85.948264 -20.567812) (xy 86.235337 -20.51071) (xy 86.528033 -20.51071) + (xy 86.815106 -20.567812) (xy 87.085523 -20.679822) (xy 87.328891 -20.842436) (xy 87.535859 -21.049404) (xy 87.698473 -21.292772) + (xy 87.810483 -21.563189) (xy 87.859708 -21.810662) (xy 87.920428 -21.785511) (xy 88.332905 -21.703464) (xy 88.753463 -21.703464) + (xy 89.100902 -21.772574) (xy 89.01585 -21.687522) (xy 88.728149 -21.256947) (xy 88.529977 -20.778518) (xy 88.42895 -20.27062) + (xy 88.42895 -19.752772) (xy 88.529977 -19.244874) (xy 88.728149 -18.766445) (xy 89.01585 -18.33587) (xy 89.382024 -17.969696) + (xy 89.812599 -17.681995) (xy 90.291028 -17.483823) (xy 90.798269 -17.382927) (xy 89.138349 -15.723006) (xy 89.109351 -15.699208) + (xy 89.085553 -15.67021) (xy 89.085552 -15.670209) (xy 89.014377 -15.583483) (xy 88.943805 -15.451453) (xy 88.916116 -15.36017) + (xy 88.900349 -15.308193) (xy 88.889351 -15.19654) (xy 88.889351 -15.196529) (xy 88.885675 -15.159207) (xy 88.889351 -15.121885) + (xy 88.889351 -14.29069) (xy 88.885675 -14.253368) (xy 88.889351 -14.216046) (xy 88.889351 -14.216036) (xy 88.900348 -14.104383) + (xy 88.939298 -13.97598) (xy 88.943805 -13.961122) (xy 89.014377 -13.829092) (xy 89.037724 -13.800644) (xy 89.10935 -13.713367) + (xy 89.138354 -13.689564) (xy 90.236462 -12.591455) (xy 90.236461 -6.803689) (xy 90.014856 -6.803689) (xy 90.009907 -6.828568) + (xy 89.848966 -7.217114) (xy 89.615317 -7.566795) (xy 89.317937 -7.864175) (xy 88.968256 -8.097824) (xy 88.57971 -8.258765) + (xy 88.167233 -8.340812) (xy 87.746675 -8.340812) (xy 87.334198 -8.258765) (xy 86.945652 -8.097824) (xy 86.595971 -7.864175) + (xy 86.298591 -7.566795) (xy 86.064942 -7.217114) (xy 85.904001 -6.828568) (xy 85.821954 -6.416091) (xy 85.821954 -5.995533) + (xy 85.904001 -5.583056) (xy 86.064942 -5.19451) (xy 86.298591 -4.844829) (xy 86.595971 -4.547449) (xy 86.945652 -4.3138) + (xy 87.334198 -4.152859) (xy 87.746675 -4.070812) (xy 88.167233 -4.070812) (xy 88.57971 -4.152859) (xy 88.968256 -4.3138) + (xy 89.083389 -4.390729) (xy 89.083389 -3.665617) (xy 89.095649 -3.541135) (xy 89.131959 -3.421437) (xy 89.190924 -3.311123) + (xy 89.270276 -3.214432) (xy 89.366967 -3.13508) (xy 89.477281 -3.076115) (xy 89.596979 -3.039805) (xy 89.721461 -3.027545) + (xy 90.236462 -3.027545) (xy 90.236461 4.835282) (xy 84.385841 10.685903) (xy 82.590965 10.685903) (xy 82.586016 10.661024) + (xy 82.425075 10.272478) (xy 82.191426 9.922797) (xy 81.894046 9.625417) (xy 81.544365 9.391768) (xy 81.155819 9.230827) + (xy 80.743342 9.14878) (xy 80.322784 9.14878) (xy 79.910307 9.230827) (xy 79.521761 9.391768) (xy 79.17208 9.625417) + (xy 78.8747 9.922797) (xy 78.641051 10.272478) (xy 78.48011 10.661024) (xy 78.398063 11.073501) (xy 78.398063 11.494059) + (xy 78.48011 11.906536) (xy 78.641051 12.295082) (xy 78.8747 12.644763) (xy 79.17208 12.942143) (xy 79.521761 13.175792) + (xy 79.910307 13.336733) (xy 80.322784 13.41878) (xy 80.743342 13.41878) (xy 81.155819 13.336733) (xy 81.544365 13.175792) + (xy 81.659498 13.098863) (xy 81.659498 13.823975) (xy 81.671758 13.948457) (xy 81.708068 14.068155) (xy 81.767033 14.178469) + (xy 81.846385 14.27516) (xy 81.943076 14.354512) (xy 82.05339 14.413477) (xy 82.173088 14.449787) (xy 82.29757 14.462047) + (xy 82.812571 14.462047) (xy 82.81257 22.324874) (xy 76.96195 28.175495) (xy 75.167074 28.175495) (xy 75.162125 28.150616) + (xy 75.001184 27.76207) (xy 74.767535 27.412389) (xy 74.470155 27.115009) (xy 74.120474 26.88136) (xy 73.731928 26.720419) + (xy 73.319451 26.638372) (xy 72.898893 26.638372) (xy 72.486416 26.720419) (xy 72.09787 26.88136) (xy 71.748189 27.115009) + (xy 71.450809 27.412389) (xy 71.21716 27.76207) (xy 71.056219 28.150616) (xy 70.974172 28.563093) (xy 68.40651 28.563093) + (xy 68.40651 28.420033) (xy 68.324463 28.007556) (xy 68.163522 27.61901) (xy 67.929873 27.269329) (xy 67.632493 26.971949) + (xy 67.282812 26.7383) (xy 66.894266 26.577359) (xy 66.481789 26.495312) (xy 66.061231 26.495312) (xy 65.648754 26.577359) + (xy 65.260208 26.7383) (xy 65.169928 26.798623) (xy 65.169928 26.100668) (xy 65.157668 25.976186) (xy 65.121358 25.856488) + (xy 65.062393 25.746174) (xy 64.983041 25.649483) (xy 64.88635 25.570131) (xy 64.776036 25.511166) (xy 64.656338 25.474856) + (xy 64.531856 25.462596) (xy 61.981856 25.462596) (xy 61.857374 25.474856) (xy 61.737676 25.511166) (xy 61.627362 25.570131) + (xy 61.530671 25.649483) (xy 61.451319 25.746174) (xy 61.392354 25.856488) (xy 61.356044 25.976186) (xy 61.343784 26.100668) + (xy 56.641448 26.100668) (xy 56.947474 25.379716) (xy 56.984828 25.260339) (xy 56.998174 25.135969) (xy 56.987 25.011385) + (xy 56.951736 24.891375) (xy 56.893737 24.78055) (xy 56.815231 24.68317) (xy 56.719236 24.602977) (xy 56.609441 24.543053) + (xy 54.972783 23.848333) (xy 54.853406 23.810979) (xy 54.729036 23.797633) (xy 54.604452 23.808807) (xy 54.484442 23.844071) + (xy 54.373617 23.90207) (xy 54.319562 23.945648) (xy 54.309918 23.933685) (xy 54.213923 23.853492) (xy 54.104127 23.793568) + (xy 53.275672 23.44191) (xy 53.156296 23.404556) (xy 53.031926 23.39121) (xy 52.907342 23.402384) (xy 52.787332 23.437648) + (xy 52.676507 23.495647) (xy 52.579127 23.574153) (xy 52.498934 23.670148) (xy 52.43901 23.779944) (xy 51.970133 24.88455) + (xy 51.932779 25.003926) (xy 51.919433 25.128296) (xy 38.448022 25.128296) (xy 39.84411 21.839324) (xy 39.860896 21.808568) + (xy 39.87136 21.775128) (xy 39.871362 21.775122) (xy 39.902661 21.675093) (xy 39.917584 21.536033) (xy 39.905587 21.402271) + (xy 39.90509 21.396734) (xy 39.865661 21.262549) (xy 39.800811 21.138634) (xy 39.713034 21.029753) (xy 39.6057 20.940088) + (xy 39.513699 20.889876) (xy 39.513696 20.889875) (xy 39.482937 20.873087) (xy 39.449494 20.862623) (xy 27.547142 15.810375) + (xy 27.516374 15.793582) (xy 27.382898 15.751817) (xy 27.243838 15.736894) (xy 27.10454 15.749387) (xy 26.970355 15.788816) + (xy 26.846441 15.853666) (xy 26.73756 15.941444) (xy 26.647894 16.048778) (xy 26.599139 16.13811) (xy 26.580893 16.171541) + (xy 26.570429 16.204984) (xy 25.034701 19.822932) (xy 24.991221 19.902681) (xy 24.955417 19.945655) (xy 24.911947 19.980855) + (xy 24.862473 20.00694) (xy 24.808867 20.022921) (xy 24.753181 20.028184) (xy 24.697535 20.022532) (xy 24.612831 19.996635) + (xy 8.369804 13.10188) (xy 36.383497 13.10188) (xy 36.394671 13.226464) (xy 36.429935 13.346474) (xy 36.487934 13.457299) + (xy 36.56644 13.554679) (xy 36.662435 13.634872) (xy 36.772231 13.694796) (xy 37.600686 14.046454) (xy 37.720062 14.083808) + (xy 37.844432 14.097154) (xy 37.859735 14.095781) (xy 37.865938 14.164939) (xy 37.901202 14.284949) (xy 37.959201 14.395774) + (xy 38.037707 14.493154) (xy 38.133702 14.573347) (xy 38.243497 14.633271) (xy 39.880155 15.327991) (xy 39.999532 15.365345) + (xy 40.123902 15.378691) (xy 40.248486 15.367517) (xy 40.368496 15.332253) (xy 40.479321 15.274254) (xy 40.576701 15.195748) + (xy 40.656894 15.099753) (xy 40.716818 14.989958) (xy 41.411538 13.3533) (xy 41.448892 13.233923) (xy 41.457495 13.153748) + (xy 46.198578 13.153748) (xy 46.198578 15.653748) (xy 46.210838 15.77823) (xy 46.247148 15.897928) (xy 46.306113 16.008242) + (xy 46.385465 16.104933) (xy 46.482156 16.184285) (xy 46.59247 16.24325) (xy 46.712168 16.27956) (xy 46.83665 16.29182) + (xy 47.028904 16.29182) (xy 47.028905 21.53022) (xy 46.947099 21.612026) (xy 46.773367 21.872035) (xy 46.653698 22.160941) + (xy 46.592691 22.467643) (xy 46.592691 22.780353) (xy 46.653698 23.087055) (xy 46.773367 23.375961) (xy 46.947099 23.63597) + (xy 47.168219 23.85709) (xy 47.428228 24.030822) (xy 47.717134 24.150491) (xy 48.023836 24.211498) (xy 48.336546 24.211498) + (xy 48.643248 24.150491) (xy 48.91484 24.037994) (xy 48.928205 24.083478) (xy 48.986204 24.194303) (xy 49.06471 24.291683) + (xy 49.160705 24.371876) (xy 49.270501 24.4318) (xy 50.098956 24.783458) (xy 50.218332 24.820812) (xy 50.342702 24.834158) + (xy 50.467286 24.822984) (xy 50.587296 24.78772) (xy 50.698121 24.729721) (xy 50.795501 24.651215) (xy 50.875694 24.55522) + (xy 50.935618 24.445424) (xy 51.404495 23.340818) (xy 51.441849 23.221442) (xy 51.455195 23.097072) (xy 51.444021 22.972488) + (xy 51.408757 22.852478) (xy 51.350758 22.741653) (xy 51.272252 22.644273) (xy 51.176257 22.56408) (xy 51.066461 22.504156) + (xy 50.238006 22.152498) (xy 50.11863 22.115144) (xy 49.99426 22.101798) (xy 49.887006 22.111418) (xy 49.864502 22.083997) + (xy 49.748777 21.989024) (xy 49.616748 21.918452) (xy 49.604732 21.914807) (xy 49.587015 21.872035) (xy 49.413283 21.612026) + (xy 49.192163 21.390906) (xy 48.932154 21.217174) (xy 48.643248 21.097505) (xy 48.548904 21.078739) (xy 48.548904 18.957529) + (xy 48.818457 19.011146) (xy 49.111153 19.011146) (xy 49.398226 18.954044) (xy 49.668643 18.842034) (xy 49.912011 18.67942) + (xy 50.118979 18.472452) (xy 50.281593 18.229084) (xy 50.393603 17.958667) (xy 50.442828 17.711194) (xy 50.503548 17.736345) + (xy 50.916025 17.818392) (xy 51.336583 17.818392) (xy 51.684022 17.749282) (xy 51.59897 17.834334) (xy 51.311269 18.264909) + (xy 51.113097 18.743338) (xy 51.01207 19.251236) (xy 51.01207 19.769084) (xy 51.113097 20.276982) (xy 51.311269 20.755411) + (xy 51.59897 21.185986) (xy 51.965144 21.55216) (xy 52.395719 21.839861) (xy 52.874148 22.038033) (xy 53.382046 22.13906) + (xy 53.899894 22.13906) (xy 54.407792 22.038033) (xy 54.886221 21.839861) (xy 55.316796 21.55216) (xy 55.52023 21.348726) + (xy 56.831235 21.348726) (xy 56.831235 21.641422) (xy 56.888337 21.928495) (xy 57.000347 22.198912) (xy 57.162961 22.44228) + (xy 57.369929 22.649248) (xy 57.613297 22.811862) (xy 57.883714 22.923872) (xy 58.170787 22.980974) (xy 58.463483 22.980974) + (xy 58.750556 22.923872) (xy 59.020973 22.811862) (xy 59.264341 22.649248) (xy 59.471309 22.44228) (xy 59.633923 22.198912) + (xy 59.745933 21.928495) (xy 59.803035 21.641422) (xy 59.803035 21.348726) (xy 59.745933 21.061653) (xy 59.633923 20.791236) + (xy 59.496537 20.585624) (xy 74.48853 20.585624) (xy 74.499704 20.710208) (xy 74.534968 20.830218) (xy 74.592967 20.941043) + (xy 74.671473 21.038423) (xy 74.767468 21.118616) (xy 74.877264 21.17854) (xy 75.705719 21.530198) (xy 75.825095 21.567552) + (xy 75.949465 21.580898) (xy 75.964768 21.579525) (xy 75.970971 21.648683) (xy 76.006235 21.768693) (xy 76.064234 21.879518) + (xy 76.14274 21.976898) (xy 76.238735 22.057091) (xy 76.34853 22.117015) (xy 77.985188 22.811735) (xy 78.104565 22.849089) + (xy 78.228935 22.862435) (xy 78.353519 22.851261) (xy 78.473529 22.815997) (xy 78.584354 22.757998) (xy 78.681734 22.679492) + (xy 78.761927 22.583497) (xy 78.821851 22.473702) (xy 79.516571 20.837044) (xy 79.553925 20.717667) (xy 79.567271 20.593297) + (xy 79.556097 20.468713) (xy 79.520833 20.348703) (xy 79.462834 20.237878) (xy 79.384328 20.140498) (xy 79.288333 20.060305) + (xy 79.178538 20.000381) (xy 77.54188 19.305661) (xy 77.422503 19.268307) (xy 77.298133 19.254961) (xy 77.173549 19.266135) + (xy 77.053539 19.301399) (xy 76.942714 19.359398) (xy 76.888659 19.402976) (xy 76.879015 19.391013) (xy 76.78302 19.31082) + (xy 76.673224 19.250896) (xy 75.844769 18.899238) (xy 75.725393 18.861884) (xy 75.601023 18.848538) (xy 75.476439 18.859712) + (xy 75.356429 18.894976) (xy 75.245604 18.952975) (xy 75.148224 19.031481) (xy 75.068031 19.127476) (xy 75.008107 19.237272) + (xy 74.53923 20.341878) (xy 74.501876 20.461254) (xy 74.48853 20.585624) (xy 59.496537 20.585624) (xy 59.471309 20.547868) + (xy 59.264341 20.3409) (xy 59.020973 20.178286) (xy 58.750556 20.066276) (xy 58.463483 20.009174) (xy 58.170787 20.009174) + (xy 57.883714 20.066276) (xy 57.613297 20.178286) (xy 57.369929 20.3409) (xy 57.162961 20.547868) (xy 57.000347 20.791236) + (xy 56.888337 21.061653) (xy 56.831235 21.348726) (xy 55.52023 21.348726) (xy 55.68297 21.185986) (xy 55.970671 20.755411) + (xy 56.168843 20.276982) (xy 56.26987 19.769084) (xy 56.26987 19.251236) (xy 56.168843 18.743338) (xy 55.970671 18.264909) + (xy 55.68297 17.834334) (xy 55.316796 17.46816) (xy 54.886221 17.180459) (xy 54.407792 16.982287) (xy 53.899894 16.88126) + (xy 53.382046 16.88126) (xy 52.874148 16.982287) (xy 52.807786 17.009775) (xy 53.018316 16.694694) (xy 53.179257 16.306148) + (xy 53.261304 15.893671) (xy 53.261304 15.616173) (xy 55.828966 15.616173) (xy 55.828966 16.036731) (xy 55.911013 16.449208) + (xy 56.071954 16.837754) (xy 56.305603 17.187435) (xy 56.602983 17.484815) (xy 56.952664 17.718464) (xy 57.34121 17.879405) + (xy 57.753687 17.961452) (xy 58.174245 17.961452) (xy 58.586722 17.879405) (xy 58.975268 17.718464) (xy 59.090401 17.641535) + (xy 59.090401 18.366647) (xy 59.102661 18.491129) (xy 59.138971 18.610827) (xy 59.197936 18.721141) (xy 59.277288 18.817832) + (xy 59.373979 18.897184) (xy 59.484293 18.956149) (xy 59.603991 18.992459) (xy 59.728473 19.004719) (xy 62.278473 19.004719) + (xy 62.402955 18.992459) (xy 62.522653 18.956149) (xy 62.632967 18.897184) (xy 62.729658 18.817832) (xy 62.80901 18.721141) + (xy 62.867975 18.610827) (xy 62.904285 18.491129) (xy 62.916545 18.366647) (xy 62.916545 15.866647) (xy 62.904285 15.742165) + (xy 62.867975 15.622467) (xy 62.80901 15.512153) (xy 62.729658 15.415462) (xy 62.632967 15.33611) (xy 62.522653 15.277145) + (xy 62.442186 15.252735) (xy 68.767675 8.927247) (xy 68.767675 11.111076) (xy 68.779935 11.235558) (xy 68.816245 11.355256) + (xy 68.87521 11.46557) (xy 68.954562 11.562261) (xy 69.051253 11.641613) (xy 69.161567 11.700578) (xy 69.281265 11.736888) + (xy 69.405747 11.749148) (xy 69.598001 11.749148) (xy 69.598002 16.987548) (xy 69.516196 17.069354) (xy 69.342464 17.329363) + (xy 69.222795 17.618269) (xy 69.161788 17.924971) (xy 69.161788 18.237681) (xy 69.222795 18.544383) (xy 69.342464 18.833289) + (xy 69.516196 19.093298) (xy 69.737316 19.314418) (xy 69.997325 19.48815) (xy 70.286231 19.607819) (xy 70.592933 19.668826) + (xy 70.905643 19.668826) (xy 71.212345 19.607819) (xy 71.483937 19.495322) (xy 71.497302 19.540806) (xy 71.555301 19.651631) + (xy 71.633807 19.749011) (xy 71.729802 19.829204) (xy 71.839598 19.889128) (xy 72.668053 20.240786) (xy 72.787429 20.27814) + (xy 72.911799 20.291486) (xy 73.036383 20.280312) (xy 73.156393 20.245048) (xy 73.267218 20.187049) (xy 73.364598 20.108543) + (xy 73.444791 20.012548) (xy 73.504715 19.902752) (xy 73.973592 18.798146) (xy 74.010946 18.67877) (xy 74.024292 18.5544) + (xy 74.013118 18.429816) (xy 73.977854 18.309806) (xy 73.919855 18.198981) (xy 73.841349 18.101601) (xy 73.745354 18.021408) + (xy 73.635558 17.961484) (xy 72.807103 17.609826) (xy 72.687727 17.572472) (xy 72.563357 17.559126) (xy 72.456103 17.568746) + (xy 72.433599 17.541325) (xy 72.317874 17.446352) (xy 72.185845 17.37578) (xy 72.173829 17.372135) (xy 72.156112 17.329363) + (xy 71.98238 17.069354) (xy 71.76126 16.848234) (xy 71.501251 16.674502) (xy 71.212345 16.554833) (xy 71.118001 16.536067) + (xy 71.118001 14.414857) (xy 71.387554 14.468474) (xy 71.68025 14.468474) (xy 71.967323 14.411372) (xy 72.23774 14.299362) + (xy 72.481108 14.136748) (xy 72.688076 13.92978) (xy 72.85069 13.686412) (xy 72.9627 13.415995) (xy 73.011925 13.168522) + (xy 73.072645 13.193673) (xy 73.485122 13.27572) (xy 73.90568 13.27572) (xy 74.253119 13.20661) (xy 74.168067 13.291662) + (xy 73.880366 13.722237) (xy 73.682194 14.200666) (xy 73.581167 14.708564) (xy 73.581167 15.226412) (xy 73.682194 15.73431) + (xy 73.880366 16.212739) (xy 74.168067 16.643314) (xy 74.534241 17.009488) (xy 74.964816 17.297189) (xy 75.443245 17.495361) + (xy 75.951143 17.596388) (xy 76.468991 17.596388) (xy 76.976889 17.495361) (xy 77.455318 17.297189) (xy 77.885893 17.009488) + (xy 78.089327 16.806054) (xy 79.400332 16.806054) (xy 79.400332 17.09875) (xy 79.457434 17.385823) (xy 79.569444 17.65624) + (xy 79.732058 17.899608) (xy 79.939026 18.106576) (xy 80.182394 18.26919) (xy 80.452811 18.3812) (xy 80.739884 18.438302) + (xy 81.03258 18.438302) (xy 81.319653 18.3812) (xy 81.59007 18.26919) (xy 81.833438 18.106576) (xy 82.040406 17.899608) + (xy 82.20302 17.65624) (xy 82.31503 17.385823) (xy 82.372132 17.09875) (xy 82.372132 16.806054) (xy 82.31503 16.518981) + (xy 82.20302 16.248564) (xy 82.040406 16.005196) (xy 81.833438 15.798228) (xy 81.59007 15.635614) (xy 81.319653 15.523604) + (xy 81.03258 15.466502) (xy 80.739884 15.466502) (xy 80.452811 15.523604) (xy 80.182394 15.635614) (xy 79.939026 15.798228) + (xy 79.732058 16.005196) (xy 79.569444 16.248564) (xy 79.457434 16.518981) (xy 79.400332 16.806054) (xy 78.089327 16.806054) + (xy 78.252067 16.643314) (xy 78.539768 16.212739) (xy 78.73794 15.73431) (xy 78.838967 15.226412) (xy 78.838967 14.708564) + (xy 78.73794 14.200666) (xy 78.539768 13.722237) (xy 78.252067 13.291662) (xy 77.885893 12.925488) (xy 77.455318 12.637787) + (xy 76.976889 12.439615) (xy 76.468991 12.338588) (xy 75.951143 12.338588) (xy 75.443245 12.439615) (xy 75.376883 12.467103) + (xy 75.587413 12.152022) (xy 75.748354 11.763476) (xy 75.830401 11.350999) (xy 75.830401 10.930441) (xy 75.748354 10.517964) + (xy 75.587413 10.129418) (xy 75.353764 9.779737) (xy 75.056384 9.482357) (xy 74.706703 9.248708) (xy 74.318157 9.087767) + (xy 73.90568 9.00572) (xy 73.485122 9.00572) (xy 73.072645 9.087767) (xy 72.684099 9.248708) (xy 72.593819 9.309031) + (xy 72.593819 8.611076) (xy 72.581559 8.486594) (xy 72.545249 8.366896) (xy 72.486284 8.256582) (xy 72.406932 8.159891) + (xy 72.310241 8.080539) (xy 72.199927 8.021574) (xy 72.080229 7.985264) (xy 71.955747 7.973004) (xy 69.405747 7.973004) + (xy 69.281265 7.985264) (xy 69.187365 8.013748) (xy 69.187365 3.096032) (xy 81.912422 3.096032) (xy 81.923596 3.220616) + (xy 81.95886 3.340626) (xy 82.016859 3.451451) (xy 82.095365 3.548831) (xy 82.19136 3.629024) (xy 82.301156 3.688948) + (xy 83.129611 4.040606) (xy 83.248987 4.07796) (xy 83.373357 4.091306) (xy 83.38866 4.089933) (xy 83.394863 4.159091) + (xy 83.430127 4.279101) (xy 83.488126 4.389926) (xy 83.566632 4.487306) (xy 83.662627 4.567499) (xy 83.772422 4.627423) + (xy 85.40908 5.322143) (xy 85.528457 5.359497) (xy 85.652827 5.372843) (xy 85.777411 5.361669) (xy 85.897421 5.326405) + (xy 86.008246 5.268406) (xy 86.105626 5.1899) (xy 86.185819 5.093905) (xy 86.245743 4.98411) (xy 86.940463 3.347452) + (xy 86.977817 3.228075) (xy 86.991163 3.103705) (xy 86.979989 2.979121) (xy 86.944725 2.859111) (xy 86.886726 2.748286) + (xy 86.80822 2.650906) (xy 86.712225 2.570713) (xy 86.60243 2.510789) (xy 84.965772 1.816069) (xy 84.846395 1.778715) + (xy 84.722025 1.765369) (xy 84.597441 1.776543) (xy 84.477431 1.811807) (xy 84.366606 1.869806) (xy 84.312551 1.913384) + (xy 84.302907 1.901421) (xy 84.206912 1.821228) (xy 84.097116 1.761304) (xy 83.268661 1.409646) (xy 83.149285 1.372292) + (xy 83.024915 1.358946) (xy 82.900331 1.37012) (xy 82.780321 1.405384) (xy 82.669496 1.463383) (xy 82.572116 1.541889) + (xy 82.491923 1.637884) (xy 82.431999 1.74768) (xy 81.963122 2.852286) (xy 81.925768 2.971662) (xy 81.912422 3.096032) + (xy 69.187365 3.096032) (xy 69.187365 1.515126) (xy 69.702365 1.515126) (xy 69.826847 1.502866) (xy 69.946545 1.466556) + (xy 70.056859 1.407591) (xy 70.15355 1.328239) (xy 70.232902 1.231548) (xy 70.291867 1.121234) (xy 70.328177 1.001536) + (xy 70.340437 0.877054) (xy 70.340437 -1.622946) (xy 70.328177 -1.747428) (xy 70.291867 -1.867126) (xy 70.232902 -1.97744) + (xy 70.15355 -2.074131) (xy 70.056859 -2.153483) (xy 69.946545 -2.212448) (xy 69.866078 -2.236858) (xy 76.191566 -8.562345) + (xy 76.191566 -6.378516) (xy 76.203826 -6.254034) (xy 76.240136 -6.134336) (xy 76.299101 -6.024022) (xy 76.378453 -5.927331) + (xy 76.475144 -5.847979) (xy 76.585458 -5.789014) (xy 76.705156 -5.752704) (xy 76.829638 -5.740444) (xy 77.027232 -5.740444) + (xy 77.021892 -5.686227) (xy 77.021892 -5.686217) (xy 77.018216 -5.648895) (xy 77.021892 -5.611572) (xy 77.021893 -0.502043) + (xy 76.940088 -0.420238) (xy 76.766356 -0.160229) (xy 76.646687 0.128677) (xy 76.58568 0.435379) (xy 76.58568 0.748089) + (xy 76.646687 1.054791) (xy 76.766356 1.343697) (xy 76.940088 1.603706) (xy 77.161208 1.824826) (xy 77.421217 1.998558) + (xy 77.710123 2.118227) (xy 78.016825 2.179234) (xy 78.329535 2.179234) (xy 78.636237 2.118227) (xy 78.907829 2.00573) + (xy 78.921194 2.051214) (xy 78.979193 2.162039) (xy 79.057699 2.259419) (xy 79.153694 2.339612) (xy 79.26349 2.399536) + (xy 80.091945 2.751194) (xy 80.211321 2.788548) (xy 80.335691 2.801894) (xy 80.460275 2.79072) (xy 80.580285 2.755456) + (xy 80.69111 2.697457) (xy 80.78849 2.618951) (xy 80.868683 2.522956) (xy 80.928607 2.41316) (xy 81.397484 1.308554) + (xy 81.434838 1.189178) (xy 81.448184 1.064808) (xy 81.43701 0.940224) (xy 81.401746 0.820214) (xy 81.343747 0.709389) + (xy 81.265241 0.612009) (xy 81.169246 0.531816) (xy 81.05945 0.471892) (xy 80.230995 0.120234) (xy 80.111619 0.08288) + (xy 79.987249 0.069534) (xy 79.879995 0.079154) (xy 79.857491 0.051733) (xy 79.741766 -0.04324) (xy 79.609737 -0.113812) + (xy 79.597721 -0.117457) (xy 79.580004 -0.160229) (xy 79.406272 -0.420238) (xy 79.185152 -0.641358) (xy 78.925143 -0.81509) + (xy 78.636237 -0.934759) (xy 78.541892 -0.953525) (xy 78.541892 -3.074735) (xy 78.811445 -3.021118) (xy 79.104141 -3.021118) + (xy 79.391214 -3.07822) (xy 79.661631 -3.19023) (xy 79.904999 -3.352844) (xy 80.111967 -3.559812) (xy 80.274581 -3.80318) + (xy 80.386591 -4.073597) (xy 80.435816 -4.32107) (xy 80.496536 -4.295919) (xy 80.909013 -4.213872) (xy 81.329571 -4.213872) + (xy 81.67701 -4.282982) (xy 81.591958 -4.19793) (xy 81.304257 -3.767355) (xy 81.106085 -3.288926) (xy 81.005058 -2.781028) + (xy 81.005058 -2.26318) (xy 81.106085 -1.755282) (xy 81.304257 -1.276853) (xy 81.591958 -0.846278) (xy 81.958132 -0.480104) + (xy 82.388707 -0.192403) (xy 82.867136 0.005769) (xy 83.375034 0.106796) (xy 83.892882 0.106796) (xy 84.40078 0.005769) + (xy 84.879209 -0.192403) (xy 85.309784 -0.480104) (xy 85.513218 -0.683538) (xy 86.824223 -0.683538) (xy 86.824223 -0.390842) + (xy 86.881325 -0.103769) (xy 86.993335 0.166648) (xy 87.155949 0.410016) (xy 87.362917 0.616984) (xy 87.606285 0.779598) + (xy 87.876702 0.891608) (xy 88.163775 0.94871) (xy 88.456471 0.94871) (xy 88.743544 0.891608) (xy 89.013961 0.779598) + (xy 89.257329 0.616984) (xy 89.464297 0.410016) (xy 89.626911 0.166648) (xy 89.738921 -0.103769) (xy 89.796023 -0.390842) + (xy 89.796023 -0.683538) (xy 89.738921 -0.970611) (xy 89.626911 -1.241028) (xy 89.464297 -1.484396) (xy 89.257329 -1.691364) + (xy 89.013961 -1.853978) (xy 88.743544 -1.965988) (xy 88.456471 -2.02309) (xy 88.163775 -2.02309) (xy 87.876702 -1.965988) + (xy 87.606285 -1.853978) (xy 87.362917 -1.691364) (xy 87.155949 -1.484396) (xy 86.993335 -1.241028) (xy 86.881325 -0.970611) + (xy 86.824223 -0.683538) (xy 85.513218 -0.683538) (xy 85.675958 -0.846278) (xy 85.963659 -1.276853) (xy 86.161831 -1.755282) + (xy 86.262858 -2.26318) (xy 86.262858 -2.781028) (xy 86.161831 -3.288926) (xy 85.963659 -3.767355) (xy 85.675958 -4.19793) + (xy 85.309784 -4.564104) (xy 84.879209 -4.851805) (xy 84.40078 -5.049977) (xy 83.892882 -5.151004) (xy 83.375034 -5.151004) + (xy 82.867136 -5.049977) (xy 82.800774 -5.022489) (xy 83.011304 -5.33757) (xy 83.172245 -5.726116) (xy 83.254292 -6.138593) + (xy 83.254292 -6.559151) (xy 83.172245 -6.971628) (xy 83.011304 -7.360174) (xy 82.777655 -7.709855) (xy 82.480275 -8.007235) + (xy 82.130594 -8.240884) (xy 81.742048 -8.401825) (xy 81.329571 -8.483872) (xy 80.909013 -8.483872) (xy 80.496536 -8.401825) + (xy 80.10799 -8.240884) (xy 80.01771 -8.180561) (xy 80.01771 -8.878516) (xy 80.00545 -9.002998) (xy 79.96914 -9.122696) + (xy 79.910175 -9.23301) (xy 79.830823 -9.329701) (xy 79.734132 -9.409053) (xy 79.623818 -9.468018) (xy 79.50412 -9.504328) + (xy 79.379638 -9.516588) (xy 76.950972 -9.516588) (xy 76.96 -9.608248) (xy 76.96 -9.608258) (xy 76.963676 -9.645581) + (xy 76.96 -9.682904) (xy 76.96 -15.974466) (xy 77.126256 -15.974466) (xy 77.250738 -15.986726) (xy 77.370436 -16.023036) + (xy 77.48075 -16.082001) (xy 77.577441 -16.161353) (xy 77.656793 -16.258044) (xy 77.715758 -16.368358) (xy 77.752068 -16.488056) + (xy 77.764328 -16.612538) (xy 77.764328 -19.112538) (xy 77.752068 -19.23702) (xy 77.715758 -19.356718) (xy 77.656793 -19.467032) + (xy 77.577441 -19.563723) (xy 77.48075 -19.643075) (xy 77.370436 -19.70204) (xy 77.250738 -19.73835) (xy 77.126256 -19.75061) + (xy 76.611256 -19.75061) (xy 76.611256 -25.571321) (xy 77.687766 -25.11437) (xy 77.807143 -25.077016) (xy 77.931513 -25.06367) + (xy 78.056097 -25.074844) (xy 78.176107 -25.110108) (xy 78.286932 -25.168107) (xy 78.384312 -25.246613) (xy 78.464505 -25.342608) + (xy 78.524429 -25.452403) (xy 79.219149 -27.089061) (xy 79.256503 -27.208438) (xy 79.269849 -27.332808) (xy 79.258675 -27.457392) + (xy 79.223411 -27.577402) (xy 79.165412 -27.688227) (xy 79.086906 -27.785607) (xy 78.990911 -27.8658) (xy 78.881116 -27.925724) + (xy 77.244458 -28.620444) (xy 77.125081 -28.657798) (xy 77.000711 -28.671144) (xy 76.876127 -28.65997) (xy 76.756117 -28.624706) + (xy 76.645292 -28.566707) (xy 76.591237 -28.523129) (xy 76.581593 -28.535092) (xy 76.485598 -28.615285) (xy 76.375802 -28.675209) + (xy 76.215901 -28.743083) (xy 78.592869 -31.120051) (xy 79.102909 -31.120051) (xy 79.102909 -30.827355) (xy 79.160011 -30.540282) + (xy 79.272021 -30.269865) (xy 79.434635 -30.026497) (xy 79.641603 -29.819529) (xy 79.884971 -29.656915) (xy 80.155388 -29.544905) + (xy 80.442461 -29.487803) (xy 80.735157 -29.487803) (xy 81.02223 -29.544905) (xy 81.292647 -29.656915) (xy 81.536015 -29.819529) + (xy 81.742983 -30.026497) (xy 81.905597 -30.269865) (xy 82.017607 -30.540282) (xy 82.074709 -30.827355) (xy 82.074709 -31.120051) + (xy 82.017607 -31.407124) (xy 81.905597 -31.677541) (xy 81.742983 -31.920909) (xy 81.536015 -32.127877) (xy 81.292647 -32.290491) + (xy 81.02223 -32.402501) (xy 80.735157 -32.459603) (xy 80.442461 -32.459603) (xy 80.155388 -32.402501) (xy 79.884971 -32.290491) + (xy 79.641603 -32.127877) (xy 79.434635 -31.920909) (xy 79.272021 -31.677541) (xy 79.160011 -31.407124) (xy 79.102909 -31.120051) + (xy 78.592869 -31.120051) (xy 81.392054 -33.919235) (xy 81.410645 -33.85795) (xy 81.46961 -33.747636) (xy 81.548962 -33.650945) + (xy 81.645653 -33.571593) (xy 81.755967 -33.512628) (xy 81.875665 -33.476318) (xy 82.000147 -33.464058) (xy 84.550147 -33.464058) + (xy 84.674629 -33.476318) (xy 84.794327 -33.512628) (xy 84.904641 -33.571593) (xy 85.001332 -33.650945) (xy 85.080684 -33.747636) + (xy 85.139649 -33.85795) (xy 85.175959 -33.977648) (xy 85.188219 -34.10213) (xy 85.188219 -36.60213) (xy 85.175959 -36.726612) + (xy 85.139649 -36.84631) (xy 85.080684 -36.956624) (xy 85.001332 -37.053315) (xy 84.904641 -37.132667) (xy 84.794327 -37.191632) + (xy 84.674629 -37.227942) (xy 84.550147 -37.240202) (xy 82.293542 -37.240202) (xy 82.288593 -37.265081) (xy 82.127652 -37.653627) + (xy 81.894003 -38.003308) (xy 81.596623 -38.300688) (xy 81.246942 -38.534337) (xy 80.858396 -38.695278) (xy 80.445919 -38.777325) + (xy 80.025361 -38.777325) (xy 79.612884 -38.695278) (xy 79.224338 -38.534337) (xy 78.874657 -38.300688) (xy 78.577277 -38.003308) + (xy 78.343628 -37.653627) (xy 78.182687 -37.265081) (xy 78.10064 -36.852604) (xy 78.10064 -36.432046) (xy 78.182687 -36.019569) + (xy 78.343628 -35.631023) (xy 78.577277 -35.281342) (xy 78.874657 -34.983962) (xy 79.224338 -34.750313) (xy 79.612884 -34.589372) + (xy 79.862863 -34.539648) (xy 78.541413 -33.218198) (xy 78.440517 -33.725439) (xy 78.242345 -34.203868) (xy 77.954644 -34.634443) + (xy 77.58847 -35.000617) (xy 77.157895 -35.288318) (xy 76.679466 -35.48649) (xy 76.171568 -35.587517) (xy 75.65372 -35.587517) + (xy 75.145822 -35.48649) (xy 75.07946 -35.459002) (xy 75.28999 -35.774083) (xy 75.450931 -36.162629) (xy 75.532978 -36.575106) + (xy 75.532978 -36.995664) (xy 75.450931 -37.408141) (xy 75.28999 -37.796687) (xy 75.056341 -38.146368) (xy 74.758961 -38.443748) + (xy 74.40928 -38.677397) (xy 74.020734 -38.838338) (xy 73.608257 -38.920385) (xy 73.187699 -38.920385) (xy 72.775222 -38.838338) + (xy 72.386676 -38.677397) (xy 72.296396 -38.617074) (xy 72.296396 -39.315029) (xy 72.284136 -39.439511) (xy 72.247826 -39.559209) + (xy 72.188861 -39.669523) (xy 72.109509 -39.766214) (xy 72.012818 -39.845566) (xy 71.902504 -39.904531) (xy 71.782806 -39.940841) + (xy 71.658324 -39.953101) (xy 69.108324 -39.953101) (xy 68.983842 -39.940841) (xy 68.864144 -39.904531) (xy 68.75383 -39.845566) + (xy 68.657139 -39.766214) (xy 68.577787 -39.669523) (xy 68.518822 -39.559209) (xy 68.482512 -39.439511) (xy 68.470252 -39.315029) + (xy 68.470252 -36.815029) (xy 68.482512 -36.690547) (xy 68.518822 -36.570849) (xy 68.577787 -36.460535) (xy 68.657139 -36.363844) + (xy 68.75383 -36.284492) (xy 68.864144 -36.225527) (xy 68.983842 -36.189217) (xy 69.108324 -36.176957) (xy 69.305918 -36.176957) + (xy 69.300578 -36.12274) (xy 69.300578 -36.12273) (xy 69.296902 -36.085408) (xy 69.300578 -36.048085) (xy 69.300579 -30.938556) + (xy 69.218774 -30.856751) (xy 69.045042 -30.596742) (xy 68.925373 -30.307836) (xy 68.864366 -30.001134) (xy 68.864366 -29.688424) + (xy 68.925373 -29.381722) (xy 69.045042 -29.092816) (xy 69.218774 -28.832807) (xy 69.439894 -28.611687) (xy 69.699903 -28.437955) + (xy 69.988809 -28.318286) (xy 70.295511 -28.257279) (xy 70.608221 -28.257279) (xy 70.914923 -28.318286) (xy 71.186515 -28.430783) + (xy 71.19988 -28.385299) (xy 71.257879 -28.274474) (xy 71.336385 -28.177094) (xy 71.43238 -28.096901) (xy 71.542176 -28.036977) + (xy 72.370631 -27.685319) (xy 72.490007 -27.647965) (xy 72.614377 -27.634619) (xy 72.738961 -27.645793) (xy 72.858971 -27.681057) + (xy 72.969796 -27.739056) (xy 73.067176 -27.817562) (xy 73.147369 -27.913557) (xy 73.207293 -28.023353) (xy 73.67617 -29.127959) + (xy 73.713524 -29.247335) (xy 73.72687 -29.371705) (xy 73.715696 -29.496289) (xy 73.680432 -29.616299) (xy 73.622433 -29.727124) + (xy 73.543927 -29.824504) (xy 73.447932 -29.904697) (xy 73.338136 -29.964621) (xy 72.509681 -30.316279) (xy 72.390305 -30.353633) + (xy 72.265935 -30.366979) (xy 72.158681 -30.357359) (xy 72.136177 -30.38478) (xy 72.020452 -30.479753) (xy 71.888423 -30.550325) + (xy 71.876407 -30.55397) (xy 71.85869 -30.596742) (xy 71.684958 -30.856751) (xy 71.463838 -31.077871) (xy 71.203829 -31.251603) + (xy 70.914923 -31.371272) (xy 70.820578 -31.390038) (xy 70.820578 -33.511248) (xy 71.090131 -33.457631) (xy 71.382827 -33.457631) + (xy 71.6699 -33.514733) (xy 71.940317 -33.626743) (xy 72.183685 -33.789357) (xy 72.390653 -33.996325) (xy 72.553267 -34.239693) + (xy 72.665277 -34.51011) (xy 72.714502 -34.757583) (xy 72.775222 -34.732432) (xy 73.187699 -34.650385) (xy 73.608257 -34.650385) + (xy 73.955696 -34.719495) (xy 73.870644 -34.634443) (xy 73.582943 -34.203868) (xy 73.384771 -33.725439) (xy 73.283744 -33.217541) + (xy 73.283744 -32.699693) (xy 73.384771 -32.191795) (xy 73.582943 -31.713366) (xy 73.870644 -31.282791) (xy 74.236818 -30.916617) + (xy 74.667393 -30.628916) (xy 75.145822 -30.430744) (xy 75.653063 -30.329848) (xy 73.993144 -28.669928) (xy 73.964146 -28.64613) + (xy 73.940348 -28.617132) (xy 73.940347 -28.617131) (xy 73.869172 -28.530405) (xy 73.7986 -28.398375) (xy 73.782408 -28.344994) + (xy 73.755144 -28.255115) (xy 73.744146 -28.143462) (xy 73.744146 -28.143451) (xy 73.74047 -28.106129) (xy 73.744146 -28.068807) + (xy 73.744146 -27.237611) (xy 73.74047 -27.200289) (xy 73.744146 -27.162967) (xy 73.744146 -27.162957) (xy 73.755143 -27.051304) + (xy 73.79338 -26.925252) (xy 73.7986 -26.908043) (xy 73.869172 -26.776013) (xy 73.907633 -26.729149) (xy 73.964145 -26.660288) + (xy 73.993149 -26.636485) (xy 75.091257 -25.538376) (xy 75.091256 -19.75061) (xy 74.869651 -19.75061) (xy 74.864702 -19.775489) + (xy 74.703761 -20.164035) (xy 74.470112 -20.513716) (xy 74.172732 -20.811096) (xy 73.823051 -21.044745) (xy 73.434505 -21.205686) + (xy 73.022028 -21.287733) (xy 72.60147 -21.287733) (xy 72.188993 -21.205686) (xy 71.800447 -21.044745) (xy 71.450766 -20.811096) + (xy 71.153386 -20.513716) (xy 70.919737 -20.164035) (xy 70.758796 -19.775489) (xy 70.676749 -19.363012) (xy 70.676749 -18.942454) + (xy 70.758796 -18.529977) (xy 70.919737 -18.141431) (xy 71.153386 -17.79175) (xy 71.450766 -17.49437) (xy 71.800447 -17.260721) + (xy 72.188993 -17.09978) (xy 72.60147 -17.017733) (xy 73.022028 -17.017733) (xy 73.434505 -17.09978) (xy 73.823051 -17.260721) + (xy 73.938184 -17.33765) (xy 73.938184 -16.612538) (xy 73.950444 -16.488056) (xy 73.986754 -16.368358) (xy 74.045719 -16.258044) + (xy 74.125071 -16.161353) (xy 74.221762 -16.082001) (xy 74.332076 -16.023036) (xy 74.451774 -15.986726) (xy 74.576256 -15.974466) + (xy 75.440001 -15.974466) (xy 75.44 -9.960383) (xy 67.916363 -2.436745) (xy 67.887365 -2.412947) (xy 67.863567 -2.383949) + (xy 67.863566 -2.383948) (xy 67.792391 -2.297222) (xy 67.773039 -2.261018) (xy 67.44576 -2.261018) (xy 67.440811 -2.285897) + (xy 67.27987 -2.674443) (xy 67.046221 -3.024124) (xy 66.748841 -3.321504) (xy 66.39916 -3.555153) (xy 66.010614 -3.716094) + (xy 65.598137 -3.798141) (xy 65.177579 -3.798141) (xy 64.765102 -3.716094) (xy 64.376556 -3.555153) (xy 64.026875 -3.321504) + (xy 63.729495 -3.024124) (xy 63.495846 -2.674443) (xy 63.334905 -2.285897) (xy 63.252858 -1.87342) (xy 63.252858 -1.452862) + (xy 63.334905 -1.040385) (xy 63.495846 -0.651839) (xy 63.729495 -0.302158) (xy 64.026875 -0.004778) (xy 64.376556 0.228871) + (xy 64.765102 0.389812) (xy 65.177579 0.471859) (xy 65.598137 0.471859) (xy 66.010614 0.389812) (xy 66.39916 0.228871) + (xy 66.514293 0.151942) (xy 66.514293 0.877054) (xy 66.526553 1.001536) (xy 66.562863 1.121234) (xy 66.621828 1.231548) + (xy 66.70118 1.328239) (xy 66.797871 1.407591) (xy 66.908185 1.466556) (xy 67.027883 1.502866) (xy 67.152365 1.515126) + (xy 67.667366 1.515126) (xy 67.667365 7.877953) (xy 60.492471 15.052848) (xy 60.463473 15.076646) (xy 60.439675 15.105644) + (xy 60.439674 15.105645) (xy 60.368499 15.192371) (xy 60.349147 15.228575) (xy 60.021868 15.228575) (xy 60.016919 15.203696) + (xy 59.855978 14.81515) (xy 59.622329 14.465469) (xy 59.324949 14.168089) (xy 58.975268 13.93444) (xy 58.586722 13.773499) + (xy 58.174245 13.691452) (xy 57.753687 13.691452) (xy 57.34121 13.773499) (xy 56.952664 13.93444) (xy 56.602983 14.168089) + (xy 56.305603 14.465469) (xy 56.071954 14.81515) (xy 55.911013 15.203696) (xy 55.828966 15.616173) (xy 53.261304 15.616173) + (xy 53.261304 15.473113) (xy 53.179257 15.060636) (xy 53.018316 14.67209) (xy 52.784667 14.322409) (xy 52.487287 14.025029) + (xy 52.137606 13.79138) (xy 51.74906 13.630439) (xy 51.336583 13.548392) (xy 50.916025 13.548392) (xy 50.503548 13.630439) + (xy 50.115002 13.79138) (xy 50.024722 13.851703) (xy 50.024722 13.153748) (xy 50.012462 13.029266) (xy 49.976152 12.909568) + (xy 49.917187 12.799254) (xy 49.837835 12.702563) (xy 49.741144 12.623211) (xy 49.63083 12.564246) (xy 49.511132 12.527936) + (xy 49.38665 12.515676) (xy 46.83665 12.515676) (xy 46.712168 12.527936) (xy 46.59247 12.564246) (xy 46.482156 12.623211) + (xy 46.385465 12.702563) (xy 46.306113 12.799254) (xy 46.247148 12.909568) (xy 46.210838 13.029266) (xy 46.198578 13.153748) + (xy 41.457495 13.153748) (xy 41.462238 13.109553) (xy 41.451064 12.984969) (xy 41.4158 12.864959) (xy 41.357801 12.754134) + (xy 41.279295 12.656754) (xy 41.1833 12.576561) (xy 41.073505 12.516637) (xy 39.436847 11.821917) (xy 39.31747 11.784563) + (xy 39.1931 11.771217) (xy 39.068516 11.782391) (xy 38.948506 11.817655) (xy 38.837681 11.875654) (xy 38.783626 11.919232) + (xy 38.773982 11.907269) (xy 38.677987 11.827076) (xy 38.568191 11.767152) (xy 37.739736 11.415494) (xy 37.62036 11.37814) + (xy 37.49599 11.364794) (xy 37.371406 11.375968) (xy 37.251396 11.411232) (xy 37.140571 11.469231) (xy 37.043191 11.547737) + (xy 36.962998 11.643732) (xy 36.903074 11.753528) (xy 36.434197 12.858134) (xy 36.396843 12.97751) (xy 36.383497 13.10188) + (xy 8.369804 13.10188) (xy 8.103894 12.989008) (xy 8.073126 12.972215) (xy 7.93965 12.93045) (xy 7.80059 12.915528) + (xy 7.661292 12.928021) (xy 7.527107 12.96745) (xy 7.403192 13.0323) (xy 7.294311 13.120078) (xy 7.204646 13.227411) + (xy 7.154433 13.319412) (xy 7.154428 13.319423) (xy 7.137645 13.350174) (xy 7.127183 13.383608) (xy 6.372912 15.160564) + (xy 6.329436 15.240304) (xy 6.293632 15.283278) (xy 6.250162 15.318478) (xy 6.200688 15.344563) (xy 6.147082 15.360544) + (xy 6.091396 15.365807) (xy 6.03575 15.360155) (xy 5.951054 15.334261) (xy -5.954831 10.280513) (xy 16.940249 10.280513) + (xy 16.951423 10.405097) (xy 16.986687 10.525107) (xy 17.044686 10.635932) (xy 17.123192 10.733312) (xy 17.219187 10.813505) + (xy 17.328983 10.873429) (xy 18.157438 11.225087) (xy 18.276814 11.262441) (xy 18.401184 11.275787) (xy 18.416487 11.274414) + (xy 18.42269 11.343572) (xy 18.457954 11.463582) (xy 18.515953 11.574407) (xy 18.594459 11.671787) (xy 18.690454 11.75198) + (xy 18.800249 11.811904) (xy 20.436907 12.506624) (xy 20.556284 12.543978) (xy 20.680654 12.557324) (xy 20.805238 12.54615) + (xy 20.925248 12.510886) (xy 21.036073 12.452887) (xy 21.133453 12.374381) (xy 21.213646 12.278386) (xy 21.27357 12.168591) + (xy 21.96829 10.531933) (xy 22.005644 10.412556) (xy 22.01899 10.288186) (xy 22.007816 10.163602) (xy 21.972552 10.043592) + (xy 21.914553 9.932767) (xy 21.836047 9.835387) (xy 21.740052 9.755194) (xy 21.630257 9.69527) (xy 19.993599 9.00055) + (xy 19.874222 8.963196) (xy 19.749852 8.94985) (xy 19.625268 8.961024) (xy 19.505258 8.996288) (xy 19.394433 9.054287) + (xy 19.340378 9.097865) (xy 19.330734 9.085902) (xy 19.234739 9.005709) (xy 19.124943 8.945785) (xy 18.296488 8.594127) + (xy 18.177112 8.556773) (xy 18.052742 8.543427) (xy 17.928158 8.554601) (xy 17.808148 8.589865) (xy 17.697323 8.647864) + (xy 17.599943 8.72637) (xy 17.51975 8.822365) (xy 17.459826 8.932161) (xy 16.990949 10.036767) (xy 16.953595 10.156143) + (xy 16.940249 10.280513) (xy -5.954831 10.280513) (xy -15.160555 6.372916) (xy -15.240304 6.329436) (xy -15.283278 6.293632) + (xy -15.318478 6.250162) (xy -15.344563 6.200688) (xy -15.360544 6.147082) (xy -15.365807 6.091396) (xy -15.360155 6.03575) + (xy -15.334256 5.951037) (xy -15.192948 5.618136) (xy -1.721537 5.618136) (xy -1.710363 5.74272) (xy -1.675099 5.86273) + (xy -1.6171 5.973555) (xy -1.538594 6.070935) (xy -1.442599 6.151128) (xy -1.332803 6.211052) (xy -0.504348 6.56271) + (xy -0.384972 6.600064) (xy -0.260602 6.61341) (xy -0.245299 6.612037) (xy -0.239096 6.681195) (xy -0.203832 6.801205) + (xy -0.145833 6.91203) (xy -0.067327 7.00941) (xy 0.028668 7.089603) (xy 0.138463 7.149527) (xy 1.775121 7.844247) + (xy 1.894498 7.881601) (xy 2.018868 7.894947) (xy 2.143452 7.883773) (xy 2.263462 7.848509) (xy 2.374287 7.79051) + (xy 2.471667 7.712004) (xy 2.55186 7.616009) (xy 2.611784 7.506214) (xy 3.306504 5.869556) (xy 3.343858 5.750179) + (xy 3.357204 5.625809) (xy 3.34603 5.501225) (xy 3.310766 5.381215) (xy 3.252767 5.27039) (xy 3.174261 5.17301) + (xy 3.078266 5.092817) (xy 2.968471 5.032893) (xy 1.331813 4.338173) (xy 1.212436 4.300819) (xy 1.088066 4.287473) + (xy 0.963482 4.298647) (xy 0.843472 4.333911) (xy 0.732647 4.39191) (xy 0.678592 4.435488) (xy 0.668948 4.423525) + (xy 0.572953 4.343332) (xy 0.463157 4.283408) (xy -0.365298 3.93175) (xy -0.484674 3.894396) (xy -0.609044 3.88105) + (xy -0.733628 3.892224) (xy -0.853638 3.927488) (xy -0.964463 3.985487) (xy -1.061843 4.063993) (xy -1.142036 4.159988) + (xy -1.20196 4.269784) (xy -1.670837 5.37439) (xy -1.708191 5.493766) (xy -1.721537 5.618136) (xy -15.192948 5.618136) + (xy -10.110054 -6.356412) (xy -7.442392 -6.356412) (xy -7.442392 -3.856412) (xy -7.430132 -3.73193) (xy -7.393822 -3.612232) + (xy -7.334857 -3.501918) (xy -7.255505 -3.405227) (xy -7.158814 -3.325875) (xy -7.0485 -3.26691) (xy -6.928802 -3.2306) + (xy -6.80432 -3.21834) (xy -6.612066 -3.21834) (xy -6.612065 2.02006) (xy -6.693871 2.101866) (xy -6.867603 2.361875) + (xy -6.987272 2.650781) (xy -7.048279 2.957483) (xy -7.048279 3.270193) (xy -6.987272 3.576895) (xy -6.867603 3.865801) + (xy -6.693871 4.12581) (xy -6.472751 4.34693) (xy -6.212742 4.520662) (xy -5.923836 4.640331) (xy -5.617134 4.701338) + (xy -5.304424 4.701338) (xy -4.997722 4.640331) (xy -4.72613 4.527834) (xy -4.712765 4.573318) (xy -4.654766 4.684143) + (xy -4.57626 4.781523) (xy -4.480265 4.861716) (xy -4.370469 4.92164) (xy -3.542014 5.273298) (xy -3.422638 5.310652) + (xy -3.298268 5.323998) (xy -3.173684 5.312824) (xy -3.053674 5.27756) (xy -2.942849 5.219561) (xy -2.845469 5.141055) + (xy -2.765276 5.04506) (xy -2.705352 4.935264) (xy -2.236475 3.830658) (xy -2.199121 3.711282) (xy -2.185775 3.586912) + (xy -2.196949 3.462328) (xy -2.232213 3.342318) (xy -2.290212 3.231493) (xy -2.368718 3.134113) (xy -2.464713 3.05392) + (xy -2.574509 2.993996) (xy -3.402964 2.642338) (xy -3.52234 2.604984) (xy -3.64671 2.591638) (xy -3.753965 2.601258) + (xy -3.776469 2.573837) (xy -3.892194 2.478864) (xy -4.024223 2.408292) (xy -4.036238 2.404647) (xy -4.053955 2.361875) + (xy -4.227687 2.101866) (xy -4.448807 1.880746) (xy -4.708816 1.707014) (xy -4.997722 1.587345) (xy -5.092066 1.568579) + (xy -5.092066 -0.552631) (xy -4.822513 -0.499014) (xy -4.529817 -0.499014) (xy -4.242744 -0.556116) (xy -3.972327 -0.668126) + (xy -3.728959 -0.83074) (xy -3.521991 -1.037708) (xy -3.359377 -1.281076) (xy -3.247367 -1.551493) (xy -3.198142 -1.798966) + (xy -3.137422 -1.773815) (xy -2.724945 -1.691768) (xy -2.304387 -1.691768) (xy -1.956948 -1.760878) (xy -2.042 -1.675826) + (xy -2.329701 -1.245251) (xy -2.527873 -0.766822) (xy -2.6289 -0.258924) (xy -2.6289 0.258924) (xy -2.527873 0.766822) + (xy -2.329701 1.245251) (xy -2.042 1.675826) (xy -1.675826 2.042) (xy -1.245251 2.329701) (xy -0.766822 2.527873) + (xy -0.258924 2.6289) (xy 0.258924 2.6289) (xy 0.766822 2.527873) (xy 1.245251 2.329701) (xy 1.675826 2.042) + (xy 1.87926 1.838566) (xy 3.190265 1.838566) (xy 3.190265 2.131262) (xy 3.247367 2.418335) (xy 3.359377 2.688752) + (xy 3.521991 2.93212) (xy 3.728959 3.139088) (xy 3.972327 3.301702) (xy 4.242744 3.413712) (xy 4.529817 3.470814) + (xy 4.822513 3.470814) (xy 5.109586 3.413712) (xy 5.380003 3.301702) (xy 5.623371 3.139088) (xy 5.830339 2.93212) + (xy 5.992953 2.688752) (xy 6.104963 2.418335) (xy 6.162065 2.131262) (xy 6.162065 1.838566) (xy 6.104963 1.551493) + (xy 5.992953 1.281076) (xy 5.830339 1.037708) (xy 5.623371 0.83074) (xy 5.380003 0.668126) (xy 5.109586 0.556116) + (xy 4.822513 0.499014) (xy 4.529817 0.499014) (xy 4.242744 0.556116) (xy 3.972327 0.668126) (xy 3.728959 0.83074) + (xy 3.521991 1.037708) (xy 3.359377 1.281076) (xy 3.247367 1.551493) (xy 3.190265 1.838566) (xy 1.87926 1.838566) + (xy 2.042 1.675826) (xy 2.329701 1.245251) (xy 2.527873 0.766822) (xy 2.6289 0.258924) (xy 2.6289 -0.258924) + (xy 2.527873 -0.766822) (xy 2.329701 -1.245251) (xy 2.042 -1.675826) (xy 1.675826 -2.042) (xy 1.245251 -2.329701) + (xy 0.766822 -2.527873) (xy 0.258924 -2.6289) (xy -0.258924 -2.6289) (xy -0.766822 -2.527873) (xy -0.833184 -2.500385) + (xy -0.622654 -2.815466) (xy -0.461713 -3.204012) (xy -0.379666 -3.616489) (xy -0.379666 -4.037047) (xy -0.461713 -4.449524) + (xy -0.622654 -4.83807) (xy -0.856303 -5.187751) (xy -1.153683 -5.485131) (xy -1.503364 -5.71878) (xy -1.89191 -5.879721) + (xy -2.304387 -5.961768) (xy -2.724945 -5.961768) (xy -3.137422 -5.879721) (xy -3.525968 -5.71878) (xy -3.616248 -5.658457) + (xy -3.616248 -6.356412) (xy -3.628508 -6.480894) (xy -3.664818 -6.600592) (xy -3.723783 -6.710906) (xy -3.803135 -6.807597) + (xy -3.899826 -6.886949) (xy -4.01014 -6.945914) (xy -4.129838 -6.982224) (xy -4.25432 -6.994484) (xy -6.80432 -6.994484) + (xy -6.928802 -6.982224) (xy -7.0485 -6.945914) (xy -7.158814 -6.886949) (xy -7.255505 -6.807597) (xy -7.334857 -6.710906) + (xy -7.393822 -6.600592) (xy -7.430132 -6.480894) (xy -7.442392 -6.356412) (xy -10.110054 -6.356412) (xy -7.92256 -11.509823) + (xy -7.92251 -11.509938) (xy -7.922335 -11.510351) (xy -7.922333 -11.510357) (xy -7.908817 -11.542199) (xy -7.908816 -11.542201) + (xy -2.686161 -23.846004) (xy -0.018501 -23.846004) (xy -0.018501 -21.346004) (xy -0.006241 -21.221522) (xy 0.030069 -21.101824) + (xy 0.089034 -20.99151) (xy 0.168386 -20.894819) (xy 0.250614 -20.827336) (xy 0.250615 -15.365585) (xy 0.246938 -15.328253) + (xy 0.250615 -15.29092) (xy 0.261206 -15.183395) (xy 0.261612 -15.179268) (xy 0.305068 -15.036007) (xy 0.37564 -14.903977) + (xy 0.429121 -14.838811) (xy 0.435157 -14.831456) (xy 0.375613 -14.532109) (xy 0.375613 -14.219399) (xy 0.43662 -13.912697) + (xy 0.556289 -13.623791) (xy 0.730021 -13.363782) (xy 0.951141 -13.142662) (xy 1.21115 -12.96893) (xy 1.500056 -12.849261) + (xy 1.806758 -12.788254) (xy 2.119468 -12.788254) (xy 2.42617 -12.849261) (xy 2.697762 -12.961758) (xy 2.711127 -12.916274) + (xy 2.769126 -12.805449) (xy 2.847632 -12.708069) (xy 2.943627 -12.627876) (xy 3.053423 -12.567952) (xy 3.881878 -12.216294) + (xy 4.001254 -12.17894) (xy 4.125624 -12.165594) (xy 4.250208 -12.176768) (xy 4.370218 -12.212032) (xy 4.481043 -12.270031) + (xy 4.578423 -12.348537) (xy 4.658616 -12.444532) (xy 4.71854 -12.554328) (xy 5.187417 -13.658934) (xy 5.224771 -13.77831) + (xy 5.238117 -13.90268) (xy 5.226943 -14.027264) (xy 5.191679 -14.147274) (xy 5.13368 -14.258099) (xy 5.055174 -14.355479) + (xy 4.959179 -14.435672) (xy 4.849383 -14.495596) (xy 4.020928 -14.847254) (xy 3.901552 -14.884608) (xy 3.777182 -14.897954) + (xy 3.669928 -14.888334) (xy 3.647424 -14.915755) (xy 3.531699 -15.010728) (xy 3.39967 -15.0813) (xy 3.387654 -15.084945) + (xy 3.369937 -15.127717) (xy 3.196205 -15.387726) (xy 2.975085 -15.608846) (xy 2.715076 -15.782578) (xy 2.42617 -15.902247) + (xy 2.119468 -15.963254) (xy 1.806758 -15.963254) (xy 1.770614 -15.956064) (xy 1.770614 -18.350238) (xy 1.80052 -18.320332) + (xy 2.043888 -18.157718) (xy 2.314305 -18.045708) (xy 2.601378 -17.988606) (xy 2.894074 -17.988606) (xy 3.181147 -18.045708) + (xy 3.451564 -18.157718) (xy 3.694932 -18.320332) (xy 3.9019 -18.5273) (xy 4.064514 -18.770668) (xy 4.176524 -19.041085) + (xy 4.225749 -19.288558) (xy 4.286469 -19.263407) (xy 4.698946 -19.18136) (xy 5.119504 -19.18136) (xy 5.466943 -19.25047) + (xy 5.381891 -19.165418) (xy 5.09419 -18.734843) (xy 4.896018 -18.256414) (xy 4.794991 -17.748516) (xy 4.794991 -17.230668) + (xy 4.896018 -16.72277) (xy 5.09419 -16.244341) (xy 5.381891 -15.813766) (xy 5.748065 -15.447592) (xy 6.17864 -15.159891) + (xy 6.657069 -14.961719) (xy 7.16431 -14.860823) (xy 5.504391 -13.200903) (xy 5.475393 -13.177105) (xy 5.451595 -13.148107) + (xy 5.451594 -13.148106) (xy 5.380419 -13.06138) (xy 5.309847 -12.92935) (xy 5.290695 -12.866212) (xy 5.266391 -12.78609) + (xy 5.255393 -12.674437) (xy 5.255393 -12.674426) (xy 5.251717 -12.637104) (xy 5.255393 -12.599782) (xy 5.255393 -11.768586) + (xy 5.251717 -11.731264) (xy 5.255393 -11.693942) (xy 5.255393 -11.693932) (xy 5.26639 -11.582279) (xy 5.30325 -11.460766) + (xy 5.309847 -11.439018) (xy 5.380419 -11.306988) (xy 5.414947 -11.264916) (xy 5.475392 -11.191263) (xy 5.504396 -11.16746) + (xy 6.602504 -10.069351) (xy 6.602503 -4.281585) (xy 6.380898 -4.281585) (xy 6.375949 -4.306464) (xy 6.215008 -4.69501) + (xy 5.981359 -5.044691) (xy 5.683979 -5.342071) (xy 5.334298 -5.57572) (xy 4.945752 -5.736661) (xy 4.533275 -5.818708) + (xy 4.112717 -5.818708) (xy 3.70024 -5.736661) (xy 3.311694 -5.57572) (xy 2.962013 -5.342071) (xy 2.664633 -5.044691) + (xy 2.430984 -4.69501) (xy 2.270043 -4.306464) (xy 2.187996 -3.893987) (xy 2.187996 -3.473429) (xy 2.270043 -3.060952) + (xy 2.430984 -2.672406) (xy 2.664633 -2.322725) (xy 2.962013 -2.025345) (xy 3.311694 -1.791696) (xy 3.70024 -1.630755) + (xy 4.112717 -1.548708) (xy 4.533275 -1.548708) (xy 4.945752 -1.630755) (xy 5.334298 -1.791696) (xy 5.449431 -1.868625) + (xy 5.449431 -1.143513) (xy 5.461691 -1.019031) (xy 5.498001 -0.899333) (xy 5.556966 -0.789019) (xy 5.636318 -0.692328) + (xy 5.733009 -0.612976) (xy 5.843323 -0.554011) (xy 5.963021 -0.517701) (xy 6.087503 -0.505441) (xy 8.637503 -0.505441) + (xy 8.761985 -0.517701) (xy 8.881683 -0.554011) (xy 8.991997 -0.612976) (xy 9.088688 -0.692328) (xy 9.16804 -0.789019) + (xy 9.227005 -0.899333) (xy 9.263315 -1.019031) (xy 9.275575 -1.143513) (xy 9.275575 -1.694035) (xy 11.219394 -1.694035) + (xy 11.219394 0.805965) (xy 11.231654 0.930447) (xy 11.267964 1.050145) (xy 11.326929 1.160459) (xy 11.406281 1.25715) + (xy 11.488508 1.324632) (xy 11.488509 6.786384) (xy 11.484832 6.823716) (xy 11.488509 6.861049) (xy 11.499506 6.972702) + (xy 11.508116 7.001085) (xy 11.542962 7.115962) (xy 11.613534 7.247992) (xy 11.673051 7.320513) (xy 11.613507 7.61986) + (xy 11.613507 7.93257) (xy 11.674514 8.239272) (xy 11.794183 8.528178) (xy 11.967915 8.788187) (xy 12.189035 9.009307) + (xy 12.449044 9.183039) (xy 12.73795 9.302708) (xy 13.044652 9.363715) (xy 13.357362 9.363715) (xy 13.664064 9.302708) + (xy 13.935656 9.190211) (xy 13.949021 9.235695) (xy 14.00702 9.34652) (xy 14.085526 9.4439) (xy 14.181521 9.524093) + (xy 14.291317 9.584017) (xy 15.119772 9.935675) (xy 15.239148 9.973029) (xy 15.363518 9.986375) (xy 15.488102 9.975201) + (xy 15.608112 9.939937) (xy 15.718937 9.881938) (xy 15.816317 9.803432) (xy 15.89651 9.707437) (xy 15.956434 9.597641) + (xy 16.425311 8.493035) (xy 16.462665 8.373659) (xy 16.476011 8.249289) (xy 16.464837 8.124705) (xy 16.429573 8.004695) + (xy 16.371574 7.89387) (xy 16.293068 7.79649) (xy 16.197073 7.716297) (xy 16.087277 7.656373) (xy 15.258822 7.304715) + (xy 15.139446 7.267361) (xy 15.015076 7.254015) (xy 14.907822 7.263635) (xy 14.885318 7.236214) (xy 14.769593 7.141241) + (xy 14.637564 7.070669) (xy 14.625548 7.067024) (xy 14.607831 7.024252) (xy 14.434099 6.764243) (xy 14.212979 6.543123) + (xy 13.95297 6.369391) (xy 13.664064 6.249722) (xy 13.357362 6.188715) (xy 13.044652 6.188715) (xy 13.008508 6.195905) + (xy 13.008508 3.80173) (xy 13.038415 3.831637) (xy 13.281783 3.994251) (xy 13.5522 4.106261) (xy 13.839273 4.163363) + (xy 14.131969 4.163363) (xy 14.419042 4.106261) (xy 14.689459 3.994251) (xy 14.932827 3.831637) (xy 15.139795 3.624669) + (xy 15.302409 3.381301) (xy 15.414419 3.110884) (xy 15.463644 2.863411) (xy 15.524364 2.888562) (xy 15.936841 2.970609) + (xy 16.357399 2.970609) (xy 16.704838 2.901499) (xy 16.619786 2.986551) (xy 16.332085 3.417126) (xy 16.133913 3.895555) + (xy 16.032886 4.403453) (xy 16.032886 4.921301) (xy 16.133913 5.429199) (xy 16.332085 5.907628) (xy 16.619786 6.338203) + (xy 16.98596 6.704377) (xy 17.416535 6.992078) (xy 17.894964 7.19025) (xy 18.402862 7.291277) (xy 18.92071 7.291277) + (xy 19.428608 7.19025) (xy 19.907037 6.992078) (xy 20.337612 6.704377) (xy 20.541046 6.500943) (xy 21.852051 6.500943) + (xy 21.852051 6.793639) (xy 21.909153 7.080712) (xy 22.021163 7.351129) (xy 22.183777 7.594497) (xy 22.390745 7.801465) + (xy 22.634113 7.964079) (xy 22.90453 8.076089) (xy 23.191603 8.133191) (xy 23.484299 8.133191) (xy 23.771372 8.076089) + (xy 24.041789 7.964079) (xy 24.285157 7.801465) (xy 24.492125 7.594497) (xy 24.654739 7.351129) (xy 24.766749 7.080712) + (xy 24.823851 6.793639) (xy 24.823851 6.500943) (xy 24.766749 6.21387) (xy 24.654739 5.943453) (xy 24.492125 5.700085) + (xy 24.285157 5.493117) (xy 24.041789 5.330503) (xy 23.771372 5.218493) (xy 23.484299 5.161391) (xy 23.191603 5.161391) + (xy 22.90453 5.218493) (xy 22.634113 5.330503) (xy 22.390745 5.493117) (xy 22.183777 5.700085) (xy 22.021163 5.943453) + (xy 21.909153 6.21387) (xy 21.852051 6.500943) (xy 20.541046 6.500943) (xy 20.703786 6.338203) (xy 20.991487 5.907628) + (xy 21.189659 5.429199) (xy 21.290686 4.921301) (xy 21.290686 4.403453) (xy 21.189659 3.895555) (xy 20.991487 3.417126) + (xy 20.703786 2.986551) (xy 20.337612 2.620377) (xy 19.907037 2.332676) (xy 19.428608 2.134504) (xy 18.92071 2.033477) + (xy 18.402862 2.033477) (xy 17.894964 2.134504) (xy 17.828602 2.161992) (xy 18.039132 1.846911) (xy 18.200073 1.458365) + (xy 18.28212 1.045888) (xy 18.28212 0.76839) (xy 20.849782 0.76839) (xy 20.849782 1.188948) (xy 20.931829 1.601425) + (xy 21.09277 1.989971) (xy 21.326419 2.339652) (xy 21.623799 2.637032) (xy 21.97348 2.870681) (xy 22.362026 3.031622) + (xy 22.774503 3.113669) (xy 23.195061 3.113669) (xy 23.607538 3.031622) (xy 23.996084 2.870681) (xy 24.111217 2.793752) + (xy 24.111217 3.518864) (xy 24.123477 3.643346) (xy 24.159787 3.763044) (xy 24.218752 3.873358) (xy 24.298104 3.970049) + (xy 24.394795 4.049401) (xy 24.505109 4.108366) (xy 24.624807 4.144676) (xy 24.749289 4.156936) (xy 27.299289 4.156936) + (xy 27.423771 4.144676) (xy 27.543469 4.108366) (xy 27.653783 4.049401) (xy 27.750474 3.970049) (xy 27.829826 3.873358) + (xy 27.888791 3.763044) (xy 27.925101 3.643346) (xy 27.937361 3.518864) (xy 27.937361 1.430593) (xy 28.240622 1.127332) + (xy 30.662642 1.127332) (xy 30.662642 3.627332) (xy 30.674902 3.751814) (xy 30.711212 3.871512) (xy 30.770177 3.981826) + (xy 30.849529 4.078517) (xy 30.94622 4.157869) (xy 31.056534 4.216834) (xy 31.176232 4.253144) (xy 31.300714 4.265404) + (xy 31.492968 4.265404) (xy 31.492969 9.503804) (xy 31.411163 9.58561) (xy 31.237431 9.845619) (xy 31.117762 10.134525) + (xy 31.056755 10.441227) (xy 31.056755 10.753937) (xy 31.117762 11.060639) (xy 31.237431 11.349545) (xy 31.411163 11.609554) + (xy 31.632283 11.830674) (xy 31.892292 12.004406) (xy 32.181198 12.124075) (xy 32.4879 12.185082) (xy 32.80061 12.185082) + (xy 33.107312 12.124075) (xy 33.378904 12.011578) (xy 33.392269 12.057062) (xy 33.450268 12.167887) (xy 33.528774 12.265267) + (xy 33.624769 12.34546) (xy 33.734565 12.405384) (xy 34.56302 12.757042) (xy 34.682396 12.794396) (xy 34.806766 12.807742) + (xy 34.93135 12.796568) (xy 35.05136 12.761304) (xy 35.162185 12.703305) (xy 35.259565 12.624799) (xy 35.339758 12.528804) + (xy 35.399682 12.419008) (xy 35.868559 11.314402) (xy 35.905913 11.195026) (xy 35.919259 11.070656) (xy 35.908085 10.946072) + (xy 35.872821 10.826062) (xy 35.814822 10.715237) (xy 35.736316 10.617857) (xy 35.640321 10.537664) (xy 35.530525 10.47774) + (xy 34.70207 10.126082) (xy 34.582694 10.088728) (xy 34.458324 10.075382) (xy 34.35107 10.085002) (xy 34.328566 10.057581) + (xy 34.212841 9.962608) (xy 34.080812 9.892036) (xy 34.068796 9.888391) (xy 34.051079 9.845619) (xy 33.877347 9.58561) + (xy 33.656227 9.36449) (xy 33.396218 9.190758) (xy 33.107312 9.071089) (xy 33.012968 9.052323) (xy 33.012968 6.931113) + (xy 33.282521 6.98473) (xy 33.575217 6.98473) (xy 33.86229 6.927628) (xy 34.132707 6.815618) (xy 34.376075 6.653004) + (xy 34.583043 6.446036) (xy 34.745657 6.202668) (xy 34.857667 5.932251) (xy 34.906892 5.684778) (xy 34.967612 5.709929) + (xy 35.380089 5.791976) (xy 35.800647 5.791976) (xy 36.148086 5.722866) (xy 36.063034 5.807918) (xy 35.775333 6.238493) + (xy 35.577161 6.716922) (xy 35.476134 7.22482) (xy 35.476134 7.742668) (xy 35.577161 8.250566) (xy 35.775333 8.728995) + (xy 36.063034 9.15957) (xy 36.429208 9.525744) (xy 36.859783 9.813445) (xy 37.338212 10.011617) (xy 37.84611 10.112644) + (xy 38.363958 10.112644) (xy 38.871856 10.011617) (xy 39.350285 9.813445) (xy 39.78086 9.525744) (xy 39.984294 9.32231) + (xy 41.295299 9.32231) (xy 41.295299 9.615006) (xy 41.352401 9.902079) (xy 41.464411 10.172496) (xy 41.627025 10.415864) + (xy 41.833993 10.622832) (xy 42.077361 10.785446) (xy 42.347778 10.897456) (xy 42.634851 10.954558) (xy 42.927547 10.954558) + (xy 43.21462 10.897456) (xy 43.485037 10.785446) (xy 43.728405 10.622832) (xy 43.935373 10.415864) (xy 44.097987 10.172496) + (xy 44.209997 9.902079) (xy 44.267099 9.615006) (xy 44.267099 9.32231) (xy 44.209997 9.035237) (xy 44.097987 8.76482) + (xy 43.935373 8.521452) (xy 43.728405 8.314484) (xy 43.485037 8.15187) (xy 43.21462 8.03986) (xy 42.927547 7.982758) + (xy 42.634851 7.982758) (xy 42.347778 8.03986) (xy 42.077361 8.15187) (xy 41.833993 8.314484) (xy 41.627025 8.521452) + (xy 41.464411 8.76482) (xy 41.352401 9.035237) (xy 41.295299 9.32231) (xy 39.984294 9.32231) (xy 40.147034 9.15957) + (xy 40.434735 8.728995) (xy 40.632907 8.250566) (xy 40.733934 7.742668) (xy 40.733934 7.638704) (xy 59.343325 7.638704) + (xy 59.354499 7.763288) (xy 59.389763 7.883298) (xy 59.447762 7.994123) (xy 59.526268 8.091503) (xy 59.622263 8.171696) + (xy 59.732059 8.23162) (xy 60.560514 8.583278) (xy 60.67989 8.620632) (xy 60.80426 8.633978) (xy 60.819563 8.632605) + (xy 60.825766 8.701763) (xy 60.86103 8.821773) (xy 60.919029 8.932598) (xy 60.997535 9.029978) (xy 61.09353 9.110171) + (xy 61.203325 9.170095) (xy 62.839983 9.864815) (xy 62.95936 9.902169) (xy 63.08373 9.915515) (xy 63.208314 9.904341) + (xy 63.328324 9.869077) (xy 63.439149 9.811078) (xy 63.536529 9.732572) (xy 63.616722 9.636577) (xy 63.676646 9.526782) + (xy 64.371366 7.890124) (xy 64.40872 7.770747) (xy 64.422066 7.646377) (xy 64.410892 7.521793) (xy 64.375628 7.401783) + (xy 64.317629 7.290958) (xy 64.239123 7.193578) (xy 64.143128 7.113385) (xy 64.033333 7.053461) (xy 62.396675 6.358741) + (xy 62.277298 6.321387) (xy 62.152928 6.308041) (xy 62.028344 6.319215) (xy 61.908334 6.354479) (xy 61.797509 6.412478) + (xy 61.743454 6.456056) (xy 61.73381 6.444093) (xy 61.637815 6.3639) (xy 61.528019 6.303976) (xy 60.699564 5.952318) + (xy 60.580188 5.914964) (xy 60.455818 5.901618) (xy 60.331234 5.912792) (xy 60.211224 5.948056) (xy 60.100399 6.006055) + (xy 60.003019 6.084561) (xy 59.922826 6.180556) (xy 59.862902 6.290352) (xy 59.394025 7.394958) (xy 59.356671 7.514334) + (xy 59.343325 7.638704) (xy 40.733934 7.638704) (xy 40.733934 7.22482) (xy 40.632907 6.716922) (xy 40.434735 6.238493) + (xy 40.147034 5.807918) (xy 39.78086 5.441744) (xy 39.350285 5.154043) (xy 38.871856 4.955871) (xy 38.363958 4.854844) + (xy 37.84611 4.854844) (xy 37.338212 4.955871) (xy 37.27185 4.983359) (xy 37.48238 4.668278) (xy 37.643321 4.279732) + (xy 37.725368 3.867255) (xy 37.725368 3.446697) (xy 37.643321 3.03422) (xy 37.48238 2.645674) (xy 37.248731 2.295993) + (xy 36.951351 1.998613) (xy 36.60167 1.764964) (xy 36.213124 1.604023) (xy 35.800647 1.521976) (xy 35.380089 1.521976) + (xy 34.967612 1.604023) (xy 34.579066 1.764964) (xy 34.488786 1.825287) (xy 34.488786 1.127332) (xy 34.476526 1.00285) + (xy 34.440216 0.883152) (xy 34.381251 0.772838) (xy 34.301899 0.676147) (xy 34.205208 0.596795) (xy 34.094894 0.53783) + (xy 33.975196 0.50152) (xy 33.850714 0.48926) (xy 31.300714 0.48926) (xy 31.176232 0.50152) (xy 31.056534 0.53783) + (xy 30.94622 0.596795) (xy 30.849529 0.676147) (xy 30.770177 0.772838) (xy 30.711212 0.883152) (xy 30.674902 1.00285) + (xy 30.662642 1.127332) (xy 28.240622 1.127332) (xy 29.640847 -0.272892) (xy 29.669844 -0.296689) (xy 29.764817 -0.412414) + (xy 29.835389 -0.544443) (xy 29.878846 -0.687704) (xy 29.889843 -0.799357) (xy 29.889843 -0.799358) (xy 29.89352 -0.83669) + (xy 29.889843 -0.874023) (xy 29.889843 -4.387712) (xy 43.807388 -4.387712) (xy 43.818562 -4.263128) (xy 43.853826 -4.143118) + (xy 43.911825 -4.032293) (xy 43.990331 -3.934913) (xy 44.086326 -3.85472) (xy 44.196122 -3.794796) (xy 45.024577 -3.443138) + (xy 45.143953 -3.405784) (xy 45.268323 -3.392438) (xy 45.283626 -3.393811) (xy 45.289829 -3.324653) (xy 45.325093 -3.204643) + (xy 45.383092 -3.093818) (xy 45.461598 -2.996438) (xy 45.557593 -2.916245) (xy 45.667388 -2.856321) (xy 47.304046 -2.161601) + (xy 47.423423 -2.124247) (xy 47.547793 -2.110901) (xy 47.672377 -2.122075) (xy 47.792387 -2.157339) (xy 47.903212 -2.215338) + (xy 48.000592 -2.293844) (xy 48.080785 -2.389839) (xy 48.140709 -2.499634) (xy 48.835429 -4.136292) (xy 48.872783 -4.255669) + (xy 48.886129 -4.380039) (xy 48.874955 -4.504623) (xy 48.839691 -4.624633) (xy 48.781692 -4.735458) (xy 48.703186 -4.832838) + (xy 48.607191 -4.913031) (xy 48.497396 -4.972955) (xy 46.860738 -5.667675) (xy 46.741361 -5.705029) (xy 46.616991 -5.718375) + (xy 46.492407 -5.707201) (xy 46.372397 -5.671937) (xy 46.261572 -5.613938) (xy 46.207517 -5.57036) (xy 46.197873 -5.582323) + (xy 46.101878 -5.662516) (xy 45.992082 -5.72244) (xy 45.163627 -6.074098) (xy 45.044251 -6.111452) (xy 44.919881 -6.124798) + (xy 44.795297 -6.113624) (xy 44.675287 -6.07836) (xy 44.564462 -6.020361) (xy 44.467082 -5.941855) (xy 44.386889 -5.84586) + (xy 44.326965 -5.736064) (xy 43.858088 -4.631458) (xy 43.820734 -4.512082) (xy 43.807388 -4.387712) (xy 29.889843 -4.387712) + (xy 29.889843 -9.637875) (xy 30.058004 -9.525513) (xy 30.328421 -9.413503) (xy 30.615494 -9.356401) (xy 30.90819 -9.356401) + (xy 31.195263 -9.413503) (xy 31.46568 -9.525513) (xy 31.709048 -9.688127) (xy 31.916016 -9.895095) (xy 32.07863 -10.138463) + (xy 32.19064 -10.40888) (xy 32.247742 -10.695953) (xy 32.247742 -10.988649) (xy 32.19064 -11.275722) (xy 32.07863 -11.546139) + (xy 31.916016 -11.789507) (xy 31.709048 -11.996475) (xy 31.46568 -12.159089) (xy 31.462613 -12.160359) (xy 32.63491 -13.332656) + (xy 34.72318 -13.332656) (xy 34.847662 -13.344916) (xy 34.96736 -13.381226) (xy 35.077674 -13.440191) (xy 35.174365 -13.519543) + (xy 35.253717 -13.616234) (xy 35.312682 -13.726548) (xy 35.348992 -13.846246) (xy 35.361252 -13.970728) (xy 35.361252 -16.058998) + (xy 35.425717 -16.123463) (xy 35.454714 -16.14726) (xy 35.549687 -16.262985) (xy 35.602751 -16.36226) (xy 38.086533 -16.36226) + (xy 38.086533 -13.86226) (xy 38.098793 -13.737778) (xy 38.135103 -13.61808) (xy 38.194068 -13.507766) (xy 38.27342 -13.411075) + (xy 38.370111 -13.331723) (xy 38.480425 -13.272758) (xy 38.600123 -13.236448) (xy 38.724605 -13.224188) (xy 38.922199 -13.224188) + (xy 38.916859 -13.169971) (xy 38.916859 -13.169961) (xy 38.913183 -13.132639) (xy 38.916859 -13.095316) (xy 38.91686 -7.985788) + (xy 38.835054 -7.903982) (xy 38.661322 -7.643973) (xy 38.541653 -7.355067) (xy 38.480646 -7.048365) (xy 38.480646 -6.735655) + (xy 38.541653 -6.428953) (xy 38.661322 -6.140047) (xy 38.835054 -5.880038) (xy 39.056174 -5.658918) (xy 39.316183 -5.485186) + (xy 39.605089 -5.365517) (xy 39.911791 -5.30451) (xy 40.224501 -5.30451) (xy 40.531203 -5.365517) (xy 40.802795 -5.478014) + (xy 40.81616 -5.43253) (xy 40.874159 -5.321705) (xy 40.952665 -5.224325) (xy 41.04866 -5.144132) (xy 41.158456 -5.084208) + (xy 41.986911 -4.73255) (xy 42.106287 -4.695196) (xy 42.230657 -4.68185) (xy 42.355241 -4.693024) (xy 42.475251 -4.728288) + (xy 42.586076 -4.786287) (xy 42.683456 -4.864793) (xy 42.763649 -4.960788) (xy 42.823573 -5.070584) (xy 43.29245 -6.17519) + (xy 43.329804 -6.294566) (xy 43.34315 -6.418936) (xy 43.331976 -6.54352) (xy 43.296712 -6.66353) (xy 43.238713 -6.774355) + (xy 43.160207 -6.871735) (xy 43.064212 -6.951928) (xy 42.954416 -7.011852) (xy 42.125961 -7.36351) (xy 42.006585 -7.400864) + (xy 41.882215 -7.41421) (xy 41.774961 -7.40459) (xy 41.752457 -7.432011) (xy 41.636732 -7.526984) (xy 41.504703 -7.597556) + (xy 41.492687 -7.601201) (xy 41.47497 -7.643973) (xy 41.301238 -7.903982) (xy 41.080118 -8.125102) (xy 40.820109 -8.298834) + (xy 40.531203 -8.418503) (xy 40.436859 -8.437269) (xy 40.436859 -10.558479) (xy 40.706412 -10.504862) (xy 40.999108 -10.504862) + (xy 41.286181 -10.561964) (xy 41.556598 -10.673974) (xy 41.799966 -10.836588) (xy 42.006934 -11.043556) (xy 42.169548 -11.286924) + (xy 42.281558 -11.557341) (xy 42.330783 -11.804814) (xy 42.391503 -11.779663) (xy 42.80398 -11.697616) (xy 43.224538 -11.697616) + (xy 43.571977 -11.766726) (xy 43.486925 -11.681674) (xy 43.199224 -11.251099) (xy 43.001052 -10.77267) (xy 42.900025 -10.264772) + (xy 42.900025 -9.746924) (xy 43.001052 -9.239026) (xy 43.199224 -8.760597) (xy 43.486925 -8.330022) (xy 43.853099 -7.963848) + (xy 44.283674 -7.676147) (xy 44.762103 -7.477975) (xy 45.270001 -7.376948) (xy 45.787849 -7.376948) (xy 46.295747 -7.477975) + (xy 46.774176 -7.676147) (xy 47.204751 -7.963848) (xy 47.408185 -8.167282) (xy 48.71919 -8.167282) (xy 48.71919 -7.874586) + (xy 48.776292 -7.587513) (xy 48.888302 -7.317096) (xy 49.050916 -7.073728) (xy 49.257884 -6.86676) (xy 49.501252 -6.704146) + (xy 49.771669 -6.592136) (xy 50.058742 -6.535034) (xy 50.351438 -6.535034) (xy 50.638511 -6.592136) (xy 50.908928 -6.704146) + (xy 51.152296 -6.86676) (xy 51.359264 -7.073728) (xy 51.521878 -7.317096) (xy 51.633888 -7.587513) (xy 51.69099 -7.874586) + (xy 51.69099 -8.167282) (xy 51.633888 -8.454355) (xy 51.521878 -8.724772) (xy 51.359264 -8.96814) (xy 51.152296 -9.175108) + (xy 50.908928 -9.337722) (xy 50.638511 -9.449732) (xy 50.351438 -9.506834) (xy 50.058742 -9.506834) (xy 49.771669 -9.449732) + (xy 49.501252 -9.337722) (xy 49.257884 -9.175108) (xy 49.050916 -8.96814) (xy 48.888302 -8.724772) (xy 48.776292 -8.454355) + (xy 48.71919 -8.167282) (xy 47.408185 -8.167282) (xy 47.570925 -8.330022) (xy 47.858626 -8.760597) (xy 48.056798 -9.239026) + (xy 48.157825 -9.746924) (xy 48.157825 -10.264772) (xy 48.056798 -10.77267) (xy 47.858626 -11.251099) (xy 47.570925 -11.681674) + (xy 47.204751 -12.047848) (xy 46.774176 -12.335549) (xy 46.295747 -12.533721) (xy 45.787849 -12.634748) (xy 45.270001 -12.634748) + (xy 44.762103 -12.533721) (xy 44.695741 -12.506233) (xy 44.906271 -12.821314) (xy 45.067212 -13.20986) (xy 45.149259 -13.622337) + (xy 45.149259 -14.042895) (xy 45.067212 -14.455372) (xy 44.906271 -14.843918) (xy 44.672622 -15.193599) (xy 44.375242 -15.490979) + (xy 44.025561 -15.724628) (xy 43.637015 -15.885569) (xy 43.224538 -15.967616) (xy 42.80398 -15.967616) (xy 42.391503 -15.885569) + (xy 42.002957 -15.724628) (xy 41.912677 -15.664305) (xy 41.912677 -16.36226) (xy 41.900417 -16.486742) (xy 41.864107 -16.60644) + (xy 41.805142 -16.716754) (xy 41.72579 -16.813445) (xy 41.629099 -16.892797) (xy 41.518785 -16.951762) (xy 41.399087 -16.988072) + (xy 41.274605 -17.000332) (xy 38.724605 -17.000332) (xy 38.600123 -16.988072) (xy 38.480425 -16.951762) (xy 38.370111 -16.892797) + (xy 38.27342 -16.813445) (xy 38.194068 -16.716754) (xy 38.135103 -16.60644) (xy 38.098793 -16.486742) (xy 38.086533 -16.36226) + (xy 35.602751 -16.36226) (xy 35.620259 -16.395014) (xy 35.663716 -16.538275) (xy 35.674713 -16.649928) (xy 35.674713 -16.649938) + (xy 35.678389 -16.687261) (xy 35.674713 -16.724584) (xy 35.674713 -16.819912) (xy 37.144802 -18.29) (xy 55.176289 -18.29) + (xy 55.220226 -18.246063) (xy 55.389744 -18.132795) (xy 55.578102 -18.054774) (xy 55.778061 -18.015) (xy 55.932266 -18.015) + (xy 52.380426 -14.46316) (xy 52.351428 -14.439362) (xy 52.32763 -14.410364) (xy 52.327629 -14.410363) (xy 52.256454 -14.323637) + (xy 52.237102 -14.287433) (xy 51.909823 -14.287433) (xy 51.904874 -14.312312) (xy 51.743933 -14.700858) (xy 51.510284 -15.050539) + (xy 51.212904 -15.347919) (xy 50.863223 -15.581568) (xy 50.474677 -15.742509) (xy 50.0622 -15.824556) (xy 49.641642 -15.824556) + (xy 49.229165 -15.742509) (xy 48.840619 -15.581568) (xy 48.490938 -15.347919) (xy 48.193558 -15.050539) (xy 47.959909 -14.700858) + (xy 47.798968 -14.312312) (xy 47.716921 -13.899835) (xy 47.716921 -13.479277) (xy 47.798968 -13.0668) (xy 47.959909 -12.678254) + (xy 48.193558 -12.328573) (xy 48.490938 -12.031193) (xy 48.840619 -11.797544) (xy 49.229165 -11.636603) (xy 49.641642 -11.554556) + (xy 50.0622 -11.554556) (xy 50.474677 -11.636603) (xy 50.863223 -11.797544) (xy 50.978356 -11.874473) (xy 50.978356 -11.149361) + (xy 50.990616 -11.024879) (xy 51.026926 -10.905181) (xy 51.085891 -10.794867) (xy 51.165243 -10.698176) (xy 51.261934 -10.618824) + (xy 51.372248 -10.559859) (xy 51.491946 -10.523549) (xy 51.616428 -10.511289) (xy 52.131429 -10.511289) (xy 52.131428 -4.148462) + (xy 44.956535 3.026432) (xy 44.927537 3.05023) (xy 44.903739 3.079228) (xy 44.903738 3.079229) (xy 44.832563 3.165955) + (xy 44.813211 3.202159) (xy 44.485932 3.202159) (xy 44.480983 3.17728) (xy 44.320042 2.788734) (xy 44.086393 2.439053) + (xy 43.789013 2.141673) (xy 43.439332 1.908024) (xy 43.050786 1.747083) (xy 42.638309 1.665036) (xy 42.217751 1.665036) + (xy 41.805274 1.747083) (xy 41.416728 1.908024) (xy 41.067047 2.141673) (xy 40.769667 2.439053) (xy 40.536018 2.788734) + (xy 40.375077 3.17728) (xy 40.29303 3.589757) (xy 40.29303 4.010315) (xy 40.375077 4.422792) (xy 40.536018 4.811338) + (xy 40.769667 5.161019) (xy 41.067047 5.458399) (xy 41.416728 5.692048) (xy 41.805274 5.852989) (xy 42.217751 5.935036) + (xy 42.638309 5.935036) (xy 43.050786 5.852989) (xy 43.439332 5.692048) (xy 43.554465 5.615119) (xy 43.554465 6.340231) + (xy 43.566725 6.464713) (xy 43.603035 6.584411) (xy 43.662 6.694725) (xy 43.741352 6.791416) (xy 43.838043 6.870768) + (xy 43.948357 6.929733) (xy 44.068055 6.966043) (xy 44.192537 6.978303) (xy 46.742537 6.978303) (xy 46.867019 6.966043) + (xy 46.986717 6.929733) (xy 47.097031 6.870768) (xy 47.193722 6.791416) (xy 47.273074 6.694725) (xy 47.332039 6.584411) + (xy 47.368349 6.464713) (xy 47.380609 6.340231) (xy 47.380609 3.840231) (xy 47.368349 3.715749) (xy 47.332039 3.596051) + (xy 47.273074 3.485737) (xy 47.193722 3.389046) (xy 47.097031 3.309694) (xy 46.986717 3.250729) (xy 46.90625 3.226319) + (xy 53.402432 -3.269862) (xy 53.431429 -3.293659) (xy 53.526402 -3.409384) (xy 53.596974 -3.541413) (xy 53.62247 -3.625463) + (xy 53.62247 -1.835845) (xy 53.63473 -1.711363) (xy 53.67104 -1.591665) (xy 53.730005 -1.481351) (xy 53.809357 -1.38466) + (xy 53.906048 -1.305308) (xy 54.016362 -1.246343) (xy 54.13606 -1.210033) (xy 54.260542 -1.197773) (xy 54.775543 -1.197773) + (xy 54.775543 -1.166328) (xy 54.701799 -1.092584) (xy 54.672795 -1.068781) (xy 54.622848 -1.00792) (xy 54.577822 -0.953056) + (xy 54.540965 -0.884102) (xy 54.50725 -0.821026) (xy 54.463793 -0.677765) (xy 54.452796 -0.566112) (xy 54.452796 -0.566102) + (xy 54.44912 -0.52878) (xy 54.452796 -0.491457) (xy 54.452797 4.040628) (xy 54.370991 4.122434) (xy 54.197259 4.382443) + (xy 54.07759 4.671349) (xy 54.016583 4.978051) (xy 54.016583 5.290761) (xy 54.07759 5.597463) (xy 54.197259 5.886369) + (xy 54.370991 6.146378) (xy 54.592111 6.367498) (xy 54.85212 6.54123) (xy 55.141026 6.660899) (xy 55.447728 6.721906) + (xy 55.760438 6.721906) (xy 56.06714 6.660899) (xy 56.338732 6.548402) (xy 56.352097 6.593886) (xy 56.410096 6.704711) + (xy 56.488602 6.802091) (xy 56.584597 6.882284) (xy 56.694393 6.942208) (xy 57.522848 7.293866) (xy 57.642224 7.33122) + (xy 57.766594 7.344566) (xy 57.891178 7.333392) (xy 58.011188 7.298128) (xy 58.122013 7.240129) (xy 58.219393 7.161623) + (xy 58.299586 7.065628) (xy 58.35951 6.955832) (xy 58.828387 5.851226) (xy 58.865741 5.73185) (xy 58.879087 5.60748) + (xy 58.867913 5.482896) (xy 58.832649 5.362886) (xy 58.77465 5.252061) (xy 58.696144 5.154681) (xy 58.600149 5.074488) + (xy 58.490353 5.014564) (xy 57.661898 4.662906) (xy 57.542522 4.625552) (xy 57.418152 4.612206) (xy 57.310898 4.621826) + (xy 57.288394 4.594405) (xy 57.172669 4.499432) (xy 57.04064 4.42886) (xy 57.028624 4.425215) (xy 57.010907 4.382443) + (xy 56.837175 4.122434) (xy 56.616055 3.901314) (xy 56.356046 3.727582) (xy 56.06714 3.607913) (xy 55.972796 3.589147) + (xy 55.972796 1.467936) (xy 56.242349 1.521553) (xy 56.535045 1.521553) (xy 56.822118 1.464451) (xy 57.092535 1.352441) + (xy 57.335903 1.189827) (xy 57.542871 0.982859) (xy 57.705485 0.739491) (xy 57.817495 0.469074) (xy 57.86672 0.221601) + (xy 57.92744 0.246752) (xy 58.339917 0.328799) (xy 58.760475 0.328799) (xy 59.107914 0.259689) (xy 59.022862 0.344741) + (xy 58.735161 0.775316) (xy 58.536989 1.253745) (xy 58.435962 1.761643) (xy 58.435962 2.279491) (xy 58.536989 2.787389) + (xy 58.735161 3.265818) (xy 59.022862 3.696393) (xy 59.389036 4.062567) (xy 59.819611 4.350268) (xy 60.29804 4.54844) + (xy 60.805938 4.649467) (xy 61.323786 4.649467) (xy 61.831684 4.54844) (xy 62.310113 4.350268) (xy 62.740688 4.062567) + (xy 62.944122 3.859133) (xy 64.255127 3.859133) (xy 64.255127 4.151829) (xy 64.312229 4.438902) (xy 64.424239 4.709319) + (xy 64.586853 4.952687) (xy 64.793821 5.159655) (xy 65.037189 5.322269) (xy 65.307606 5.434279) (xy 65.594679 5.491381) + (xy 65.887375 5.491381) (xy 66.174448 5.434279) (xy 66.444865 5.322269) (xy 66.688233 5.159655) (xy 66.895201 4.952687) + (xy 67.057815 4.709319) (xy 67.169825 4.438902) (xy 67.226927 4.151829) (xy 67.226927 3.859133) (xy 67.169825 3.57206) + (xy 67.057815 3.301643) (xy 66.895201 3.058275) (xy 66.688233 2.851307) (xy 66.444865 2.688693) (xy 66.174448 2.576683) + (xy 65.887375 2.519581) (xy 65.594679 2.519581) (xy 65.307606 2.576683) (xy 65.037189 2.688693) (xy 64.793821 2.851307) + (xy 64.586853 3.058275) (xy 64.424239 3.301643) (xy 64.312229 3.57206) (xy 64.255127 3.859133) (xy 62.944122 3.859133) + (xy 63.106862 3.696393) (xy 63.394563 3.265818) (xy 63.592735 2.787389) (xy 63.693762 2.279491) (xy 63.693762 1.761643) + (xy 63.592735 1.253745) (xy 63.394563 0.775316) (xy 63.106862 0.344741) (xy 62.740688 -0.021433) (xy 62.310113 -0.309134) + (xy 61.831684 -0.507306) (xy 61.323786 -0.608333) (xy 60.805938 -0.608333) (xy 60.29804 -0.507306) (xy 60.231678 -0.479818) + (xy 60.442208 -0.794899) (xy 60.603149 -1.183445) (xy 60.685196 -1.595922) (xy 60.685196 -2.01648) (xy 60.603149 -2.428957) + (xy 60.442208 -2.817503) (xy 60.208559 -3.167184) (xy 59.911179 -3.464564) (xy 59.561498 -3.698213) (xy 59.172952 -3.859154) + (xy 58.760475 -3.941201) (xy 58.339917 -3.941201) (xy 57.92744 -3.859154) (xy 57.538894 -3.698213) (xy 57.448614 -3.63789) + (xy 57.448614 -4.335845) (xy 57.436354 -4.460327) (xy 57.400044 -4.580025) (xy 57.341079 -4.690339) (xy 57.261727 -4.78703) + (xy 57.165036 -4.866382) (xy 57.054722 -4.925347) (xy 56.935024 -4.961657) (xy 56.810542 -4.973917) (xy 54.260542 -4.973917) + (xy 54.13606 -4.961657) (xy 54.016362 -4.925347) (xy 53.906048 -4.866382) (xy 53.809357 -4.78703) (xy 53.730005 -4.690339) + (xy 53.67104 -4.580025) (xy 53.651428 -4.515373) (xy 53.651428 -9.850888) (xy 66.767216 -9.850888) (xy 66.77839 -9.726304) + (xy 66.813654 -9.606294) (xy 66.871653 -9.495469) (xy 66.950159 -9.398089) (xy 67.046154 -9.317896) (xy 67.15595 -9.257972) + (xy 67.984405 -8.906314) (xy 68.103781 -8.86896) (xy 68.228151 -8.855614) (xy 68.243454 -8.856987) (xy 68.249657 -8.787829) + (xy 68.284921 -8.667819) (xy 68.34292 -8.556994) (xy 68.421426 -8.459614) (xy 68.517421 -8.379421) (xy 68.627216 -8.319497) + (xy 70.263874 -7.624777) (xy 70.383251 -7.587423) (xy 70.507621 -7.574077) (xy 70.632205 -7.585251) (xy 70.752215 -7.620515) + (xy 70.86304 -7.678514) (xy 70.96042 -7.75702) (xy 71.040613 -7.853015) (xy 71.100537 -7.96281) (xy 71.795257 -9.599468) + (xy 71.832611 -9.718845) (xy 71.845957 -9.843215) (xy 71.834783 -9.967799) (xy 71.799519 -10.087809) (xy 71.74152 -10.198634) + (xy 71.663014 -10.296014) (xy 71.567019 -10.376207) (xy 71.457224 -10.436131) (xy 69.820566 -11.130851) (xy 69.701189 -11.168205) + (xy 69.576819 -11.181551) (xy 69.452235 -11.170377) (xy 69.332225 -11.135113) (xy 69.2214 -11.077114) (xy 69.167345 -11.033536) + (xy 69.157701 -11.045499) (xy 69.061706 -11.125692) (xy 68.95191 -11.185616) (xy 68.123455 -11.537274) (xy 68.004079 -11.574628) + (xy 67.879709 -11.587974) (xy 67.755125 -11.5768) (xy 67.635115 -11.541536) (xy 67.52429 -11.483537) (xy 67.42691 -11.405031) + (xy 67.346717 -11.309036) (xy 67.286793 -11.19924) (xy 66.817916 -10.094634) (xy 66.780562 -9.975258) (xy 66.767216 -9.850888) + (xy 53.651428 -9.850888) (xy 53.651428 -10.511289) (xy 54.166428 -10.511289) (xy 54.29091 -10.523549) (xy 54.410608 -10.559859) + (xy 54.520922 -10.618824) (xy 54.617613 -10.698176) (xy 54.696965 -10.794867) (xy 54.75593 -10.905181) (xy 54.79224 -11.024879) + (xy 54.8045 -11.149361) (xy 54.8045 -13.649361) (xy 54.79224 -13.773843) (xy 54.75593 -13.893541) (xy 54.696965 -14.003855) + (xy 54.617613 -14.100546) (xy 54.520922 -14.179898) (xy 54.410608 -14.238863) (xy 54.330141 -14.263273) (xy 60.826323 -20.759454) + (xy 60.85532 -20.783251) (xy 60.950293 -20.898976) (xy 61.020865 -21.031005) (xy 61.046361 -21.115055) (xy 61.046361 -19.325437) + (xy 61.058621 -19.200955) (xy 61.094931 -19.081257) (xy 61.153896 -18.970943) (xy 61.233248 -18.874252) (xy 61.329939 -18.7949) + (xy 61.440253 -18.735935) (xy 61.559951 -18.699625) (xy 61.684433 -18.687365) (xy 61.876687 -18.687365) (xy 61.876688 -13.448964) + (xy 61.794882 -13.367158) (xy 61.62115 -13.107149) (xy 61.501481 -12.818243) (xy 61.440474 -12.511541) (xy 61.440474 -12.198831) + (xy 61.501481 -11.892129) (xy 61.62115 -11.603223) (xy 61.794882 -11.343214) (xy 62.016002 -11.122094) (xy 62.276011 -10.948362) + (xy 62.564917 -10.828693) (xy 62.871619 -10.767686) (xy 63.184329 -10.767686) (xy 63.491031 -10.828693) (xy 63.762623 -10.94119) + (xy 63.775988 -10.895706) (xy 63.833987 -10.784881) (xy 63.912493 -10.687501) (xy 64.008488 -10.607308) (xy 64.118284 -10.547384) + (xy 64.946739 -10.195726) (xy 65.066115 -10.158372) (xy 65.190485 -10.145026) (xy 65.315069 -10.1562) (xy 65.435079 -10.191464) + (xy 65.545904 -10.249463) (xy 65.643284 -10.327969) (xy 65.723477 -10.423964) (xy 65.783401 -10.53376) (xy 66.252278 -11.638366) + (xy 66.289632 -11.757742) (xy 66.302978 -11.882112) (xy 66.291804 -12.006696) (xy 66.25654 -12.126706) (xy 66.198541 -12.237531) + (xy 66.120035 -12.334911) (xy 66.02404 -12.415104) (xy 65.914244 -12.475028) (xy 65.085789 -12.826686) (xy 64.966413 -12.86404) + (xy 64.842043 -12.877386) (xy 64.734789 -12.867766) (xy 64.712285 -12.895187) (xy 64.59656 -12.99016) (xy 64.464531 -13.060732) + (xy 64.452515 -13.064377) (xy 64.434798 -13.107149) (xy 64.261066 -13.367158) (xy 64.039946 -13.588278) (xy 63.779937 -13.76201) + (xy 63.491031 -13.881679) (xy 63.396687 -13.900445) (xy 63.396687 -16.021656) (xy 63.66624 -15.968039) (xy 63.958936 -15.968039) + (xy 64.246009 -16.025141) (xy 64.516426 -16.137151) (xy 64.759794 -16.299765) (xy 64.966762 -16.506733) (xy 65.129376 -16.750101) + (xy 65.241386 -17.020518) (xy 65.290611 -17.267991) (xy 65.351331 -17.24284) (xy 65.763808 -17.160793) (xy 66.184366 -17.160793) + (xy 66.531805 -17.229903) (xy 66.446753 -17.144851) (xy 66.159052 -16.714276) (xy 65.96088 -16.235847) (xy 65.859853 -15.727949) + (xy 65.859853 -15.210101) (xy 65.96088 -14.702203) (xy 66.159052 -14.223774) (xy 66.446753 -13.793199) (xy 66.812927 -13.427025) + (xy 67.243502 -13.139324) (xy 67.721931 -12.941152) (xy 68.229829 -12.840125) (xy 68.747677 -12.840125) (xy 69.255575 -12.941152) + (xy 69.734004 -13.139324) (xy 70.164579 -13.427025) (xy 70.368013 -13.630459) (xy 71.679018 -13.630459) (xy 71.679018 -13.337763) + (xy 71.73612 -13.05069) (xy 71.84813 -12.780273) (xy 72.010744 -12.536905) (xy 72.217712 -12.329937) (xy 72.46108 -12.167323) + (xy 72.731497 -12.055313) (xy 73.01857 -11.998211) (xy 73.311266 -11.998211) (xy 73.598339 -12.055313) (xy 73.868756 -12.167323) + (xy 74.112124 -12.329937) (xy 74.319092 -12.536905) (xy 74.481706 -12.780273) (xy 74.593716 -13.05069) (xy 74.650818 -13.337763) + (xy 74.650818 -13.630459) (xy 74.593716 -13.917532) (xy 74.481706 -14.187949) (xy 74.319092 -14.431317) (xy 74.112124 -14.638285) + (xy 73.868756 -14.800899) (xy 73.598339 -14.912909) (xy 73.311266 -14.970011) (xy 73.01857 -14.970011) (xy 72.731497 -14.912909) + (xy 72.46108 -14.800899) (xy 72.217712 -14.638285) (xy 72.010744 -14.431317) (xy 71.84813 -14.187949) (xy 71.73612 -13.917532) + (xy 71.679018 -13.630459) (xy 70.368013 -13.630459) (xy 70.530753 -13.793199) (xy 70.818454 -14.223774) (xy 71.016626 -14.702203) + (xy 71.117653 -15.210101) (xy 71.117653 -15.727949) (xy 71.016626 -16.235847) (xy 70.818454 -16.714276) (xy 70.530753 -17.144851) + (xy 70.164579 -17.511025) (xy 69.734004 -17.798726) (xy 69.255575 -17.996898) (xy 68.747677 -18.097925) (xy 68.229829 -18.097925) + (xy 67.721931 -17.996898) (xy 67.655569 -17.96941) (xy 67.866099 -18.284491) (xy 68.02704 -18.673037) (xy 68.109087 -19.085514) + (xy 68.109087 -19.506072) (xy 68.02704 -19.918549) (xy 67.866099 -20.307095) (xy 67.63245 -20.656776) (xy 67.33507 -20.954156) + (xy 66.985389 -21.187805) (xy 66.596843 -21.348746) (xy 66.184366 -21.430793) (xy 65.763808 -21.430793) (xy 65.351331 -21.348746) + (xy 64.962785 -21.187805) (xy 64.872505 -21.127482) (xy 64.872505 -21.825437) (xy 64.860245 -21.949919) (xy 64.823935 -22.069617) + (xy 64.76497 -22.179931) (xy 64.685618 -22.276622) (xy 64.588927 -22.355974) (xy 64.478613 -22.414939) (xy 64.358915 -22.451249) + (xy 64.234433 -22.463509) (xy 61.684433 -22.463509) (xy 61.559951 -22.451249) (xy 61.440253 -22.414939) (xy 61.329939 -22.355974) + (xy 61.233248 -22.276622) (xy 61.153896 -22.179931) (xy 61.094931 -22.069617) (xy 61.075319 -22.004965) (xy 61.075319 -28.000881) + (xy 61.590319 -28.000881) (xy 61.714801 -28.013141) (xy 61.834499 -28.049451) (xy 61.944813 -28.108416) (xy 62.041504 -28.187768) + (xy 62.120856 -28.284459) (xy 62.179821 -28.394773) (xy 62.216131 -28.514471) (xy 62.228391 -28.638953) (xy 62.228391 -31.138953) + (xy 62.216131 -31.263435) (xy 62.179821 -31.383133) (xy 62.120856 -31.493447) (xy 62.041504 -31.590138) (xy 61.944813 -31.66949) + (xy 61.834499 -31.728455) (xy 61.714801 -31.764765) (xy 61.590319 -31.777025) (xy 59.333714 -31.777025) (xy 59.328765 -31.801904) + (xy 59.167824 -32.19045) (xy 58.934175 -32.540131) (xy 58.636795 -32.837511) (xy 58.287114 -33.07116) (xy 57.898568 -33.232101) + (xy 57.486091 -33.314148) (xy 57.065533 -33.314148) (xy 56.653056 -33.232101) (xy 56.26451 -33.07116) (xy 55.914829 -32.837511) + (xy 55.617449 -32.540131) (xy 55.3838 -32.19045) (xy 55.222859 -31.801904) (xy 55.140812 -31.389427) (xy 55.140812 -30.968869) + (xy 55.222859 -30.556392) (xy 55.3838 -30.167846) (xy 55.617449 -29.818165) (xy 55.914829 -29.520785) (xy 56.26451 -29.287136) + (xy 56.653056 -29.126195) (xy 57.065533 -29.044148) (xy 57.486091 -29.044148) (xy 57.898568 -29.126195) (xy 58.287114 -29.287136) + (xy 58.402247 -29.364065) (xy 58.402247 -28.638953) (xy 58.414507 -28.514471) (xy 58.450817 -28.394773) (xy 58.509782 -28.284459) + (xy 58.589134 -28.187768) (xy 58.685825 -28.108416) (xy 58.796139 -28.049451) (xy 58.915837 -28.013141) (xy 59.040319 -28.000881) + (xy 59.55532 -28.000881) (xy 59.555319 -21.638054) (xy 56.915 -18.997735) (xy 56.915 -19.151939) (xy 56.875226 -19.351898) + (xy 56.797205 -19.540256) (xy 56.683937 -19.709774) (xy 56.539774 -19.853937) (xy 56.370256 -19.967205) (xy 56.181898 -20.045226) + (xy 55.981939 -20.085) (xy 55.778061 -20.085) (xy 55.589319 -20.047457) (xy 56.259321 -21.625884) (xy 56.296675 -21.745261) + (xy 56.310021 -21.869631) (xy 56.298847 -21.994215) (xy 56.263583 -22.114225) (xy 56.205584 -22.22505) (xy 56.127078 -22.32243) + (xy 56.031083 -22.402623) (xy 55.921288 -22.462547) (xy 54.28463 -23.157267) (xy 54.165253 -23.194621) (xy 54.040883 -23.207967) + (xy 53.916299 -23.196793) (xy 53.796289 -23.161529) (xy 53.685464 -23.10353) (xy 53.631409 -23.059952) (xy 53.621765 -23.071915) + (xy 53.52577 -23.152108) (xy 53.415974 -23.212032) (xy 52.587519 -23.56369) (xy 52.468143 -23.601044) (xy 52.343773 -23.61439) + (xy 52.219189 -23.603216) (xy 52.099179 -23.567952) (xy 51.988354 -23.509953) (xy 51.890974 -23.431447) (xy 51.810781 -23.335452) + (xy 51.750857 -23.225656) (xy 51.28198 -22.12105) (xy 51.244626 -22.001674) (xy 51.23128 -21.877304) (xy 51.242454 -21.75272) + (xy 51.277718 -21.63271) (xy 51.335717 -21.521885) (xy 51.414223 -21.424505) (xy 51.510218 -21.344312) (xy 51.620014 -21.284388) + (xy 52.448469 -20.93273) (xy 52.567845 -20.895376) (xy 52.692215 -20.88203) (xy 52.707518 -20.883403) (xy 52.713721 -20.814245) + (xy 52.748985 -20.694235) (xy 52.806984 -20.58341) (xy 52.88549 -20.48603) (xy 52.981485 -20.405837) (xy 53.09128 -20.345913) + (xy 54.353812 -19.81) (xy 36.867323 -19.81) (xy 36.83 -19.813676) (xy 36.792677 -19.81) (xy 36.792667 -19.81) + (xy 36.681014 -19.799003) (xy 36.537753 -19.755546) (xy 36.405724 -19.684974) (xy 36.289999 -19.590001) (xy 36.266201 -19.561003) + (xy 34.403711 -17.698512) (xy 34.374713 -17.674714) (xy 34.279739 -17.558989) (xy 34.209167 -17.42696) (xy 34.20818 -17.423706) + (xy 34.20818 -22.929511) (xy 35.28469 -22.47256) (xy 35.404067 -22.435206) (xy 35.528437 -22.42186) (xy 35.653021 -22.433034) + (xy 35.773031 -22.468298) (xy 35.883856 -22.526297) (xy 35.981236 -22.604803) (xy 36.061429 -22.700798) (xy 36.121353 -22.810593) + (xy 36.816073 -24.447251) (xy 36.853427 -24.566628) (xy 36.866773 -24.690998) (xy 36.855599 -24.815582) (xy 36.820335 -24.935592) + (xy 36.762336 -25.046417) (xy 36.68383 -25.143797) (xy 36.587835 -25.22399) (xy 36.47804 -25.283914) (xy 34.841382 -25.978634) + (xy 34.722005 -26.015988) (xy 34.597635 -26.029334) (xy 34.473051 -26.01816) (xy 34.353041 -25.982896) (xy 34.242216 -25.924897) + (xy 34.188161 -25.881319) (xy 34.178517 -25.893282) (xy 34.082522 -25.973475) (xy 33.972726 -26.033399) (xy 33.740026 -26.132174) + (xy 36.086094 -28.478242) (xy 36.699834 -28.478242) (xy 36.699834 -28.185546) (xy 36.756936 -27.898473) (xy 36.868946 -27.628056) + (xy 37.03156 -27.384688) (xy 37.238528 -27.17772) (xy 37.481896 -27.015106) (xy 37.752313 -26.903096) (xy 38.039386 -26.845994) + (xy 38.332082 -26.845994) (xy 38.619155 -26.903096) (xy 38.889572 -27.015106) (xy 39.13294 -27.17772) (xy 39.339908 -27.384688) + (xy 39.502522 -27.628056) (xy 39.614532 -27.898473) (xy 39.671634 -28.185546) (xy 39.671634 -28.478242) (xy 39.614532 -28.765315) + (xy 39.502522 -29.035732) (xy 39.339908 -29.2791) (xy 39.13294 -29.486068) (xy 38.889572 -29.648682) (xy 38.619155 -29.760692) + (xy 38.332082 -29.817794) (xy 38.039386 -29.817794) (xy 37.752313 -29.760692) (xy 37.481896 -29.648682) (xy 37.238528 -29.486068) + (xy 37.03156 -29.2791) (xy 36.868946 -29.035732) (xy 36.756936 -28.765315) (xy 36.699834 -28.478242) (xy 36.086094 -28.478242) + (xy 38.968788 -31.360935) (xy 38.97126 -31.335839) (xy 39.00757 -31.216141) (xy 39.066535 -31.105827) (xy 39.145887 -31.009136) + (xy 39.242578 -30.929784) (xy 39.352892 -30.870819) (xy 39.47259 -30.834509) (xy 39.597072 -30.822249) (xy 42.147072 -30.822249) + (xy 42.271554 -30.834509) (xy 42.391252 -30.870819) (xy 42.501566 -30.929784) (xy 42.598257 -31.009136) (xy 42.677609 -31.105827) + (xy 42.736574 -31.216141) (xy 42.772884 -31.335839) (xy 42.785144 -31.460321) (xy 42.785144 -33.851852) (xy 45.510424 -33.851852) + (xy 45.510424 -31.351852) (xy 45.522684 -31.22737) (xy 45.558994 -31.107672) (xy 45.617959 -30.997358) (xy 45.697311 -30.900667) + (xy 45.794002 -30.821315) (xy 45.904316 -30.76235) (xy 46.024014 -30.72604) (xy 46.148496 -30.71378) (xy 46.34075 -30.71378) + (xy 46.340751 -25.475379) (xy 46.258946 -25.393574) (xy 46.085214 -25.133565) (xy 45.965545 -24.844659) (xy 45.904538 -24.537957) + (xy 45.904538 -24.225247) (xy 45.965545 -23.918545) (xy 46.085214 -23.629639) (xy 46.258946 -23.36963) (xy 46.480066 -23.14851) + (xy 46.740075 -22.974778) (xy 47.028981 -22.855109) (xy 47.335683 -22.794102) (xy 47.648393 -22.794102) (xy 47.955095 -22.855109) + (xy 48.226687 -22.967606) (xy 48.240052 -22.922122) (xy 48.298051 -22.811297) (xy 48.376557 -22.713917) (xy 48.472552 -22.633724) + (xy 48.582348 -22.5738) (xy 49.410803 -22.222142) (xy 49.530179 -22.184788) (xy 49.654549 -22.171442) (xy 49.779133 -22.182616) + (xy 49.899143 -22.21788) (xy 50.009968 -22.275879) (xy 50.107348 -22.354385) (xy 50.187541 -22.45038) (xy 50.247465 -22.560176) + (xy 50.716342 -23.664782) (xy 50.753696 -23.784158) (xy 50.767042 -23.908528) (xy 50.755868 -24.033112) (xy 50.720604 -24.153122) + (xy 50.662605 -24.263947) (xy 50.584099 -24.361327) (xy 50.488104 -24.44152) (xy 50.378308 -24.501444) (xy 49.549853 -24.853102) + (xy 49.430477 -24.890456) (xy 49.306107 -24.903802) (xy 49.198853 -24.894182) (xy 49.176349 -24.921603) (xy 49.060624 -25.016576) + (xy 48.928595 -25.087148) (xy 48.916579 -25.090793) (xy 48.898862 -25.133565) (xy 48.72513 -25.393574) (xy 48.50401 -25.614694) + (xy 48.244001 -25.788426) (xy 47.955095 -25.908095) (xy 47.86075 -25.926861) (xy 47.86075 -28.048071) (xy 48.130303 -27.994454) + (xy 48.422999 -27.994454) (xy 48.710072 -28.051556) (xy 48.980489 -28.163566) (xy 49.223857 -28.32618) (xy 49.430825 -28.533148) + (xy 49.593439 -28.776516) (xy 49.705449 -29.046933) (xy 49.754674 -29.294406) (xy 49.815394 -29.269255) (xy 50.227871 -29.187208) + (xy 50.648429 -29.187208) (xy 50.995868 -29.256318) (xy 50.910816 -29.171266) (xy 50.623115 -28.740691) (xy 50.424943 -28.262262) + (xy 50.323916 -27.754364) (xy 50.323916 -27.236516) (xy 50.424943 -26.728618) (xy 50.623115 -26.250189) (xy 50.910816 -25.819614) + (xy 51.27699 -25.45344) (xy 51.707565 -25.165739) (xy 52.185994 -24.967567) (xy 52.693892 -24.86654) (xy 53.21174 -24.86654) + (xy 53.719638 -24.967567) (xy 54.198067 -25.165739) (xy 54.628642 -25.45344) (xy 54.832076 -25.656874) (xy 56.143081 -25.656874) + (xy 56.143081 -25.364178) (xy 56.200183 -25.077105) (xy 56.312193 -24.806688) (xy 56.474807 -24.56332) (xy 56.681775 -24.356352) + (xy 56.925143 -24.193738) (xy 57.19556 -24.081728) (xy 57.482633 -24.024626) (xy 57.775329 -24.024626) (xy 58.062402 -24.081728) + (xy 58.332819 -24.193738) (xy 58.576187 -24.356352) (xy 58.783155 -24.56332) (xy 58.945769 -24.806688) (xy 59.057779 -25.077105) + (xy 59.114881 -25.364178) (xy 59.114881 -25.656874) (xy 59.057779 -25.943947) (xy 58.945769 -26.214364) (xy 58.783155 -26.457732) + (xy 58.576187 -26.6647) (xy 58.332819 -26.827314) (xy 58.062402 -26.939324) (xy 57.775329 -26.996426) (xy 57.482633 -26.996426) + (xy 57.19556 -26.939324) (xy 56.925143 -26.827314) (xy 56.681775 -26.6647) (xy 56.474807 -26.457732) (xy 56.312193 -26.214364) + (xy 56.200183 -25.943947) (xy 56.143081 -25.656874) (xy 54.832076 -25.656874) (xy 54.994816 -25.819614) (xy 55.282517 -26.250189) + (xy 55.480689 -26.728618) (xy 55.581716 -27.236516) (xy 55.581716 -27.754364) (xy 55.480689 -28.262262) (xy 55.282517 -28.740691) + (xy 54.994816 -29.171266) (xy 54.628642 -29.53744) (xy 54.198067 -29.825141) (xy 53.719638 -30.023313) (xy 53.21174 -30.12434) + (xy 52.693892 -30.12434) (xy 52.185994 -30.023313) (xy 52.119632 -29.995825) (xy 52.330162 -30.310906) (xy 52.491103 -30.699452) + (xy 52.57315 -31.111929) (xy 52.57315 -31.532487) (xy 52.491103 -31.944964) (xy 52.330162 -32.33351) (xy 52.096513 -32.683191) + (xy 51.799133 -32.980571) (xy 51.449452 -33.21422) (xy 51.060906 -33.375161) (xy 50.648429 -33.457208) (xy 50.227871 -33.457208) + (xy 49.815394 -33.375161) (xy 49.426848 -33.21422) (xy 49.336568 -33.153897) (xy 49.336568 -33.851852) (xy 49.324308 -33.976334) + (xy 49.287998 -34.096032) (xy 49.229033 -34.206346) (xy 49.149681 -34.303037) (xy 49.05299 -34.382389) (xy 48.942676 -34.441354) + (xy 48.822978 -34.477664) (xy 48.698496 -34.489924) (xy 46.148496 -34.489924) (xy 46.024014 -34.477664) (xy 45.904316 -34.441354) + (xy 45.794002 -34.382389) (xy 45.697311 -34.303037) (xy 45.617959 -34.206346) (xy 45.558994 -34.096032) (xy 45.522684 -33.976334) + (xy 45.510424 -33.851852) (xy 42.785144 -33.851852) (xy 42.785144 -33.960321) (xy 42.772884 -34.084803) (xy 42.736574 -34.204501) + (xy 42.677609 -34.314815) (xy 42.598257 -34.411506) (xy 42.501566 -34.490858) (xy 42.391252 -34.549823) (xy 42.271554 -34.586133) + (xy 42.147072 -34.598393) (xy 41.632072 -34.598393) (xy 41.632072 -39.366896) (xy 58.655171 -39.366896) (xy 58.666345 -39.242312) + (xy 58.701609 -39.122302) (xy 58.759608 -39.011477) (xy 58.838114 -38.914097) (xy 58.934109 -38.833904) (xy 59.043905 -38.77398) + (xy 59.87236 -38.422322) (xy 59.991736 -38.384968) (xy 60.116106 -38.371622) (xy 60.131409 -38.372995) (xy 60.137612 -38.303837) + (xy 60.172876 -38.183827) (xy 60.230875 -38.073002) (xy 60.309381 -37.975622) (xy 60.405376 -37.895429) (xy 60.515171 -37.835505) + (xy 62.151829 -37.140785) (xy 62.271206 -37.103431) (xy 62.395576 -37.090085) (xy 62.52016 -37.101259) (xy 62.64017 -37.136523) + (xy 62.750995 -37.194522) (xy 62.848375 -37.273028) (xy 62.928568 -37.369023) (xy 62.988492 -37.478818) (xy 63.683212 -39.115476) + (xy 63.720566 -39.234853) (xy 63.733912 -39.359223) (xy 63.722738 -39.483807) (xy 63.687474 -39.603817) (xy 63.629475 -39.714642) + (xy 63.550969 -39.812022) (xy 63.454974 -39.892215) (xy 63.345179 -39.952139) (xy 61.708521 -40.646859) (xy 61.589144 -40.684213) + (xy 61.464774 -40.697559) (xy 61.34019 -40.686385) (xy 61.22018 -40.651121) (xy 61.109355 -40.593122) (xy 61.0553 -40.549544) + (xy 61.045656 -40.561507) (xy 60.949661 -40.6417) (xy 60.839865 -40.701624) (xy 60.01141 -41.053282) (xy 59.892034 -41.090636) + (xy 59.767664 -41.103982) (xy 59.64308 -41.092808) (xy 59.52307 -41.057544) (xy 59.412245 -40.999545) (xy 59.314865 -40.921039) + (xy 59.234672 -40.825044) (xy 59.174748 -40.715248) (xy 58.705871 -39.610642) (xy 58.668517 -39.491266) (xy 58.655171 -39.366896) + (xy 41.632072 -39.366896) (xy 41.632072 -40.419104) (xy 42.708581 -39.962153) (xy 42.827958 -39.924799) (xy 42.952328 -39.911453) + (xy 43.076912 -39.922627) (xy 43.196922 -39.957891) (xy 43.307747 -40.01589) (xy 43.405127 -40.094396) (xy 43.48532 -40.190391) + (xy 43.545244 -40.300186) (xy 44.239964 -41.936844) (xy 44.277318 -42.056221) (xy 44.290664 -42.180591) (xy 44.27949 -42.305175) + (xy 44.244226 -42.425185) (xy 44.186227 -42.53601) (xy 44.107721 -42.63339) (xy 44.011726 -42.713583) (xy 43.901931 -42.773507) + (xy 42.265273 -43.468227) (xy 42.145896 -43.505581) (xy 42.021526 -43.518927) (xy 41.896942 -43.507753) (xy 41.776932 -43.472489) + (xy 41.666107 -43.41449) (xy 41.612052 -43.370912) (xy 41.602408 -43.382875) (xy 41.506413 -43.463068) (xy 41.396617 -43.522992) + (xy 41.237321 -43.590609) (xy 43.614546 -45.967834) (xy 44.123725 -45.967834) (xy 44.123725 -45.675138) (xy 44.180827 -45.388065) + (xy 44.292837 -45.117648) (xy 44.455451 -44.87428) (xy 44.662419 -44.667312) (xy 44.905787 -44.504698) (xy 45.176204 -44.392688) + (xy 45.463277 -44.335586) (xy 45.755973 -44.335586) (xy 46.043046 -44.392688) (xy 46.313463 -44.504698) (xy 46.556831 -44.667312) + (xy 46.763799 -44.87428) (xy 46.926413 -45.117648) (xy 47.038423 -45.388065) (xy 47.095525 -45.675138) (xy 47.095525 -45.967834) + (xy 47.038423 -46.254907) (xy 46.926413 -46.525324) (xy 46.763799 -46.768692) (xy 46.556831 -46.97566) (xy 46.313463 -47.138274) + (xy 46.043046 -47.250284) (xy 45.755973 -47.307386) (xy 45.463277 -47.307386) (xy 45.176204 -47.250284) (xy 44.905787 -47.138274) + (xy 44.662419 -46.97566) (xy 44.455451 -46.768692) (xy 44.292837 -46.525324) (xy 44.180827 -46.254907) (xy 44.123725 -45.967834) + (xy 43.614546 -45.967834) (xy 46.413071 -48.766358) (xy 46.431461 -48.705733) (xy 46.490426 -48.595419) (xy 46.569778 -48.498728) + (xy 46.666469 -48.419376) (xy 46.776783 -48.360411) (xy 46.896481 -48.324101) (xy 47.020963 -48.311841) (xy 49.570963 -48.311841) + (xy 49.695445 -48.324101) (xy 49.815143 -48.360411) (xy 49.925457 -48.419376) (xy 50.022148 -48.498728) (xy 50.1015 -48.595419) + (xy 50.160465 -48.705733) (xy 50.196775 -48.825431) (xy 50.209035 -48.949913) (xy 50.209035 -51.341445) (xy 52.934316 -51.341445) + (xy 52.934316 -48.841445) (xy 52.946576 -48.716963) (xy 52.982886 -48.597265) (xy 53.041851 -48.486951) (xy 53.121203 -48.39026) + (xy 53.217894 -48.310908) (xy 53.328208 -48.251943) (xy 53.447906 -48.215633) (xy 53.572388 -48.203373) (xy 53.764642 -48.203373) + (xy 53.764643 -42.964972) (xy 53.682837 -42.883166) (xy 53.509105 -42.623157) (xy 53.389436 -42.334251) (xy 53.328429 -42.027549) + (xy 53.328429 -41.714839) (xy 53.389436 -41.408137) (xy 53.509105 -41.119231) (xy 53.682837 -40.859222) (xy 53.903957 -40.638102) + (xy 54.163966 -40.46437) (xy 54.452872 -40.344701) (xy 54.759574 -40.283694) (xy 55.072284 -40.283694) (xy 55.378986 -40.344701) + (xy 55.650578 -40.457198) (xy 55.663943 -40.411714) (xy 55.721942 -40.300889) (xy 55.800448 -40.203509) (xy 55.896443 -40.123316) + (xy 56.006239 -40.063392) (xy 56.834694 -39.711734) (xy 56.95407 -39.67438) (xy 57.07844 -39.661034) (xy 57.203024 -39.672208) + (xy 57.323034 -39.707472) (xy 57.433859 -39.765471) (xy 57.531239 -39.843977) (xy 57.611432 -39.939972) (xy 57.671356 -40.049768) + (xy 58.140233 -41.154374) (xy 58.177587 -41.27375) (xy 58.190933 -41.39812) (xy 58.179759 -41.522704) (xy 58.144495 -41.642714) + (xy 58.086496 -41.753539) (xy 58.00799 -41.850919) (xy 57.911995 -41.931112) (xy 57.802199 -41.991036) (xy 56.973744 -42.342694) + (xy 56.854368 -42.380048) (xy 56.729998 -42.393394) (xy 56.622744 -42.383774) (xy 56.60024 -42.411195) (xy 56.484515 -42.506168) + (xy 56.352486 -42.57674) (xy 56.34047 -42.580385) (xy 56.322753 -42.623157) (xy 56.149021 -42.883166) (xy 55.927901 -43.104286) + (xy 55.667892 -43.278018) (xy 55.378986 -43.397687) (xy 55.284642 -43.416453) (xy 55.284642 -45.537664) (xy 55.554195 -45.484047) + (xy 55.846891 -45.484047) (xy 56.133964 -45.541149) (xy 56.404381 -45.653159) (xy 56.647749 -45.815773) (xy 56.854717 -46.022741) + (xy 57.017331 -46.266109) (xy 57.129341 -46.536526) (xy 57.178566 -46.783999) (xy 57.239286 -46.758848) (xy 57.651763 -46.676801) + (xy 58.072321 -46.676801) (xy 58.41976 -46.745911) (xy 58.334708 -46.660859) (xy 58.047007 -46.230284) (xy 57.848835 -45.751855) + (xy 57.747808 -45.243957) (xy 57.747808 -44.726109) (xy 57.848835 -44.218211) (xy 58.047007 -43.739782) (xy 58.334708 -43.309207) + (xy 58.700882 -42.943033) (xy 59.131457 -42.655332) (xy 59.609886 -42.45716) (xy 60.117784 -42.356133) (xy 60.635632 -42.356133) + (xy 61.14353 -42.45716) (xy 61.621959 -42.655332) (xy 62.052534 -42.943033) (xy 62.255968 -43.146467) (xy 63.566973 -43.146467) + (xy 63.566973 -42.853771) (xy 63.624075 -42.566698) (xy 63.736085 -42.296281) (xy 63.898699 -42.052913) (xy 64.105667 -41.845945) + (xy 64.349035 -41.683331) (xy 64.619452 -41.571321) (xy 64.906525 -41.514219) (xy 65.199221 -41.514219) (xy 65.486294 -41.571321) + (xy 65.756711 -41.683331) (xy 66.000079 -41.845945) (xy 66.207047 -42.052913) (xy 66.369661 -42.296281) (xy 66.481671 -42.566698) + (xy 66.538773 -42.853771) (xy 66.538773 -43.146467) (xy 66.481671 -43.43354) (xy 66.369661 -43.703957) (xy 66.207047 -43.947325) + (xy 66.000079 -44.154293) (xy 65.756711 -44.316907) (xy 65.486294 -44.428917) (xy 65.199221 -44.486019) (xy 64.906525 -44.486019) + (xy 64.619452 -44.428917) (xy 64.349035 -44.316907) (xy 64.105667 -44.154293) (xy 63.898699 -43.947325) (xy 63.736085 -43.703957) + (xy 63.624075 -43.43354) (xy 63.566973 -43.146467) (xy 62.255968 -43.146467) (xy 62.418708 -43.309207) (xy 62.706409 -43.739782) + (xy 62.904581 -44.218211) (xy 63.005608 -44.726109) (xy 63.005608 -45.243957) (xy 62.904581 -45.751855) (xy 62.706409 -46.230284) + (xy 62.418708 -46.660859) (xy 62.052534 -47.027033) (xy 61.621959 -47.314734) (xy 61.14353 -47.512906) (xy 60.635632 -47.613933) + (xy 60.117784 -47.613933) (xy 59.609886 -47.512906) (xy 59.543524 -47.485418) (xy 59.754054 -47.800499) (xy 59.914995 -48.189045) + (xy 59.997042 -48.601522) (xy 59.997042 -48.87902) (xy 62.564704 -48.87902) (xy 62.564704 -48.458462) (xy 62.646751 -48.045985) + (xy 62.807692 -47.657439) (xy 63.041341 -47.307758) (xy 63.338721 -47.010378) (xy 63.688402 -46.776729) (xy 64.076948 -46.615788) + (xy 64.489425 -46.533741) (xy 64.909983 -46.533741) (xy 65.32246 -46.615788) (xy 65.711006 -46.776729) (xy 65.826139 -46.853658) + (xy 65.826139 -46.128546) (xy 65.838399 -46.004064) (xy 65.874709 -45.884366) (xy 65.933674 -45.774052) (xy 66.013026 -45.677361) + (xy 66.109717 -45.598009) (xy 66.220031 -45.539044) (xy 66.339729 -45.502734) (xy 66.464211 -45.490474) (xy 69.014211 -45.490474) + (xy 69.138693 -45.502734) (xy 69.258391 -45.539044) (xy 69.368705 -45.598009) (xy 69.465396 -45.677361) (xy 69.544748 -45.774052) + (xy 69.603713 -45.884366) (xy 69.640023 -46.004064) (xy 69.652283 -46.128546) (xy 69.652283 -48.628546) (xy 69.640023 -48.753028) + (xy 69.603713 -48.872726) (xy 69.544748 -48.98304) (xy 69.465396 -49.079731) (xy 69.368705 -49.159083) (xy 69.258391 -49.218048) + (xy 69.138693 -49.254358) (xy 69.014211 -49.266618) (xy 66.757606 -49.266618) (xy 66.752657 -49.291497) (xy 66.591716 -49.680043) + (xy 66.358067 -50.029724) (xy 66.060687 -50.327104) (xy 65.711006 -50.560753) (xy 65.32246 -50.721694) (xy 64.909983 -50.803741) + (xy 64.489425 -50.803741) (xy 64.076948 -50.721694) (xy 63.688402 -50.560753) (xy 63.338721 -50.327104) (xy 63.041341 -50.029724) + (xy 62.807692 -49.680043) (xy 62.646751 -49.291497) (xy 62.564704 -48.87902) (xy 59.997042 -48.87902) (xy 59.997042 -49.02208) + (xy 59.914995 -49.434557) (xy 59.754054 -49.823103) (xy 59.520405 -50.172784) (xy 59.223025 -50.470164) (xy 58.873344 -50.703813) + (xy 58.484798 -50.864754) (xy 58.072321 -50.946801) (xy 57.651763 -50.946801) (xy 57.239286 -50.864754) (xy 56.85074 -50.703813) + (xy 56.76046 -50.64349) (xy 56.76046 -51.341445) (xy 56.7482 -51.465927) (xy 56.71189 -51.585625) (xy 56.652925 -51.695939) + (xy 56.573573 -51.79263) (xy 56.476882 -51.871982) (xy 56.366568 -51.930947) (xy 56.24687 -51.967257) (xy 56.122388 -51.979517) + (xy 53.572388 -51.979517) (xy 53.447906 -51.967257) (xy 53.328208 -51.930947) (xy 53.217894 -51.871982) (xy 53.121203 -51.79263) + (xy 53.041851 -51.695939) (xy 52.982886 -51.585625) (xy 52.946576 -51.465927) (xy 52.934316 -51.341445) (xy 50.209035 -51.341445) + (xy 50.209035 -51.449913) (xy 50.196775 -51.574395) (xy 50.160465 -51.694093) (xy 50.1015 -51.804407) (xy 50.022148 -51.901098) + (xy 49.925457 -51.98045) (xy 49.815143 -52.039415) (xy 49.695445 -52.075725) (xy 49.570963 -52.087985) (xy 47.314358 -52.087985) + (xy 47.309409 -52.112864) (xy 47.148468 -52.50141) (xy 46.914819 -52.851091) (xy 46.617439 -53.148471) (xy 46.267758 -53.38212) + (xy 45.879212 -53.543061) (xy 45.466735 -53.625108) (xy 45.046177 -53.625108) (xy 44.6337 -53.543061) (xy 44.245154 -53.38212) + (xy 43.895473 -53.148471) (xy 43.598093 -52.851091) (xy 43.364444 -52.50141) (xy 43.203503 -52.112864) (xy 43.121456 -51.700387) + (xy 43.121456 -51.279829) (xy 43.203503 -50.867352) (xy 43.364444 -50.478806) (xy 43.598093 -50.129125) (xy 43.895473 -49.831745) + (xy 44.245154 -49.598096) (xy 44.6337 -49.437155) (xy 44.884397 -49.387288) (xy 43.56236 -48.065251) (xy 43.56236 -48.065324) + (xy 43.461333 -48.573222) (xy 43.263161 -49.051651) (xy 42.97546 -49.482226) (xy 42.609286 -49.8484) (xy 42.178711 -50.136101) + (xy 41.700282 -50.334273) (xy 41.192384 -50.4353) (xy 40.674536 -50.4353) (xy 40.166638 -50.334273) (xy 40.100276 -50.306785) + (xy 40.310806 -50.621866) (xy 40.471747 -51.010412) (xy 40.553794 -51.422889) (xy 40.553794 -51.843447) (xy 40.471747 -52.255924) + (xy 40.310806 -52.64447) (xy 40.077157 -52.994151) (xy 39.779777 -53.291531) (xy 39.430096 -53.52518) (xy 39.04155 -53.686121) + (xy 38.629073 -53.768168) (xy 38.208515 -53.768168) (xy 37.796038 -53.686121) (xy 37.407492 -53.52518) (xy 37.317212 -53.464857) + (xy 37.317212 -54.162812) (xy 37.304952 -54.287294) (xy 37.268642 -54.406992) (xy 37.209677 -54.517306) (xy 37.130325 -54.613997) + (xy 37.033634 -54.693349) (xy 36.92332 -54.752314) (xy 36.803622 -54.788624) (xy 36.67914 -54.800884) (xy 34.12914 -54.800884) + (xy 34.004658 -54.788624) (xy 33.88496 -54.752314) (xy 33.774646 -54.693349) (xy 33.677955 -54.613997) (xy 33.598603 -54.517306) + (xy 33.539638 -54.406992) (xy 33.503328 -54.287294) (xy 33.491068 -54.162812) (xy 33.491068 -51.662812) (xy 33.503328 -51.53833) + (xy 33.539638 -51.418632) (xy 33.598603 -51.308318) (xy 33.677955 -51.211627) (xy 33.774646 -51.132275) (xy 33.88496 -51.07331) + (xy 34.004658 -51.037) (xy 34.12914 -51.02474) (xy 34.644141 -51.02474) (xy 34.644141 -50.993296) (xy 34.009184 -50.358338) + (xy 33.980181 -50.334536) (xy 33.929011 -50.272185) (xy 33.885208 -50.218811) (xy 33.824025 -50.104347) (xy 33.814636 -50.086781) + (xy 33.771179 -49.94352) (xy 33.760182 -49.831867) (xy 33.760182 -49.831857) (xy 33.756506 -49.794535) (xy 33.760182 -49.757212) + (xy 33.760183 -45.682393) (xy 33.756506 -45.645061) (xy 33.760183 -45.607728) (xy 33.76958 -45.512325) (xy 33.77118 -45.496076) + (xy 33.814636 -45.352815) (xy 33.885208 -45.220785) (xy 33.938689 -45.155619) (xy 33.944725 -45.148264) (xy 33.885181 -44.848917) + (xy 33.885181 -44.536207) (xy 33.946188 -44.229505) (xy 34.065857 -43.940599) (xy 34.239589 -43.68059) (xy 34.460709 -43.45947) + (xy 34.720718 -43.285738) (xy 35.009624 -43.166069) (xy 35.316326 -43.105062) (xy 35.629036 -43.105062) (xy 35.935738 -43.166069) + (xy 36.20733 -43.278566) (xy 36.220695 -43.233082) (xy 36.278694 -43.122257) (xy 36.3572 -43.024877) (xy 36.453195 -42.944684) + (xy 36.562991 -42.88476) (xy 37.391446 -42.533102) (xy 37.510822 -42.495748) (xy 37.635192 -42.482402) (xy 37.759776 -42.493576) + (xy 37.879786 -42.52884) (xy 37.990611 -42.586839) (xy 38.087991 -42.665345) (xy 38.168184 -42.76134) (xy 38.228108 -42.871136) + (xy 38.696985 -43.975742) (xy 38.734339 -44.095118) (xy 38.747685 -44.219488) (xy 38.736511 -44.344072) (xy 38.701247 -44.464082) + (xy 38.643248 -44.574907) (xy 38.564742 -44.672287) (xy 38.468747 -44.75248) (xy 38.358951 -44.812404) (xy 37.530496 -45.164062) + (xy 37.41112 -45.201416) (xy 37.28675 -45.214762) (xy 37.179496 -45.205142) (xy 37.156992 -45.232563) (xy 37.041267 -45.327536) + (xy 36.909238 -45.398108) (xy 36.897222 -45.401753) (xy 36.879505 -45.444525) (xy 36.705773 -45.704534) (xy 36.484653 -45.925654) + (xy 36.224644 -46.099386) (xy 35.935738 -46.219055) (xy 35.629036 -46.280062) (xy 35.316326 -46.280062) (xy 35.280182 -46.272872) + (xy 35.280182 -48.667047) (xy 35.310089 -48.63714) (xy 35.553457 -48.474526) (xy 35.823874 -48.362516) (xy 36.110947 -48.305414) + (xy 36.403643 -48.305414) (xy 36.690716 -48.362516) (xy 36.961133 -48.474526) (xy 37.204501 -48.63714) (xy 37.411469 -48.844108) + (xy 37.574083 -49.087476) (xy 37.686093 -49.357893) (xy 37.735318 -49.605366) (xy 37.796038 -49.580215) (xy 38.208515 -49.498168) + (xy 38.629073 -49.498168) (xy 38.976512 -49.567278) (xy 38.89146 -49.482226) (xy 38.603759 -49.051651) (xy 38.405587 -48.573222) + (xy 38.30456 -48.065324) (xy 38.30456 -47.547476) (xy 38.405587 -47.039578) (xy 38.603759 -46.561149) (xy 38.89146 -46.130574) + (xy 39.257634 -45.7644) (xy 39.688209 -45.476699) (xy 40.166638 -45.278527) (xy 40.674536 -45.1775) (xy 40.67461 -45.1775) + (xy 39.013959 -43.516849) (xy 38.984961 -43.493051) (xy 38.961163 -43.464053) (xy 38.961162 -43.464052) (xy 38.889987 -43.377326) + (xy 38.819415 -43.245296) (xy 38.797992 -43.17467) (xy 38.775959 -43.102036) (xy 38.764961 -42.990383) (xy 38.764961 -42.990372) + (xy 38.761285 -42.95305) (xy 38.764961 -42.915728) (xy 38.764961 -42.085394) (xy 38.761285 -42.048072) (xy 38.764961 -42.01075) + (xy 38.764961 -42.01074) (xy 38.775958 -41.899087) (xy 38.809348 -41.789014) (xy 38.819415 -41.755826) (xy 38.889987 -41.623796) + (xy 38.894237 -41.618618) (xy 38.98496 -41.508071) (xy 39.013964 -41.484268) (xy 40.112073 -40.386158) (xy 40.112072 -34.598393) + (xy 39.890467 -34.598393) (xy 39.885518 -34.623272) (xy 39.724577 -35.011818) (xy 39.490928 -35.361499) (xy 39.193548 -35.658879) + (xy 38.843867 -35.892528) (xy 38.455321 -36.053469) (xy 38.042844 -36.135516) (xy 37.622286 -36.135516) (xy 37.209809 -36.053469) + (xy 36.821263 -35.892528) (xy 36.471582 -35.658879) (xy 36.174202 -35.361499) (xy 35.940553 -35.011818) (xy 35.779612 -34.623272) + (xy 35.697565 -34.210795) (xy 35.697565 -33.790237) (xy 35.779612 -33.37776) (xy 35.940553 -32.989214) (xy 36.174202 -32.639533) + (xy 36.471582 -32.342153) (xy 36.821263 -32.108504) (xy 37.209809 -31.947563) (xy 37.373293 -31.915044) (xy 36.121133 -30.662884) + (xy 36.037442 -31.08363) (xy 35.83927 -31.562059) (xy 35.551569 -31.992634) (xy 35.185395 -32.358808) (xy 34.75482 -32.646509) + (xy 34.276391 -32.844681) (xy 33.768493 -32.945708) (xy 33.250645 -32.945708) (xy 32.742747 -32.844681) (xy 32.676385 -32.817193) + (xy 32.886915 -33.132274) (xy 33.047856 -33.52082) (xy 33.129903 -33.933297) (xy 33.129903 -34.353855) (xy 33.047856 -34.766332) + (xy 32.886915 -35.154878) (xy 32.653266 -35.504559) (xy 32.355886 -35.801939) (xy 32.006205 -36.035588) (xy 31.617659 -36.196529) + (xy 31.205182 -36.278576) (xy 30.784624 -36.278576) (xy 30.372147 -36.196529) (xy 29.983601 -36.035588) (xy 29.893321 -35.975265) + (xy 29.893321 -36.67322) (xy 29.881061 -36.797702) (xy 29.844751 -36.9174) (xy 29.785786 -37.027714) (xy 29.706434 -37.124405) + (xy 29.609743 -37.203757) (xy 29.499429 -37.262722) (xy 29.379731 -37.299032) (xy 29.255249 -37.311292) (xy 26.705249 -37.311292) + (xy 26.580767 -37.299032) (xy 26.461069 -37.262722) (xy 26.350755 -37.203757) (xy 26.254064 -37.124405) (xy 26.174712 -37.027714) + (xy 26.115747 -36.9174) (xy 26.079437 -36.797702) (xy 26.067177 -36.67322) (xy 26.067177 -34.17322) (xy 26.079437 -34.048738) + (xy 26.115747 -33.92904) (xy 26.174712 -33.818726) (xy 26.254064 -33.722035) (xy 26.350755 -33.642683) (xy 26.461069 -33.583718) + (xy 26.580767 -33.547408) (xy 26.705249 -33.535148) (xy 26.897503 -33.535148) (xy 26.897504 -28.296747) (xy 26.815698 -28.214941) + (xy 26.641966 -27.954932) (xy 26.522297 -27.666026) (xy 26.46129 -27.359324) (xy 26.46129 -27.046614) (xy 26.522297 -26.739912) + (xy 26.641966 -26.451006) (xy 26.815698 -26.190997) (xy 27.036818 -25.969877) (xy 27.296827 -25.796145) (xy 27.585733 -25.676476) + (xy 27.892435 -25.615469) (xy 28.205145 -25.615469) (xy 28.511847 -25.676476) (xy 28.783439 -25.788973) (xy 28.796804 -25.743489) + (xy 28.854803 -25.632664) (xy 28.933309 -25.535284) (xy 29.029304 -25.455091) (xy 29.1391 -25.395167) (xy 29.967555 -25.043509) + (xy 30.086931 -25.006155) (xy 30.211301 -24.992809) (xy 30.335885 -25.003983) (xy 30.455895 -25.039247) (xy 30.56672 -25.097246) + (xy 30.6641 -25.175752) (xy 30.744293 -25.271747) (xy 30.804217 -25.381543) (xy 31.273094 -26.486149) (xy 31.310448 -26.605525) + (xy 31.323794 -26.729895) (xy 31.31262 -26.854479) (xy 31.277356 -26.974489) (xy 31.219357 -27.085314) (xy 31.140851 -27.182694) + (xy 31.044856 -27.262887) (xy 30.93506 -27.322811) (xy 30.106605 -27.674469) (xy 29.987229 -27.711823) (xy 29.862859 -27.725169) + (xy 29.755605 -27.715549) (xy 29.733101 -27.74297) (xy 29.617376 -27.837943) (xy 29.485347 -27.908515) (xy 29.473331 -27.91216) + (xy 29.455614 -27.954932) (xy 29.281882 -28.214941) (xy 29.060762 -28.436061) (xy 28.800753 -28.609793) (xy 28.511847 -28.729462) + (xy 28.417503 -28.748228) (xy 28.417503 -30.869439) (xy 28.687056 -30.815822) (xy 28.979752 -30.815822) (xy 29.266825 -30.872924) + (xy 29.537242 -30.984934) (xy 29.78061 -31.147548) (xy 29.987578 -31.354516) (xy 30.150192 -31.597884) (xy 30.262202 -31.868301) + (xy 30.311427 -32.115774) (xy 30.372147 -32.090623) (xy 30.784624 -32.008576) (xy 31.205182 -32.008576) (xy 31.552621 -32.077686) + (xy 31.467569 -31.992634) (xy 31.179868 -31.562059) (xy 30.981696 -31.08363) (xy 30.880669 -30.575732) (xy 30.880669 -30.057884) + (xy 30.981696 -29.549986) (xy 31.179868 -29.071557) (xy 31.467569 -28.640982) (xy 31.833743 -28.274808) (xy 32.264318 -27.987107) + (xy 32.742747 -27.788935) (xy 33.163493 -27.705244) (xy 31.590068 -26.131818) (xy 31.56107 -26.10802) (xy 31.537272 -26.079022) + (xy 31.537271 -26.079021) (xy 31.466096 -25.992295) (xy 31.395524 -25.860265) (xy 31.36525 -25.760461) (xy 31.352068 -25.717005) + (xy 31.349141 -25.687282) (xy 31.337394 -25.568019) (xy 31.341071 -25.530687) (xy 31.34107 -24.595802) (xy 31.337394 -24.558479) + (xy 31.34107 -24.521157) (xy 31.34107 -24.521147) (xy 31.352067 -24.409494) (xy 31.386134 -24.297189) (xy 31.395524 -24.266233) + (xy 31.466096 -24.134203) (xy 31.470345 -24.129026) (xy 31.561069 -24.018478) (xy 31.590073 -23.994675) (xy 32.688181 -22.896566) + (xy 32.68818 -17.1088) (xy 32.466575 -17.1088) (xy 32.461626 -17.133679) (xy 32.300685 -17.522225) (xy 32.067036 -17.871906) + (xy 31.769656 -18.169286) (xy 31.419975 -18.402935) (xy 31.031429 -18.563876) (xy 30.618952 -18.645923) (xy 30.198394 -18.645923) + (xy 29.785917 -18.563876) (xy 29.397371 -18.402935) (xy 29.04769 -18.169286) (xy 28.75031 -17.871906) (xy 28.516661 -17.522225) + (xy 28.35572 -17.133679) (xy 28.273673 -16.721202) (xy 28.273673 -16.300644) (xy 28.35572 -15.888167) (xy 28.516661 -15.499621) + (xy 28.75031 -15.14994) (xy 29.04769 -14.85256) (xy 29.397371 -14.618911) (xy 29.785917 -14.45797) (xy 30.198394 -14.375923) + (xy 30.618952 -14.375923) (xy 31.031429 -14.45797) (xy 31.419975 -14.618911) (xy 31.535108 -14.69584) (xy 31.535108 -14.382458) + (xy 28.618841 -11.46619) (xy 28.589843 -11.442392) (xy 28.566045 -11.413394) (xy 28.566044 -11.413393) (xy 28.494869 -11.326667) + (xy 28.424297 -11.194637) (xy 28.403611 -11.126441) (xy 28.383192 -11.059125) (xy 28.380841 -11.051376) (xy 28.366167 -10.902391) + (xy 28.369844 -10.865059) (xy 28.369844 -8.084792) (xy 27.41749 -8.489042) (xy 27.298113 -8.526396) (xy 27.173743 -8.539742) + (xy 27.049159 -8.528568) (xy 26.929149 -8.493304) (xy 26.818324 -8.435305) (xy 26.764269 -8.391727) (xy 26.754625 -8.40369) + (xy 26.65863 -8.483883) (xy 26.548834 -8.543807) (xy 25.720379 -8.895465) (xy 25.601003 -8.932819) (xy 25.476633 -8.946165) + (xy 25.352049 -8.934991) (xy 25.232039 -8.899727) (xy 25.121214 -8.841728) (xy 25.023834 -8.763222) (xy 24.943641 -8.667227) + (xy 24.883717 -8.557431) (xy 24.41484 -7.452825) (xy 24.377486 -7.333449) (xy 24.36414 -7.209079) (xy 24.375314 -7.084495) + (xy 24.410578 -6.964485) (xy 24.468577 -6.85366) (xy 24.547083 -6.75628) (xy 24.643078 -6.676087) (xy 24.752874 -6.616163) + (xy 25.581329 -6.264505) (xy 25.700705 -6.227151) (xy 25.825075 -6.213805) (xy 25.840378 -6.215178) (xy 25.846581 -6.14602) + (xy 25.881845 -6.02601) (xy 25.939844 -5.915185) (xy 26.01835 -5.817805) (xy 26.114345 -5.737612) (xy 26.22414 -5.677688) + (xy 27.860798 -4.982968) (xy 27.980175 -4.945614) (xy 28.104545 -4.932268) (xy 28.229129 -4.943442) (xy 28.349139 -4.978706) + (xy 28.369843 -4.989541) (xy 28.369843 -1.151492) (xy 26.83756 0.380792) (xy 25.042684 0.380792) (xy 25.037735 0.355913) + (xy 24.876794 -0.032633) (xy 24.643145 -0.382314) (xy 24.345765 -0.679694) (xy 23.996084 -0.913343) (xy 23.607538 -1.074284) + (xy 23.195061 -1.156331) (xy 22.774503 -1.156331) (xy 22.362026 -1.074284) (xy 21.97348 -0.913343) (xy 21.623799 -0.679694) + (xy 21.326419 -0.382314) (xy 21.09277 -0.032633) (xy 20.931829 0.355913) (xy 20.849782 0.76839) (xy 18.28212 0.76839) + (xy 18.28212 0.62533) (xy 18.200073 0.212853) (xy 18.039132 -0.175693) (xy 17.805483 -0.525374) (xy 17.508103 -0.822754) + (xy 17.158422 -1.056403) (xy 16.769876 -1.217344) (xy 16.357399 -1.299391) (xy 15.936841 -1.299391) (xy 15.524364 -1.217344) + (xy 15.135818 -1.056403) (xy 15.045538 -0.99608) (xy 15.045538 -1.694035) (xy 15.033278 -1.818517) (xy 14.996968 -1.938215) + (xy 14.938003 -2.048529) (xy 14.858651 -2.14522) (xy 14.76196 -2.224572) (xy 14.651646 -2.283537) (xy 14.531948 -2.319847) + (xy 14.407466 -2.332107) (xy 11.857466 -2.332107) (xy 11.732984 -2.319847) (xy 11.613286 -2.283537) (xy 11.502972 -2.224572) + (xy 11.406281 -2.14522) (xy 11.326929 -2.048529) (xy 11.267964 -1.938215) (xy 11.231654 -1.818517) (xy 11.219394 -1.694035) + (xy 9.275575 -1.694035) (xy 9.275575 -3.643513) (xy 9.263315 -3.767995) (xy 9.227005 -3.887693) (xy 9.16804 -3.998007) + (xy 9.088688 -4.094698) (xy 8.991997 -4.17405) (xy 8.881683 -4.233015) (xy 8.761985 -4.269325) (xy 8.637503 -4.281585) + (xy 8.122503 -4.281585) (xy 8.122503 -10.102296) (xy 9.199013 -9.645345) (xy 9.31839 -9.607991) (xy 9.44276 -9.594645) + (xy 9.567344 -9.605819) (xy 9.687354 -9.641083) (xy 9.798179 -9.699082) (xy 9.895559 -9.777588) (xy 9.975752 -9.873583) + (xy 10.035676 -9.983378) (xy 10.730396 -11.620036) (xy 10.76775 -11.739413) (xy 10.781096 -11.863783) (xy 10.769922 -11.988367) + (xy 10.734658 -12.108377) (xy 10.676659 -12.219202) (xy 10.598153 -12.316582) (xy 10.502158 -12.396775) (xy 10.392363 -12.456699) + (xy 8.755705 -13.151419) (xy 8.636328 -13.188773) (xy 8.511958 -13.202119) (xy 8.387374 -13.190945) (xy 8.267364 -13.155681) + (xy 8.156539 -13.097682) (xy 8.102484 -13.054104) (xy 8.09284 -13.066067) (xy 7.996845 -13.14626) (xy 7.887049 -13.206184) + (xy 7.727148 -13.274058) (xy 10.104116 -15.651026) (xy 10.614156 -15.651026) (xy 10.614156 -15.35833) (xy 10.671258 -15.071257) + (xy 10.783268 -14.80084) (xy 10.945882 -14.557472) (xy 11.15285 -14.350504) (xy 11.396218 -14.18789) (xy 11.666635 -14.07588) + (xy 11.953708 -14.018778) (xy 12.246404 -14.018778) (xy 12.533477 -14.07588) (xy 12.803894 -14.18789) (xy 13.047262 -14.350504) + (xy 13.25423 -14.557472) (xy 13.416844 -14.80084) (xy 13.528854 -15.071257) (xy 13.585956 -15.35833) (xy 13.585956 -15.651026) + (xy 13.528854 -15.938099) (xy 13.416844 -16.208516) (xy 13.25423 -16.451884) (xy 13.047262 -16.658852) (xy 12.803894 -16.821466) + (xy 12.533477 -16.933476) (xy 12.246404 -16.990578) (xy 11.953708 -16.990578) (xy 11.666635 -16.933476) (xy 11.396218 -16.821466) + (xy 11.15285 -16.658852) (xy 10.945882 -16.451884) (xy 10.783268 -16.208516) (xy 10.671258 -15.938099) (xy 10.614156 -15.651026) + (xy 10.104116 -15.651026) (xy 12.903301 -18.45021) (xy 12.921892 -18.388925) (xy 12.980857 -18.278611) (xy 13.060209 -18.18192) + (xy 13.1569 -18.102568) (xy 13.267214 -18.043603) (xy 13.386912 -18.007293) (xy 13.511394 -17.995033) (xy 16.061394 -17.995033) + (xy 16.185876 -18.007293) (xy 16.305574 -18.043603) (xy 16.415888 -18.102568) (xy 16.512579 -18.18192) (xy 16.591931 -18.278611) + (xy 16.650896 -18.388925) (xy 16.687206 -18.508623) (xy 16.699466 -18.633105) (xy 16.699466 -19.183627) (xy 18.643285 -19.183627) + (xy 18.643285 -16.683627) (xy 18.655545 -16.559145) (xy 18.691855 -16.439447) (xy 18.75082 -16.329133) (xy 18.830172 -16.232442) + (xy 18.926863 -16.15309) (xy 19.037177 -16.094125) (xy 19.156875 -16.057815) (xy 19.281357 -16.045555) (xy 19.478951 -16.045555) + (xy 19.473611 -15.991338) (xy 19.473611 -15.991328) (xy 19.469935 -15.954006) (xy 19.473611 -15.916683) (xy 19.473612 -10.807155) + (xy 19.391806 -10.725349) (xy 19.218074 -10.46534) (xy 19.098405 -10.176434) (xy 19.037398 -9.869732) (xy 19.037398 -9.557022) + (xy 19.098405 -9.25032) (xy 19.218074 -8.961414) (xy 19.391806 -8.701405) (xy 19.612926 -8.480285) (xy 19.872935 -8.306553) + (xy 20.161841 -8.186884) (xy 20.468543 -8.125877) (xy 20.781253 -8.125877) (xy 21.087955 -8.186884) (xy 21.359547 -8.299381) + (xy 21.372912 -8.253897) (xy 21.430911 -8.143072) (xy 21.509417 -8.045692) (xy 21.605412 -7.965499) (xy 21.715208 -7.905575) + (xy 22.543663 -7.553917) (xy 22.663039 -7.516563) (xy 22.787409 -7.503217) (xy 22.911993 -7.514391) (xy 23.032003 -7.549655) + (xy 23.142828 -7.607654) (xy 23.240208 -7.68616) (xy 23.320401 -7.782155) (xy 23.380325 -7.891951) (xy 23.849202 -8.996557) + (xy 23.886556 -9.115933) (xy 23.899902 -9.240303) (xy 23.888728 -9.364887) (xy 23.853464 -9.484897) (xy 23.795465 -9.595722) + (xy 23.716959 -9.693102) (xy 23.620964 -9.773295) (xy 23.511168 -9.833219) (xy 22.682713 -10.184877) (xy 22.563337 -10.222231) + (xy 22.438967 -10.235577) (xy 22.331713 -10.225957) (xy 22.309209 -10.253378) (xy 22.193484 -10.348351) (xy 22.061455 -10.418923) + (xy 22.049439 -10.422568) (xy 22.031722 -10.46534) (xy 21.85799 -10.725349) (xy 21.63687 -10.946469) (xy 21.376861 -11.120201) + (xy 21.087955 -11.23987) (xy 20.993611 -11.258636) (xy 20.993611 -13.379846) (xy 21.263164 -13.326229) (xy 21.55586 -13.326229) + (xy 21.842933 -13.383331) (xy 22.11335 -13.495341) (xy 22.356718 -13.657955) (xy 22.563686 -13.864923) (xy 22.7263 -14.108291) + (xy 22.83831 -14.378708) (xy 22.887535 -14.626181) (xy 22.948255 -14.60103) (xy 23.360732 -14.518983) (xy 23.78129 -14.518983) + (xy 24.128729 -14.588093) (xy 24.043677 -14.503041) (xy 23.755976 -14.072466) (xy 23.557804 -13.594037) (xy 23.456777 -13.086139) + (xy 23.456777 -12.568291) (xy 23.557804 -12.060393) (xy 23.755976 -11.581964) (xy 24.043677 -11.151389) (xy 24.409851 -10.785215) + (xy 24.840426 -10.497514) (xy 25.318855 -10.299342) (xy 25.826753 -10.198315) (xy 26.344601 -10.198315) (xy 26.852499 -10.299342) + (xy 27.330928 -10.497514) (xy 27.761503 -10.785215) (xy 28.127677 -11.151389) (xy 28.415378 -11.581964) (xy 28.61355 -12.060393) + (xy 28.714577 -12.568291) (xy 28.714577 -13.086139) (xy 28.61355 -13.594037) (xy 28.415378 -14.072466) (xy 28.127677 -14.503041) + (xy 27.761503 -14.869215) (xy 27.330928 -15.156916) (xy 26.852499 -15.355088) (xy 26.344601 -15.456115) (xy 25.826753 -15.456115) + (xy 25.318855 -15.355088) (xy 25.252493 -15.3276) (xy 25.463023 -15.642681) (xy 25.623964 -16.031227) (xy 25.706011 -16.443704) + (xy 25.706011 -16.864262) (xy 25.623964 -17.276739) (xy 25.463023 -17.665285) (xy 25.229374 -18.014966) (xy 24.931994 -18.312346) + (xy 24.582313 -18.545995) (xy 24.193767 -18.706936) (xy 23.78129 -18.788983) (xy 23.360732 -18.788983) (xy 22.948255 -18.706936) + (xy 22.559709 -18.545995) (xy 22.469429 -18.485672) (xy 22.469429 -19.183627) (xy 22.457169 -19.308109) (xy 22.420859 -19.427807) + (xy 22.361894 -19.538121) (xy 22.282542 -19.634812) (xy 22.185851 -19.714164) (xy 22.075537 -19.773129) (xy 21.955839 -19.809439) + (xy 21.831357 -19.821699) (xy 19.281357 -19.821699) (xy 19.156875 -19.809439) (xy 19.037177 -19.773129) (xy 18.926863 -19.714164) + (xy 18.830172 -19.634812) (xy 18.75082 -19.538121) (xy 18.691855 -19.427807) (xy 18.655545 -19.308109) (xy 18.643285 -19.183627) + (xy 16.699466 -19.183627) (xy 16.699466 -21.133105) (xy 16.687206 -21.257587) (xy 16.650896 -21.377285) (xy 16.591931 -21.487599) + (xy 16.512579 -21.58429) (xy 16.415888 -21.663642) (xy 16.305574 -21.722607) (xy 16.185876 -21.758917) (xy 16.061394 -21.771177) + (xy 15.546394 -21.771177) (xy 15.546394 -27.591888) (xy 16.622904 -27.134937) (xy 16.742281 -27.097583) (xy 16.866651 -27.084237) + (xy 16.991235 -27.095411) (xy 17.111245 -27.130675) (xy 17.22207 -27.188674) (xy 17.31945 -27.26718) (xy 17.399643 -27.363175) + (xy 17.459567 -27.47297) (xy 18.154287 -29.109628) (xy 18.191641 -29.229005) (xy 18.204987 -29.353375) (xy 18.193813 -29.477959) + (xy 18.158549 -29.597969) (xy 18.10055 -29.708794) (xy 18.022044 -29.806174) (xy 17.926049 -29.886367) (xy 17.816254 -29.946291) + (xy 16.179596 -30.641011) (xy 16.060219 -30.678365) (xy 15.935849 -30.691711) (xy 15.811265 -30.680537) (xy 15.691255 -30.645273) + (xy 15.58043 -30.587274) (xy 15.526375 -30.543696) (xy 15.516731 -30.555659) (xy 15.420736 -30.635852) (xy 15.31094 -30.695776) + (xy 15.15104 -30.76365) (xy 17.528008 -33.140618) (xy 18.038048 -33.140618) (xy 18.038048 -32.847922) (xy 18.09515 -32.560849) + (xy 18.20716 -32.290432) (xy 18.369774 -32.047064) (xy 18.576742 -31.840096) (xy 18.82011 -31.677482) (xy 19.090527 -31.565472) + (xy 19.3776 -31.50837) (xy 19.670296 -31.50837) (xy 19.957369 -31.565472) (xy 20.227786 -31.677482) (xy 20.471154 -31.840096) + (xy 20.678122 -32.047064) (xy 20.840736 -32.290432) (xy 20.952746 -32.560849) (xy 21.009848 -32.847922) (xy 21.009848 -33.140618) + (xy 20.952746 -33.427691) (xy 20.840736 -33.698108) (xy 20.678122 -33.941476) (xy 20.471154 -34.148444) (xy 20.227786 -34.311058) + (xy 19.957369 -34.423068) (xy 19.670296 -34.48017) (xy 19.3776 -34.48017) (xy 19.090527 -34.423068) (xy 18.82011 -34.311058) + (xy 18.576742 -34.148444) (xy 18.369774 -33.941476) (xy 18.20716 -33.698108) (xy 18.09515 -33.427691) (xy 18.038048 -33.140618) + (xy 17.528008 -33.140618) (xy 20.327193 -35.939802) (xy 20.345784 -35.878517) (xy 20.404749 -35.768203) (xy 20.484101 -35.671512) + (xy 20.580792 -35.59216) (xy 20.691106 -35.533195) (xy 20.810804 -35.496885) (xy 20.935286 -35.484625) (xy 23.485286 -35.484625) + (xy 23.609768 -35.496885) (xy 23.729466 -35.533195) (xy 23.83978 -35.59216) (xy 23.936471 -35.671512) (xy 24.015823 -35.768203) + (xy 24.074788 -35.878517) (xy 24.111098 -35.998215) (xy 24.123358 -36.122697) (xy 24.123358 -38.622697) (xy 24.111098 -38.747179) + (xy 24.074788 -38.866877) (xy 24.015823 -38.977191) (xy 23.936471 -39.073882) (xy 23.83978 -39.153234) (xy 23.729466 -39.212199) + (xy 23.609768 -39.248509) (xy 23.485286 -39.260769) (xy 22.970286 -39.260769) (xy 22.970286 -45.08148) (xy 24.046796 -44.624529) + (xy 24.166173 -44.587175) (xy 24.290543 -44.573829) (xy 24.415127 -44.585003) (xy 24.535137 -44.620267) (xy 24.645962 -44.678266) + (xy 24.743342 -44.756772) (xy 24.823535 -44.852767) (xy 24.883459 -44.962562) (xy 25.578179 -46.59922) (xy 25.615533 -46.718597) + (xy 25.628879 -46.842967) (xy 25.617705 -46.967551) (xy 25.582441 -47.087561) (xy 25.524442 -47.198386) (xy 25.445936 -47.295766) + (xy 25.349941 -47.375959) (xy 25.240146 -47.435883) (xy 23.603488 -48.130603) (xy 23.484111 -48.167957) (xy 23.359741 -48.181303) + (xy 23.235157 -48.170129) (xy 23.115147 -48.134865) (xy 23.004322 -48.076866) (xy 22.950267 -48.033288) (xy 22.940623 -48.045251) + (xy 22.844628 -48.125444) (xy 22.734832 -48.185368) (xy 22.57493 -48.253242) (xy 24.951899 -50.630211) (xy 25.461939 -50.630211) + (xy 25.461939 -50.337515) (xy 25.519041 -50.050442) (xy 25.631051 -49.780025) (xy 25.793665 -49.536657) (xy 26.000633 -49.329689) + (xy 26.244001 -49.167075) (xy 26.514418 -49.055065) (xy 26.801491 -48.997963) (xy 27.094187 -48.997963) (xy 27.38126 -49.055065) + (xy 27.651677 -49.167075) (xy 27.895045 -49.329689) (xy 28.102013 -49.536657) (xy 28.264627 -49.780025) (xy 28.376637 -50.050442) + (xy 28.433739 -50.337515) (xy 28.433739 -50.630211) (xy 28.376637 -50.917284) (xy 28.264627 -51.187701) (xy 28.102013 -51.431069) + (xy 27.895045 -51.638037) (xy 27.651677 -51.800651) (xy 27.38126 -51.912661) (xy 27.094187 -51.969763) (xy 26.801491 -51.969763) + (xy 26.514418 -51.912661) (xy 26.244001 -51.800651) (xy 26.000633 -51.638037) (xy 25.793665 -51.431069) (xy 25.631051 -51.187701) + (xy 25.519041 -50.917284) (xy 25.461939 -50.630211) (xy 24.951899 -50.630211) (xy 27.751084 -53.429395) (xy 27.769675 -53.36811) + (xy 27.82864 -53.257796) (xy 27.907992 -53.161105) (xy 28.004683 -53.081753) (xy 28.114997 -53.022788) (xy 28.234695 -52.986478) + (xy 28.359177 -52.974218) (xy 30.909177 -52.974218) (xy 31.033659 -52.986478) (xy 31.153357 -53.022788) (xy 31.263671 -53.081753) + (xy 31.360362 -53.161105) (xy 31.439714 -53.257796) (xy 31.498679 -53.36811) (xy 31.534989 -53.487808) (xy 31.547249 -53.61229) + (xy 31.547249 -56.11229) (xy 31.534989 -56.236772) (xy 31.498679 -56.35647) (xy 31.439714 -56.466784) (xy 31.360362 -56.563475) + (xy 31.263671 -56.642827) (xy 31.153357 -56.701792) (xy 31.033659 -56.738102) (xy 30.909177 -56.750362) (xy 28.652572 -56.750362) + (xy 28.647623 -56.775241) (xy 28.486682 -57.163787) (xy 28.253033 -57.513468) (xy 27.955653 -57.810848) (xy 27.605972 -58.044497) + (xy 27.217426 -58.205438) (xy 26.804949 -58.287485) (xy 26.384391 -58.287485) (xy 25.971914 -58.205438) (xy 25.583368 -58.044497) + (xy 25.233687 -57.810848) (xy 24.936307 -57.513468) (xy 24.702658 -57.163787) (xy 24.541717 -56.775241) (xy 24.45967 -56.362764) + (xy 24.45967 -55.942206) (xy 24.541717 -55.529729) (xy 24.702658 -55.141183) (xy 24.936307 -54.791502) (xy 25.233687 -54.494122) + (xy 25.583368 -54.260473) (xy 25.971914 -54.099532) (xy 26.221893 -54.049808) (xy 24.900443 -52.728358) (xy 24.799547 -53.235599) + (xy 24.601375 -53.714028) (xy 24.313674 -54.144603) (xy 23.9475 -54.510777) (xy 23.516925 -54.798478) (xy 23.038496 -54.99665) + (xy 22.530598 -55.097677) (xy 22.01275 -55.097677) (xy 21.504852 -54.99665) (xy 21.43849 -54.969162) (xy 21.64902 -55.284243) + (xy 21.809961 -55.672789) (xy 21.892008 -56.085266) (xy 21.892008 -56.505824) (xy 21.809961 -56.918301) (xy 21.64902 -57.306847) + (xy 21.415371 -57.656528) (xy 21.117991 -57.953908) (xy 20.76831 -58.187557) (xy 20.379764 -58.348498) (xy 19.967287 -58.430545) + (xy 19.546729 -58.430545) (xy 19.134252 -58.348498) (xy 18.745706 -58.187557) (xy 18.655426 -58.127234) (xy 18.655426 -58.825189) + (xy 18.643166 -58.949671) (xy 18.606856 -59.069369) (xy 18.547891 -59.179683) (xy 18.468539 -59.276374) (xy 18.371848 -59.355726) + (xy 18.261534 -59.414691) (xy 18.141836 -59.451001) (xy 18.017354 -59.463261) (xy 15.467354 -59.463261) (xy 15.342872 -59.451001) + (xy 15.223174 -59.414691) (xy 15.11286 -59.355726) (xy 15.016169 -59.276374) (xy 14.936817 -59.179683) (xy 14.877852 -59.069369) + (xy 14.841542 -58.949671) (xy 14.829282 -58.825189) (xy 14.829282 -56.325189) (xy 14.841542 -56.200707) (xy 14.877852 -56.081009) + (xy 14.936817 -55.970695) (xy 15.016169 -55.874004) (xy 15.11286 -55.794652) (xy 15.223174 -55.735687) (xy 15.342872 -55.699377) + (xy 15.467354 -55.687117) (xy 15.982355 -55.687117) (xy 15.982355 -55.655672) (xy 15.908611 -55.581928) (xy 15.879607 -55.558125) + (xy 15.854864 -55.527975) (xy 15.784634 -55.4424) (xy 15.76245 -55.400897) (xy 15.714062 -55.31037) (xy 15.670605 -55.167109) + (xy 15.659608 -55.055456) (xy 15.659608 -55.055446) (xy 15.655932 -55.018124) (xy 15.659608 -54.980801) (xy 15.659609 -50.448715) + (xy 15.577804 -50.36691) (xy 15.404072 -50.106901) (xy 15.284403 -49.817995) (xy 15.223396 -49.511293) (xy 15.223396 -49.198583) + (xy 15.284403 -48.891881) (xy 15.404072 -48.602975) (xy 15.577804 -48.342966) (xy 15.798924 -48.121846) (xy 16.058933 -47.948114) + (xy 16.347839 -47.828445) (xy 16.654541 -47.767438) (xy 16.967251 -47.767438) (xy 17.273953 -47.828445) (xy 17.299635 -47.839083) + (xy 17.319538 -47.828445) (xy 17.362629 -47.805412) (xy 17.50589 -47.761955) (xy 17.617543 -47.750958) (xy 17.617553 -47.750958) + (xy 17.646343 -47.748122) (xy 17.695415 -47.687253) (xy 17.79141 -47.60706) (xy 17.901206 -47.547136) (xy 18.729661 -47.195478) + (xy 18.849037 -47.158124) (xy 18.973407 -47.144778) (xy 19.097991 -47.155952) (xy 19.218001 -47.191216) (xy 19.328826 -47.249215) + (xy 19.426206 -47.327721) (xy 19.506399 -47.423716) (xy 19.566323 -47.533512) (xy 20.0352 -48.638118) (xy 20.072554 -48.757494) + (xy 20.0859 -48.881864) (xy 20.074726 -49.006448) (xy 20.039462 -49.126458) (xy 19.981463 -49.237283) (xy 19.902957 -49.334663) + (xy 19.806962 -49.414856) (xy 19.697166 -49.47478) (xy 18.868711 -49.826438) (xy 18.749335 -49.863792) (xy 18.624965 -49.877138) + (xy 18.500381 -49.865964) (xy 18.380371 -49.8307) (xy 18.339153 -49.809129) (xy 18.337389 -49.817995) (xy 18.21772 -50.106901) + (xy 18.043988 -50.36691) (xy 17.822868 -50.58803) (xy 17.562859 -50.761762) (xy 17.273953 -50.881431) (xy 17.179608 -50.900197) + (xy 17.179608 -53.021408) (xy 17.449161 -52.967791) (xy 17.741857 -52.967791) (xy 18.02893 -53.024893) (xy 18.299347 -53.136903) + (xy 18.542715 -53.299517) (xy 18.749683 -53.506485) (xy 18.912297 -53.749853) (xy 19.024307 -54.02027) (xy 19.073532 -54.267743) + (xy 19.134252 -54.242592) (xy 19.546729 -54.160545) (xy 19.967287 -54.160545) (xy 20.314726 -54.229655) (xy 20.229674 -54.144603) + (xy 19.941973 -53.714028) (xy 19.743801 -53.235599) (xy 19.642774 -52.727701) (xy 19.642774 -52.209853) (xy 19.743801 -51.701955) + (xy 19.941973 -51.223526) (xy 20.229674 -50.792951) (xy 20.595848 -50.426777) (xy 21.026423 -50.139076) (xy 21.504852 -49.940904) + (xy 22.012093 -49.840008) (xy 20.352174 -48.180088) (xy 20.323176 -48.15629) (xy 20.299378 -48.127292) (xy 20.299377 -48.127291) + (xy 20.228202 -48.040565) (xy 20.15763 -47.908535) (xy 20.135945 -47.837046) (xy 20.114174 -47.765275) (xy 20.103176 -47.653622) + (xy 20.103176 -47.653611) (xy 20.0995 -47.616289) (xy 20.103176 -47.578967) (xy 20.103176 -46.74777) (xy 20.0995 -46.710448) + (xy 20.103176 -46.673126) (xy 20.103176 -46.673116) (xy 20.114173 -46.561463) (xy 20.150151 -46.442857) (xy 20.15763 -46.418202) + (xy 20.228202 -46.286172) (xy 20.26273 -46.2441) (xy 20.323175 -46.170447) (xy 20.352179 -46.146644) (xy 21.450287 -45.048535) + (xy 21.450286 -39.260769) (xy 21.228681 -39.260769) (xy 21.223732 -39.285648) (xy 21.062791 -39.674194) (xy 20.829142 -40.023875) + (xy 20.531762 -40.321255) (xy 20.182081 -40.554904) (xy 19.793535 -40.715845) (xy 19.381058 -40.797892) (xy 18.9605 -40.797892) + (xy 18.548023 -40.715845) (xy 18.159477 -40.554904) (xy 17.809796 -40.321255) (xy 17.512416 -40.023875) (xy 17.278767 -39.674194) + (xy 17.117826 -39.285648) (xy 17.035779 -38.873171) (xy 17.035779 -38.452613) (xy 17.117826 -38.040136) (xy 17.278767 -37.65159) + (xy 17.512416 -37.301909) (xy 17.809796 -37.004529) (xy 18.159477 -36.77088) (xy 18.548023 -36.609939) (xy 18.798002 -36.560215) + (xy 17.476552 -35.238765) (xy 17.375656 -35.746006) (xy 17.177484 -36.224435) (xy 16.889783 -36.65501) (xy 16.523609 -37.021184) + (xy 16.093034 -37.308885) (xy 15.614605 -37.507057) (xy 15.106707 -37.608084) (xy 14.588859 -37.608084) (xy 14.080961 -37.507057) + (xy 14.014599 -37.479569) (xy 14.225129 -37.79465) (xy 14.38607 -38.183196) (xy 14.468117 -38.595673) (xy 14.468117 -39.016231) + (xy 14.38607 -39.428708) (xy 14.225129 -39.817254) (xy 13.99148 -40.166935) (xy 13.6941 -40.464315) (xy 13.344419 -40.697964) + (xy 12.955873 -40.858905) (xy 12.543396 -40.940952) (xy 12.122838 -40.940952) (xy 11.710361 -40.858905) (xy 11.321815 -40.697964) + (xy 11.231535 -40.637641) (xy 11.231535 -41.335596) (xy 11.219275 -41.460078) (xy 11.182965 -41.579776) (xy 11.124 -41.69009) + (xy 11.044648 -41.786781) (xy 10.947957 -41.866133) (xy 10.837643 -41.925098) (xy 10.717945 -41.961408) (xy 10.593463 -41.973668) + (xy 8.043463 -41.973668) (xy 7.918981 -41.961408) (xy 7.799283 -41.925098) (xy 7.688969 -41.866133) (xy 7.592278 -41.786781) + (xy 7.512926 -41.69009) (xy 7.453961 -41.579776) (xy 7.417651 -41.460078) (xy 7.405391 -41.335596) (xy 7.405391 -38.835596) + (xy 7.417651 -38.711114) (xy 7.453961 -38.591416) (xy 7.512926 -38.481102) (xy 7.592278 -38.384411) (xy 7.674505 -38.316929) + (xy 7.674506 -32.855177) (xy 7.670829 -32.817845) (xy 7.674506 -32.780512) (xy 7.685503 -32.668859) (xy 7.691381 -32.649483) + (xy 7.728959 -32.525599) (xy 7.799531 -32.393569) (xy 7.853012 -32.328403) (xy 7.859048 -32.321048) (xy 7.799504 -32.021701) + (xy 7.799504 -31.708991) (xy 7.860511 -31.402289) (xy 7.98018 -31.113383) (xy 8.153912 -30.853374) (xy 8.375032 -30.632254) + (xy 8.635041 -30.458522) (xy 8.923947 -30.338853) (xy 9.230649 -30.277846) (xy 9.543359 -30.277846) (xy 9.850061 -30.338853) + (xy 10.121653 -30.45135) (xy 10.135018 -30.405866) (xy 10.193017 -30.295041) (xy 10.271523 -30.197661) (xy 10.367518 -30.117468) + (xy 10.477314 -30.057544) (xy 11.305769 -29.705886) (xy 11.425145 -29.668532) (xy 11.549515 -29.655186) (xy 11.674099 -29.66636) + (xy 11.794109 -29.701624) (xy 11.904934 -29.759623) (xy 12.002314 -29.838129) (xy 12.082507 -29.934124) (xy 12.142431 -30.04392) + (xy 12.611308 -31.148526) (xy 12.648662 -31.267902) (xy 12.662008 -31.392272) (xy 12.650834 -31.516856) (xy 12.61557 -31.636866) + (xy 12.557571 -31.747691) (xy 12.479065 -31.845071) (xy 12.38307 -31.925264) (xy 12.273274 -31.985188) (xy 11.444819 -32.336846) + (xy 11.325443 -32.3742) (xy 11.201073 -32.387546) (xy 11.093819 -32.377926) (xy 11.071315 -32.405347) (xy 10.95559 -32.50032) + (xy 10.823561 -32.570892) (xy 10.811545 -32.574537) (xy 10.793828 -32.617309) (xy 10.620096 -32.877318) (xy 10.398976 -33.098438) + (xy 10.138967 -33.27217) (xy 9.850061 -33.391839) (xy 9.543359 -33.452846) (xy 9.230649 -33.452846) (xy 9.194505 -33.445656) + (xy 9.194505 -35.839831) (xy 9.224412 -35.809924) (xy 9.46778 -35.64731) (xy 9.738197 -35.5353) (xy 10.02527 -35.478198) + (xy 10.317966 -35.478198) (xy 10.605039 -35.5353) (xy 10.875456 -35.64731) (xy 11.118824 -35.809924) (xy 11.325792 -36.016892) + (xy 11.488406 -36.26026) (xy 11.600416 -36.530677) (xy 11.649641 -36.77815) (xy 11.710361 -36.752999) (xy 12.122838 -36.670952) + (xy 12.543396 -36.670952) (xy 12.890835 -36.740062) (xy 12.805783 -36.65501) (xy 12.518082 -36.224435) (xy 12.31991 -35.746006) + (xy 12.218883 -35.238108) (xy 12.218883 -34.72026) (xy 12.31991 -34.212362) (xy 12.518082 -33.733933) (xy 12.805783 -33.303358) + (xy 13.171957 -32.937184) (xy 13.602532 -32.649483) (xy 14.080961 -32.451311) (xy 14.588202 -32.350415) (xy 12.928282 -30.690494) + (xy 12.899284 -30.666696) (xy 12.875486 -30.637698) (xy 12.875485 -30.637697) (xy 12.80431 -30.550971) (xy 12.733738 -30.418941) + (xy 12.709445 -30.338853) (xy 12.690282 -30.275681) (xy 12.679284 -30.164028) (xy 12.679284 -30.164017) (xy 12.675608 -30.126695) + (xy 12.679284 -30.089373) (xy 12.679284 -29.258178) (xy 12.675608 -29.220856) (xy 12.679284 -29.183534) (xy 12.679284 -29.183524) + (xy 12.690281 -29.071871) (xy 12.727141 -28.950359) (xy 12.733738 -28.92861) (xy 12.80431 -28.79658) (xy 12.829969 -28.765315) + (xy 12.899283 -28.680855) (xy 12.928287 -28.657052) (xy 14.026395 -27.558943) (xy 14.026394 -21.771177) (xy 13.804789 -21.771177) + (xy 13.79984 -21.796056) (xy 13.638899 -22.184602) (xy 13.40525 -22.534283) (xy 13.10787 -22.831663) (xy 12.758189 -23.065312) + (xy 12.369643 -23.226253) (xy 11.957166 -23.3083) (xy 11.536608 -23.3083) (xy 11.124131 -23.226253) (xy 10.735585 -23.065312) + (xy 10.385904 -22.831663) (xy 10.088524 -22.534283) (xy 9.854875 -22.184602) (xy 9.693934 -21.796056) (xy 9.611887 -21.383579) + (xy 9.611887 -20.963021) (xy 9.693934 -20.550544) (xy 9.854875 -20.161998) (xy 10.088524 -19.812317) (xy 10.385904 -19.514937) + (xy 10.735585 -19.281288) (xy 11.124131 -19.120347) (xy 11.37411 -19.070623) (xy 10.05266 -17.749173) (xy 9.951764 -18.256414) + (xy 9.753592 -18.734843) (xy 9.465891 -19.165418) (xy 9.099717 -19.531592) (xy 8.669142 -19.819293) (xy 8.190713 -20.017465) + (xy 7.682815 -20.118492) (xy 7.164967 -20.118492) (xy 6.657069 -20.017465) (xy 6.590707 -19.989977) (xy 6.801237 -20.305058) + (xy 6.962178 -20.693604) (xy 7.044225 -21.106081) (xy 7.044225 -21.526639) (xy 6.962178 -21.939116) (xy 6.801237 -22.327662) + (xy 6.567588 -22.677343) (xy 6.270208 -22.974723) (xy 5.920527 -23.208372) (xy 5.531981 -23.369313) (xy 5.119504 -23.45136) + (xy 4.698946 -23.45136) (xy 4.286469 -23.369313) (xy 3.897923 -23.208372) (xy 3.807643 -23.148049) (xy 3.807643 -23.846004) + (xy 3.795383 -23.970486) (xy 3.759073 -24.090184) (xy 3.700108 -24.200498) (xy 3.620756 -24.297189) (xy 3.524065 -24.376541) + (xy 3.413751 -24.435506) (xy 3.294053 -24.471816) (xy 3.169571 -24.484076) (xy 0.619571 -24.484076) (xy 0.495089 -24.471816) + (xy 0.375391 -24.435506) (xy 0.265077 -24.376541) (xy 0.168386 -24.297189) (xy 0.089034 -24.200498) (xy 0.030069 -24.090184) + (xy -0.006241 -23.970486) (xy -0.018501 -23.846004) (xy -2.686161 -23.846004) (xy 1.064453 -32.681895) (xy 1.064481 -32.681961) + (xy 1.064656 -32.682374) (xy 1.064657 -32.682376) (xy 1.078174 -32.714221) (xy 1.078176 -32.714227) (xy 6.925223 -46.489007) + (xy 6.925273 -46.489122) (xy 6.925448 -46.489535) (xy 6.92545 -46.489541) (xy 6.938966 -46.521383) (xy 6.938967 -46.521385) + (xy 15.898757 -67.629328) (xy 15.942239 -67.70908) (xy 15.978044 -67.752054) (xy 16.021514 -67.787255) (xy 16.070986 -67.813339) + (xy 16.124593 -67.82932) (xy 16.180279 -67.834583) + ) + ) + ) ) From fd3fd6b5c098df7828d88e8e721511e481f68544 Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Fri, 25 Mar 2022 01:35:34 +0100 Subject: [PATCH 112/120] rename board --- 23treus.yaml | 184 +++++++++++++++++++++++++++++++++++++++++++++++++++ 45treus.yaml | 113 ------------------------------- Makefile | 7 +- 3 files changed, 189 insertions(+), 115 deletions(-) create mode 100644 23treus.yaml delete mode 100644 45treus.yaml diff --git a/23treus.yaml b/23treus.yaml new file mode 100644 index 0000000..60d5f00 --- /dev/null +++ b/23treus.yaml @@ -0,0 +1,184 @@ +points: + key: + footprints: + mx_hotswap: + type: mx + params: + hotswap: true + reverse: false + keycaps: true + nets: + from: =colrow + to: =column_net + diode: + type: diode + nets: + from: =colrow + to: =row_net + anchor: + shift: [0, -5] + rotate: 180 + + zones: + matrix: + columns: + pinky: + key: { column_net: P20 } + ring: + stagger: 4 + key: { column_net: P19 } + middle: + stagger: 5 + key: { column_net: P18 } + index: + stagger: -5 + key: { column_net: P15 } + inner: + stagger: -6 + key: { column_net: P14 } + thumb: + stagger: 10 + row_overrides: + bottom: + key: { column_net: P16 } + rows: + bottom: + row_net: P6 + home: + row_net: P5 + top: + row_net: P4 + num: + row_net: P3 + + rotate: -23 + mirror: + ref: matrix_thumb_bottom + distance: 42 + +outlines: + exports: + # outer border + outer: + - type: polygon + points: + - ref: matrix_inner_num + shift: [10, 10] + - ref: matrix_middle_num + shift: [10, 10] + - ref: matrix_middle_num + shift: [-10, 10] + - ref: matrix_pinky_num + shift: [-10, 10] + - ref: matrix_pinky_bottom + shift: [-10, -10] + - ref: matrix_pinky_bottom + shift: [10, -10] + - ref: matrix_inner_bottom + shift: [-10, -10] + - ref: matrix_inner_bottom + shift: [10, -10] + - ref: mirror_matrix_inner_bottom + shift: [10, -10] + - ref: mirror_matrix_inner_bottom + shift: [-10, -10] + - ref: mirror_matrix_pinky_bottom + shift: [10, -10] + - ref: mirror_matrix_pinky_bottom + shift: [-10, -10] + - ref: mirror_matrix_pinky_num + shift: [-10, 10] + - ref: mirror_matrix_middle_num + shift: [-10, 10] + - ref: mirror_matrix_middle_num + shift: [10, 10] + - ref: mirror_matrix_inner_num + shift: [10, 10] + #- type: keys + # side: both + # size: 20 + # corner: 1 + #- type: polygon + # points: + # - ref: matrix_inner_num + # shift: [0, -5] + # - ref: matrix_thumb_bottom + # shift: [-10, -10] + # - ref: mirror_matrix_thumb_bottom + # shift: [-10, -10] + # - ref: mirror_matrix_inner_num + # shift: [0, -5] + chip: + # cutout for the chip itself + - type: rectangle + size: [18, 33] + anchor: + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [-9, -24.5] + # cutout for the cable (looks) + - type: rectangle + size: [8, 50] + anchor: + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [-4, -24.5] + # 14mm holes for cherry switches + keyholes: + - type: keys + side: both + size: 14 + bound: false + # switchplate + switchplate: + - outer + - -keyholes + - -chip + +pcbs: + main: + outlines: + outer: + outline: outer + footprints: + onoff: + type: slider + nets: + from: P1 + to: battery- + anchor: + rotate: 180 + ref: matrix_middle_bottom + shift: [0, -14] + battery+: + type: pad + params: + text: "+" + back: false + nets: + net: RAW + anchor: + ref: [matrix_inner_bottom, mirror_matrix_inner_bottom] + shift: [4, 14] + battery-: + type: pad + params: + text: "-" + back: false + nets: + net: battery- + anchor: + ref: [matrix_inner_bottom, mirror_matrix_inner_bottom] + shift: [-4, 14] + reset: + type: button + nets: + from: RST + to: GND + anchor: + ref: [matrix_inner_bottom, mirror_matrix_inner_bottom] + rotate: 90 + mcu: + type: promicro + anchor: + rotate: 270 + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [0, -4] diff --git a/45treus.yaml b/45treus.yaml deleted file mode 100644 index bb2aa99..0000000 --- a/45treus.yaml +++ /dev/null @@ -1,113 +0,0 @@ -points: - key: - footprints: - mx_hotswap: - type: mx - params: - hotswap: true - reverse: false - keycaps: true - nets: - from: =colrow - to: =column_net - diode: - type: diode - nets: - from: =colrow - to: =row_net - anchor: - shift: [0, -5] - rotate: 180 - - zones: - matrix: - columns: - pinky: - key: { column_net: P20 } - ring: - stagger: 3 - key: { column_net: P19 } - middle: - stagger: 5 - key: { column_net: P18 } - index: - stagger: -5 - key: { column_net: P15 } - inner: - stagger: -6 - key: { column_net: P14 } - thumb: - stagger: 10 - row_overrides: - bottom: - key: { column_net: P16 } - rows: - bottom: - row_net: P6 - home: - row_net: P5 - top: - row_net: P4 - num: - row_net: P3 - - rotate: -23 - mirror: - ref: matrix_thumb_bottom - distance: 42 - -outlines: - exports: - # outer border - outer: - - type: keys - side: both - size: 25 - corner: 1 - - type: polygon - points: - - ref: matrix_inner_num - shift: [0, -5] - - ref: matrix_thumb_bottom - shift: [-10, -10] - - ref: mirror_matrix_thumb_bottom - shift: [-10, -10] - - ref: mirror_matrix_inner_num - shift: [0, -5] - chip: - # cutout for the chip itself - - type: rectangle - size: [18, 33] - anchor: - ref: [matrix_inner_top, mirror_matrix_inner_top] - shift: [-9, -24.5] - # cutout for the cable (looks) - - type: rectangle - size: [8, 50] - anchor: - ref: [matrix_inner_top, mirror_matrix_inner_top] - shift: [-4, -24.5] - # 14mm holes for cherry switches - keyholes: - - type: keys - side: both - size: 14 - bound: false - # switchplate - switchplate: - - outer - - -keyholes - - -chip - -pcbs: - main: - outlines: - outer: - outline: outer - footprints: - mcu: - type: promicro - anchor: - rotate: 270 - ref: [matrix_inner_top, mirror_matrix_inner_top] - shift: [0, -8] diff --git a/Makefile b/Makefile index 5dab740..5744e1c 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,6 @@ -all: - node src/cli.js 45treus.yaml -o output +all: node_modules + node src/cli.js 23treus.yaml -o output cp output/pcbs/main.kicad_pcb kicad/45treus/ + +node_modules: + npm ci From 9370da75b7535afd8ccc1bdb797669147463ee36 Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Fri, 25 Mar 2022 01:35:39 +0100 Subject: [PATCH 113/120] add v2 with support for powerswitch and reset --- ...ersion_002_with_switch_and_reset.kicad_pcb | 6746 +++++++++++++++++ ...main_version_002_with_switch_and_reset.pro | 33 + 2 files changed, 6779 insertions(+) create mode 100644 kicad/45treus/main_version_002_with_switch_and_reset.kicad_pcb create mode 100644 kicad/45treus/main_version_002_with_switch_and_reset.pro diff --git a/kicad/45treus/main_version_002_with_switch_and_reset.kicad_pcb b/kicad/45treus/main_version_002_with_switch_and_reset.kicad_pcb new file mode 100644 index 0000000..93d0167 --- /dev/null +++ b/kicad/45treus/main_version_002_with_switch_and_reset.kicad_pcb @@ -0,0 +1,6746 @@ +(kicad_pcb (version 20171130) (host pcbnew 5.1.12) + + (general + (thickness 1.6) + (drawings 17) + (tracks 658) + (zones 0) + (modules 89) + (nets 66) + ) + + (page A3) + (title_block + (title main) + (rev v1.0.0) + (company Unknown) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + (net 1 pinky_bottom) + (net 2 P20) + (net 3 P6) + (net 4 pinky_home) + (net 5 P5) + (net 6 pinky_top) + (net 7 P4) + (net 8 pinky_num) + (net 9 P3) + (net 10 ring_bottom) + (net 11 P19) + (net 12 ring_home) + (net 13 ring_top) + (net 14 ring_num) + (net 15 middle_bottom) + (net 16 P18) + (net 17 middle_home) + (net 18 middle_top) + (net 19 middle_num) + (net 20 index_bottom) + (net 21 P15) + (net 22 index_home) + (net 23 index_top) + (net 24 index_num) + (net 25 inner_bottom) + (net 26 P14) + (net 27 inner_home) + (net 28 inner_top) + (net 29 inner_num) + (net 30 thumb_bottom) + (net 31 P16) + (net 32 mirror_pinky_bottom) + (net 33 mirror_pinky_home) + (net 34 mirror_pinky_top) + (net 35 mirror_pinky_num) + (net 36 mirror_ring_bottom) + (net 37 mirror_ring_home) + (net 38 mirror_ring_top) + (net 39 mirror_ring_num) + (net 40 mirror_middle_bottom) + (net 41 mirror_middle_home) + (net 42 mirror_middle_top) + (net 43 mirror_middle_num) + (net 44 mirror_index_bottom) + (net 45 mirror_index_home) + (net 46 mirror_index_top) + (net 47 mirror_index_num) + (net 48 mirror_inner_bottom) + (net 49 mirror_inner_home) + (net 50 mirror_inner_top) + (net 51 mirror_inner_num) + (net 52 mirror_thumb_bottom) + (net 53 P1) + (net 54 battery-) + (net 55 RAW) + (net 56 RST) + (net 57 GND) + (net 58 VCC) + (net 59 P21) + (net 60 P10) + (net 61 P0) + (net 62 P2) + (net 63 P7) + (net 64 P8) + (net 65 P9) + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net GND) + (add_net P0) + (add_net P1) + (add_net P10) + (add_net P14) + (add_net P15) + (add_net P16) + (add_net P18) + (add_net P19) + (add_net P2) + (add_net P20) + (add_net P21) + (add_net P3) + (add_net P4) + (add_net P5) + (add_net P6) + (add_net P7) + (add_net P8) + (add_net P9) + (add_net RAW) + (add_net RST) + (add_net VCC) + (add_net battery-) + (add_net index_bottom) + (add_net index_home) + (add_net index_num) + (add_net index_top) + (add_net inner_bottom) + (add_net inner_home) + (add_net inner_num) + (add_net inner_top) + (add_net middle_bottom) + (add_net middle_home) + (add_net middle_num) + (add_net middle_top) + (add_net mirror_index_bottom) + (add_net mirror_index_home) + (add_net mirror_index_num) + (add_net mirror_index_top) + (add_net mirror_inner_bottom) + (add_net mirror_inner_home) + (add_net mirror_inner_num) + (add_net mirror_inner_top) + (add_net mirror_middle_bottom) + (add_net mirror_middle_home) + (add_net mirror_middle_num) + (add_net mirror_middle_top) + (add_net mirror_pinky_bottom) + (add_net mirror_pinky_home) + (add_net mirror_pinky_num) + (add_net mirror_pinky_top) + (add_net mirror_ring_bottom) + (add_net mirror_ring_home) + (add_net mirror_ring_num) + (add_net mirror_ring_top) + (add_net mirror_thumb_bottom) + (add_net pinky_bottom) + (add_net pinky_home) + (add_net pinky_num) + (add_net pinky_top) + (add_net ring_bottom) + (add_net ring_home) + (add_net ring_num) + (add_net ring_top) + (add_net thumb_bottom) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 0 0 337) + (fp_text reference S1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 1 pinky_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at -1.953656 4.602524 157) + (fp_text reference D1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 1 pinky_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 1 pinky_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 1 pinky_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 7.423891 -17.489592 337) + (fp_text reference S2 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 4 pinky_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 5.470236 -12.887068 157) + (fp_text reference D2 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 4 pinky_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 4 pinky_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 4 pinky_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 14.847783 -34.979184 337) + (fp_text reference S3 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 6 pinky_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 12.894127 -30.37666 157) + (fp_text reference D3 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 6 pinky_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 6 pinky_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 6 pinky_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 22.271674 -52.468777 337) + (fp_text reference S4 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 8 pinky_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 20.318019 -47.866252 157) + (fp_text reference D4 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 8 pinky_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 8 pinky_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 8 pinky_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 19.052517 3.741872 337) + (fp_text reference S5 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 10 ring_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 17.098861 8.344396 157) + (fp_text reference D5 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 10 ring_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 10 ring_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 10 ring_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 26.476408 -13.74772 337) + (fp_text reference S6 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 12 ring_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 24.522753 -9.145196 157) + (fp_text reference D6 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 12 ring_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 12 ring_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 12 ring_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 33.9003 -31.237312 337) + (fp_text reference S7 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 13 ring_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 31.946644 -26.634788 157) + (fp_text reference D7 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 13 ring_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 13 ring_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 13 ring_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 41.324191 -48.726905 337) + (fp_text reference S8 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 14 ring_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 39.370536 -44.12438 157) + (fp_text reference D8 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 14 ring_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 14 ring_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 14 ring_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 38.495765 6.563239 337) + (fp_text reference S9 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 15 middle_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 36.542109 11.165764 157) + (fp_text reference D9 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 15 middle_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 15 middle_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 15 middle_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 45.919656 -10.926353 337) + (fp_text reference S10 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 17 middle_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 43.966 -6.323829 157) + (fp_text reference D10 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 17 middle_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 17 middle_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 17 middle_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 53.343548 -28.415945 337) + (fp_text reference S11 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 18 middle_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 51.389892 -23.813421 157) + (fp_text reference D11 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 18 middle_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 18 middle_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 18 middle_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 60.767439 -45.905537 337) + (fp_text reference S12 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 19 middle_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 58.813783 -41.303013 157) + (fp_text reference D12 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 19 middle_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 19 middle_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 19 middle_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 54.031701 18.589655 337) + (fp_text reference S13 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 20 index_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 52.078046 23.192179 157) + (fp_text reference D13 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 20 index_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 20 index_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 20 index_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 61.455593 1.100063 337) + (fp_text reference S14 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 22 index_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 59.501937 5.702587 157) + (fp_text reference D14 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 22 index_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 22 index_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 22 index_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 68.879484 -16.389529 337) + (fp_text reference S15 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 23 index_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 66.925828 -11.787005 157) + (fp_text reference D15 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 23 index_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 23 index_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 23 index_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 76.303376 -33.879122 337) + (fp_text reference S16 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 24 index_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 74.34972 -29.276597 157) + (fp_text reference D16 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 24 index_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 24 index_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 24 index_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 69.176907 31.536576 337) + (fp_text reference S17 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 25 inner_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 67.223251 36.1391 157) + (fp_text reference D17 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 25 inner_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 25 inner_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 25 inner_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 76.600798 14.046983 337) + (fp_text reference S18 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 27 inner_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 74.647142 18.649508 157) + (fp_text reference D18 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 27 inner_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 27 inner_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 27 inner_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 84.02469 -3.442609 337) + (fp_text reference S19 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 28 inner_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 82.071034 1.159915 157) + (fp_text reference D19 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 28 inner_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 28 inner_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 28 inner_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 91.448581 -20.932201 337) + (fp_text reference S20 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 29 inner_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 89.494925 -16.329677 157) + (fp_text reference D20 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 29 inner_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 29 inner_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 29 inner_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 90.57381 29.755418 337) + (fp_text reference S21 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 30 thumb_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 31 P16)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 88.620155 34.357943 157) + (fp_text reference D21 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 30 thumb_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 30 thumb_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 30 thumb_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 223.14762 0 23) + (fp_text reference S22 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 32 mirror_pinky_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 225.101276 4.602524 203) + (fp_text reference D22 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 32 mirror_pinky_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 32 mirror_pinky_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 32 mirror_pinky_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 215.723729 -17.489592 23) + (fp_text reference S23 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 33 mirror_pinky_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 217.677384 -12.887068 203) + (fp_text reference D23 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 33 mirror_pinky_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 33 mirror_pinky_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 33 mirror_pinky_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 208.299837 -34.979184 23) + (fp_text reference S24 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 34 mirror_pinky_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 210.253493 -30.37666 203) + (fp_text reference D24 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 34 mirror_pinky_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 34 mirror_pinky_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 34 mirror_pinky_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 200.875946 -52.468777 23) + (fp_text reference S25 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 35 mirror_pinky_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 202.829602 -47.866252 203) + (fp_text reference D25 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 35 mirror_pinky_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 35 mirror_pinky_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 35 mirror_pinky_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 204.095104 3.741872 23) + (fp_text reference S26 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 36 mirror_ring_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 206.048759 8.344396 203) + (fp_text reference D26 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 36 mirror_ring_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 36 mirror_ring_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 36 mirror_ring_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 196.671212 -13.74772 23) + (fp_text reference S27 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 37 mirror_ring_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 198.624868 -9.145196 203) + (fp_text reference D27 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 37 mirror_ring_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 37 mirror_ring_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 37 mirror_ring_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 189.247321 -31.237312 23) + (fp_text reference S28 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 38 mirror_ring_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 191.200976 -26.634788 203) + (fp_text reference D28 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 38 mirror_ring_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 38 mirror_ring_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 38 mirror_ring_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 181.823429 -48.726905 23) + (fp_text reference S29 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 39 mirror_ring_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 183.777085 -44.12438 203) + (fp_text reference D29 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 39 mirror_ring_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 39 mirror_ring_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 39 mirror_ring_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 184.651856 6.563239 23) + (fp_text reference S30 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 40 mirror_middle_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 186.605511 11.165764 203) + (fp_text reference D30 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 40 mirror_middle_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 40 mirror_middle_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 40 mirror_middle_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 177.227964 -10.926353 23) + (fp_text reference S31 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 41 mirror_middle_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 179.18162 -6.323829 203) + (fp_text reference D31 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 41 mirror_middle_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 41 mirror_middle_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 41 mirror_middle_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 169.804073 -28.415945 23) + (fp_text reference S32 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 42 mirror_middle_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 171.757728 -23.813421 203) + (fp_text reference D32 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 42 mirror_middle_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 42 mirror_middle_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 42 mirror_middle_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 162.380181 -45.905537 23) + (fp_text reference S33 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 43 mirror_middle_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 164.333837 -41.303013 203) + (fp_text reference D33 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 43 mirror_middle_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 43 mirror_middle_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 43 mirror_middle_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 169.115919 18.589655 23) + (fp_text reference S34 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 44 mirror_index_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 171.069575 23.192179 203) + (fp_text reference D34 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 44 mirror_index_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 44 mirror_index_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 44 mirror_index_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 161.692028 1.100063 23) + (fp_text reference S35 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 45 mirror_index_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 163.645683 5.702587 203) + (fp_text reference D35 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 45 mirror_index_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 45 mirror_index_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 45 mirror_index_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 154.268136 -16.389529 23) + (fp_text reference S36 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 46 mirror_index_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 156.221792 -11.787005 203) + (fp_text reference D36 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 46 mirror_index_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 46 mirror_index_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 46 mirror_index_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 146.844245 -33.879122 23) + (fp_text reference S37 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 47 mirror_index_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 148.7979 -29.276597 203) + (fp_text reference D37 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 47 mirror_index_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 47 mirror_index_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 47 mirror_index_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 153.970714 31.536576 23) + (fp_text reference S38 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 48 mirror_inner_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 155.924369 36.1391 203) + (fp_text reference D38 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 48 mirror_inner_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 48 mirror_inner_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 48 mirror_inner_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 146.546822 14.046983 23) + (fp_text reference S39 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 49 mirror_inner_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 148.500478 18.649508 203) + (fp_text reference D39 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 49 mirror_inner_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P5)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 49 mirror_inner_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 49 mirror_inner_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P5)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 139.122931 -3.442609 23) + (fp_text reference S40 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 50 mirror_inner_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 141.076586 1.159915 203) + (fp_text reference D40 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 50 mirror_inner_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P4)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 50 mirror_inner_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 50 mirror_inner_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P4)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 131.699039 -20.932201 23) + (fp_text reference S41 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 51 mirror_inner_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 133.652695 -16.329677 203) + (fp_text reference D41 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 51 mirror_inner_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P3)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 51 mirror_inner_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 51 mirror_inner_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P3)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 132.57381 29.755418 23) + (fp_text reference S42 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 52 mirror_thumb_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 31 P16)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 134.527466 34.357943 203) + (fp_text reference D42 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 52 mirror_thumb_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P6)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 52 mirror_thumb_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 52 mirror_thumb_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P6)) + ) + + (module E73:SPDT_C128955 (layer F.Cu) (tedit 0) (tstamp 5BF2CC3C) + (at 33.025529 19.450307 157) + (fp_text reference T1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer F.SilkS) (width 0.15)) + (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer F.SilkS) (width 0.15)) + (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15)) + (fp_line (start 1.95 -3.85) (end 1.95 -1.35) (layer Dwgs.User) (width 0.15)) + (fp_line (start -1.95 -1.35) (end -1.95 -3.85) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) + (pad 1 smd rect (at 2.25 2.075 157) (size 0.9 1.25) (layers F.Cu F.Paste F.Mask) + (net 53 P1)) + (pad 2 smd rect (at -0.75 2.075 157) (size 0.9 1.25) (layers F.Cu F.Paste F.Mask) + (net 54 battery-)) + (pad 3 smd rect (at -2.25 2.075 157) (size 0.9 1.25) (layers F.Cu F.Paste F.Mask)) + (pad "" smd rect (at 3.7 -1.1 157) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) + (pad "" smd rect (at 3.7 1.1 157) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) + (pad "" smd rect (at -3.7 1.1 157) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) + (pad "" smd rect (at -3.7 -1.1 157) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) + ) + + (module SMDPad (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 115.57381 17.536576) + (fp_text reference PAD1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text user + (at -1.5 0) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (pad 1 smd rect (at 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 55 RAW)) + ) + + (module SMDPad (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 107.57381 17.536576) + (fp_text reference PAD2 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text user - (at -1.5 0) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (pad 1 smd rect (at 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) + (net 54 battery-)) + ) + + (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tedit 0) (tstamp 5BF2CC94) + (at 111.57381 31.536576 90) + (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") + (tags "SPST Tactile Switch") + (fp_text reference B1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer F.SilkS) (width 0.15)) + (pad 1 smd rect (at -3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) + (net 56 RST)) + (pad 1 smd rect (at 3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) + (net 56 RST)) + (pad 2 smd rect (at -3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) + (net 57 GND)) + (pad 2 smd rect (at 3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) + (net 57 GND)) + ) + + (module ProMicro (layer F.Cu) (tedit 5B307E4C) (tstamp 0) + (at 111.57381 0.557391 270) + (fp_text reference MCU1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) + (fp_text user RAW (at -13.97 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user GND (at -11.43 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user RST (at -8.89 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user VCC (at -6.35 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P21 (at -3.81 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P20 (at -1.27 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P19 (at 1.27 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P18 (at 3.81 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P15 (at 6.35 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P14 (at 8.89 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P16 (at 11.43 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P10 (at 13.97 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P01 (at -13.97 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P00 (at -11.43 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user GND (at -8.89 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user GND (at -6.35 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P02 (at -3.81 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P03 (at -1.27 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P04 (at 1.27 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P05 (at 3.81 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P06 (at 6.35 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P07 (at 8.89 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P08 (at 11.43 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P09 (at 13.97 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at -13.97 7.62 270) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 55 RAW)) + (pad 2 thru_hole circle (at -11.43 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 57 GND)) + (pad 3 thru_hole circle (at -8.89 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 56 RST)) + (pad 4 thru_hole circle (at -6.35 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 58 VCC)) + (pad 5 thru_hole circle (at -3.81 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 59 P21)) + (pad 6 thru_hole circle (at -1.27 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 2 P20)) + (pad 7 thru_hole circle (at 1.27 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 11 P19)) + (pad 8 thru_hole circle (at 3.81 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 16 P18)) + (pad 9 thru_hole circle (at 6.35 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 21 P15)) + (pad 10 thru_hole circle (at 8.89 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 26 P14)) + (pad 11 thru_hole circle (at 11.43 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 31 P16)) + (pad 12 thru_hole circle (at 13.97 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 60 P10)) + (pad 13 thru_hole circle (at -13.97 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 53 P1)) + (pad 14 thru_hole circle (at -11.43 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 61 P0)) + (pad 15 thru_hole circle (at -8.89 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 57 GND)) + (pad 16 thru_hole circle (at -6.35 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 57 GND)) + (pad 17 thru_hole circle (at -3.81 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 62 P2)) + (pad 18 thru_hole circle (at -1.27 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 9 P3)) + (pad 19 thru_hole circle (at 1.27 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 7 P4)) + (pad 20 thru_hole circle (at 3.81 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 5 P5)) + (pad 21 thru_hole circle (at 6.35 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 3 P6)) + (pad 22 thru_hole circle (at 8.89 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 63 P7)) + (pad 23 thru_hole circle (at 11.43 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 64 P8)) + (pad 24 thru_hole circle (at 13.97 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 65 P9)) + ) + + (gr_text "23treus v2\nfoosinn\n2022-03-25" (at 111.76 -22.225) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_line (start 118.58668 -26.229938) (end 104.560941 -26.229938) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 104.560941 -26.229938) (end 73.879799 -51.203275) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 73.879799 -51.203275) (end 55.469702 -59.017897) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 55.469702 -59.017897) (end 16.973937 -65.581136) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 16.973937 -65.581136) (end -13.11236 5.297737) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start -13.11236 5.297737) (end 5.297737 13.11236) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 5.297737 13.11236) (end 56.064547 36.834313) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 56.064547 36.834313) (end 74.474644 44.648935) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 74.474644 44.648935) (end 148.672976 44.648935) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 148.672976 44.648935) (end 167.083073 36.834313) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 167.083073 36.834313) (end 217.849883 13.11236) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 217.849883 13.11236) (end 236.25998 5.297737) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 236.25998 5.297737) (end 206.173683 -65.581136) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 206.173683 -65.581136) (end 167.677919 -59.017897) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 167.677919 -59.017897) (end 149.267822 -51.203275) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 149.267822 -51.203275) (end 118.58668 -26.229938) (angle 90) (layer Edge.Cuts) (width 0.15)) + + (segment (start -5.852066 2.722551) (end -5.460779 3.113838) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -5.852066 -4.783666) (end -5.852066 2.722551) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -5.52932 -5.106412) (end -5.852066 -4.783666) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -4.316469 3.113838) (end -3.472489 3.957818) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -5.460779 3.113838) (end -4.316469 3.113838) (width 0.25) (layer B.Cu) (net 1)) + (segment (start 14.786394 -9.817404) (end 14.786394 -19.883105) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 7.362503 -2.393513) (end 14.786394 -9.817404) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 20.685286 -37.372697) (end 22.210286 -37.372697) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 13.439284 -30.126695) (end 20.685286 -37.372697) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 13.439284 -29.220856) (end 13.439284 -30.126695) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 14.786394 -27.873746) (end 13.439284 -29.220856) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 14.786394 -19.883105) (end 14.786394 -27.873746) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 219.223993 -24.340819) (end 219.116404 -24.448408) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 219.223993 -18.432562) (end 219.223993 -24.340819) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 226.540295 -11.11626) (end 219.223993 -18.432562) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 226.540295 -6.958816) (end 226.540295 -11.11626) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 211.800101 -41.830411) (end 211.692512 -41.938) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 211.800101 -35.922155) (end 211.800101 -41.830411) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 219.116404 -28.605852) (end 211.800101 -35.922155) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 219.116404 -24.448408) (end 219.116404 -28.605852) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 211.692512 -41.938) (end 211.692512 -46.117488) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 204.37621 -59.320004) (end 204.268621 -59.427593) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 211.692512 -46.117488) (end 204.37621 -53.43379) (width 0.25) (layer B.Cu) (net 2)) + (via (at 22.210286 -40.019714) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 55.887707 -40.089012) (end 22.279584 -40.089012) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 75.027481 -20.949238) (end 55.887707 -40.089012) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 75.027481 -17.048929) (end 75.027481 -20.949238) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 22.279584 -40.089012) (end 22.210286 -40.019714) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 101.582813 -3.083606) (end 88.992804 -3.083606) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 103.95381 -0.712609) (end 101.582813 -3.083606) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 88.992804 -3.083606) (end 75.027481 -17.048929) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 22.210286 -37.372697) (end 22.210286 -40.019714) (width 0.25) (layer B.Cu) (net 2)) + (via (at 106.68 0) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 105.967391 -0.712609) (end 106.68 0) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 103.95381 -0.712609) (end 105.967391 -0.712609) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 106.68 0) (end 106.68 -17.78) (width 0.25) (layer B.Cu) (net 2)) + (via (at 106.68 -17.78) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (via (at 204.37621 -55.78621) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 191.310508 -55.78621) (end 204.37621 -55.78621) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 176.747864 -52.33773) (end 187.862027 -52.337729) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 175.686434 -53.39916) (end 176.747864 -52.33773) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 187.862027 -52.337729) (end 191.310508 -55.78621) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 120.496858 -17.78) (end 156.116018 -53.39916) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 106.68 -17.78) (end 120.496858 -17.78) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 204.37621 -55.78621) (end 204.37621 -59.320004) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 156.116018 -53.39916) (end 175.686434 -53.39916) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 204.37621 -53.43379) (end 204.37621 -55.78621) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 22.210286 -40.019714) (end 22.210286 -42.530286) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 29.634177 -49.954177) (end 29.634177 -54.86229) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 22.210286 -42.530286) (end 29.634177 -49.954177) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 158.587512 35.494394) (end 159.431492 34.650414) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 157.443202 35.494394) (end 158.587512 35.494394) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 172.500207 22.547473) (end 172.588408 22.547473) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 160.397266 34.650414) (end 172.500207 22.547473) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 159.431492 34.650414) (end 160.397266 34.650414) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 173.732718 22.547473) (end 174.576698 21.703493) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 172.588408 22.547473) (end 173.732718 22.547473) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 0.709487 5.24723) (end 1.553467 6.09121) (width 0.25) (layer F.Cu) (net 3)) + (segment (start -0.434823 5.24723) (end 0.709487 5.24723) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 15.041816 5.413224) (end 18.617694 8.989102) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 2.231453 5.413224) (end 15.041816 5.413224) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 1.553467 6.09121) (end 2.231453 5.413224) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 19.762004 8.989102) (end 20.605984 9.833082) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 18.617694 8.989102) (end 19.762004 8.989102) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 37.824672 11.5742) (end 38.060942 11.81047) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 22.347102 11.5742) (end 37.824672 11.5742) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 20.605984 9.833082) (end 22.347102 11.5742) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 39.205252 11.81047) (end 40.049232 12.65445) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 38.060942 11.81047) (end 39.205252 11.81047) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 48.813613 23.836885) (end 53.596879 23.836885) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 40.049232 15.072504) (end 48.813613 23.836885) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 40.049232 12.65445) (end 40.049232 15.072504) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 54.741189 23.836885) (end 55.585169 24.680865) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 53.596879 23.836885) (end 54.741189 23.836885) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 56.639143 24.680865) (end 68.742084 36.783806) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 55.585169 24.680865) (end 56.639143 24.680865) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 69.886394 36.783806) (end 70.730374 37.627786) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 68.742084 36.783806) (end 69.886394 36.783806) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 87.513851 37.627786) (end 90.138988 35.002649) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 70.730374 37.627786) (end 87.513851 37.627786) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 91.283298 35.002649) (end 92.127278 35.846629) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 90.138988 35.002649) (end 91.283298 35.002649) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 130.854249 38.905287) (end 136.046299 33.713237) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 92.127278 35.846629) (end 95.185936 38.905287) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 137.190609 33.713237) (end 138.034589 32.869257) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 136.046299 33.713237) (end 137.190609 33.713237) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 140.659726 35.494394) (end 157.443202 35.494394) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 138.034589 32.869257) (end 140.659726 35.494394) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 187.860864 10.521058) (end 188.124344 10.521058) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 176.678429 21.703493) (end 187.860864 10.521058) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 174.576698 21.703493) (end 176.678429 21.703493) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 189.268654 10.521058) (end 190.112634 9.677078) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 188.124344 10.521058) (end 189.268654 10.521058) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 190.112634 9.677078) (end 192.090022 7.69969) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 208.711902 7.69969) (end 209.555882 6.85571) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 206.93031 7.69969) (end 208.711902 7.69969) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 192.090022 7.69969) (end 206.93031 7.69969) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 206.93031 7.69969) (end 207.567592 7.69969) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 212.453774 3.957818) (end 226.620109 3.957818) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 209.555882 6.85571) (end 212.453774 3.957818) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 227.764419 3.957818) (end 228.608399 3.113838) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 226.620109 3.957818) (end 227.764419 3.957818) (width 0.25) (layer F.Cu) (net 3)) + (via (at 111.76 7.62) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3)) + (segment (start 112.472609 6.907391) (end 111.76 7.62) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 119.19381 6.907391) (end 112.472609 6.907391) (width 0.25) (layer F.Cu) (net 3)) + (via (at 111.295287 38.905287) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3)) + (segment (start 111.295287 8.084713) (end 111.295287 38.905287) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 111.76 7.62) (end 111.295287 8.084713) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 111.295287 38.905287) (end 130.854249 38.905287) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 95.185936 38.905287) (end 111.295287 38.905287) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 1.571825 -14.767042) (end 1.963113 -14.375754) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.571825 -20.642683) (end 1.571825 -14.767042) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.894571 -20.965429) (end 1.571825 -20.642683) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.894571 -22.596004) (end 1.894571 -20.965429) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 3.107423 -14.375754) (end 3.951403 -13.531774) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.963113 -14.375754) (end 3.107423 -14.375754) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 8.133379 -12.242362) (end 8.977359 -11.398382) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 6.989069 -12.242362) (end 8.133379 -12.242362) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 22.465708 -12.076368) (end 26.041586 -8.50049) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 9.655345 -12.076368) (end 22.465708 -12.076368) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 8.977359 -11.398382) (end 9.655345 -12.076368) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 27.185896 -8.50049) (end 28.029876 -7.65651) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 26.041586 -8.50049) (end 27.185896 -8.50049) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 30.007263 -5.679123) (end 45.484833 -5.679123) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 28.029876 -7.65651) (end 30.007263 -5.679123) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 46.629143 -5.679123) (end 47.473123 -4.835143) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 45.484833 -5.679123) (end 46.629143 -5.679123) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 49.838334 -4.835143) (end 61.02077 6.347293) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 47.473123 -4.835143) (end 49.838334 -4.835143) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 62.16508 6.347293) (end 63.00906 7.191273) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 61.02077 6.347293) (end 62.16508 6.347293) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 70.109731 13.23797) (end 76.165975 19.294214) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 69.055757 13.23797) (end 70.109731 13.23797) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 63.00906 7.191273) (end 69.055757 13.23797) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 77.310285 19.294214) (end 78.154265 20.138194) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 76.165975 19.294214) (end 77.310285 19.294214) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 146.716584 18.004802) (end 150.019311 18.004802) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 145.860693 18.860693) (end 146.716584 18.004802) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 78.154265 20.138194) (end 79.431766 18.860693) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 151.163621 18.004802) (end 152.007601 17.160822) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 150.019311 18.004802) (end 151.163621 18.004802) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 152.007601 17.160822) (end 153.019178 17.160822) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 153.061575 17.160822) (end 165.164516 5.057881) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 152.007601 17.160822) (end 153.061575 17.160822) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 166.308826 5.057881) (end 167.152806 4.213901) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 165.164516 5.057881) (end 166.308826 5.057881) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 169.518017 4.213901) (end 180.700453 -6.968535) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 167.152806 4.213901) (end 169.518017 4.213901) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 181.844763 -6.968535) (end 182.688743 -7.812515) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 180.700453 -6.968535) (end 181.844763 -6.968535) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 184.66613 -9.789902) (end 200.143701 -9.789902) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 182.688743 -7.812515) (end 184.66613 -9.789902) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 201.288011 -9.789902) (end 202.131991 -10.633882) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 200.143701 -9.789902) (end 201.288011 -9.789902) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 205.029883 -13.531774) (end 219.196217 -13.531774) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 202.131991 -10.633882) (end 205.029883 -13.531774) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 220.340527 -13.531774) (end 221.184507 -14.375754) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 219.196217 -13.531774) (end 220.340527 -13.531774) (width 0.25) (layer F.Cu) (net 5)) + (via (at 113.03 5.08) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 5)) + (segment (start 113.742609 4.367391) (end 113.03 5.08) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 119.19381 4.367391) (end 113.742609 4.367391) (width 0.25) (layer F.Cu) (net 5)) + (via (at 112.840693 18.860693) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 5)) + (segment (start 113.03 18.671386) (end 112.840693 18.860693) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 113.03 5.08) (end 113.03 18.671386) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 112.840693 18.860693) (end 145.860693 18.860693) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 79.431766 18.860693) (end 112.840693 18.860693) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 8.995717 -38.26285) (end 8.995717 -32.256633) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 8.995717 -32.256633) (end 9.387004 -31.865346) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 9.318463 -38.585596) (end 8.995717 -38.26285) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 9.318463 -40.085596) (end 9.318463 -38.585596) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 10.531314 -31.865346) (end 11.375294 -31.021366) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 9.387004 -31.865346) (end 10.531314 -31.865346) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 15.55727 -29.731954) (end 16.40125 -28.887974) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 14.41296 -29.731954) (end 15.55727 -29.731954) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 29.889599 -29.56596) (end 33.465477 -25.990082) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 17.079236 -29.56596) (end 29.889599 -29.56596) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 16.40125 -28.887974) (end 17.079236 -29.56596) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 34.609787 -25.990082) (end 35.453767 -25.146102) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 33.465477 -25.990082) (end 34.609787 -25.990082) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 37.431154 -23.168715) (end 52.908725 -23.168715) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 35.453767 -25.146102) (end 37.431154 -23.168715) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 54.053035 -23.168715) (end 54.897015 -22.324735) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 52.908725 -23.168715) (end 54.053035 -23.168715) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 63.661395 -11.142299) (end 68.444661 -11.142299) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 54.897015 -19.906679) (end 63.661395 -11.142299) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 54.897015 -22.324735) (end 54.897015 -19.906679) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 69.588971 -11.142299) (end 70.432951 -10.298319) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 68.444661 -11.142299) (end 69.588971 -11.142299) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 83.501665 1.804621) (end 83.589867 1.804621) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 71.398725 -10.298319) (end 83.501665 1.804621) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 70.432951 -10.298319) (end 71.398725 -10.298319) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 84.734177 1.804621) (end 85.578157 2.648601) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 83.589867 1.804621) (end 84.734177 1.804621) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 139.184526 3.926102) (end 142.595419 0.515209) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 136.956262 3.926102) (end 139.184526 3.926102) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 136.19625 3.16609) (end 136.956262 3.926102) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 102.978601 2.648601) (end 103.49609 3.16609) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 85.578157 2.648601) (end 102.978601 2.648601) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 143.739729 0.515209) (end 144.583709 -0.328771) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 142.595419 0.515209) (end 143.739729 0.515209) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 157.652423 -12.431711) (end 157.740625 -12.431711) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 145.549483 -0.328771) (end 157.652423 -12.431711) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 144.583709 -0.328771) (end 145.549483 -0.328771) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 158.884935 -12.431711) (end 159.728915 -13.275691) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 157.740625 -12.431711) (end 158.884935 -12.431711) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 162.094125 -13.275691) (end 173.276561 -24.458127) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 159.728915 -13.275691) (end 162.094125 -13.275691) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 174.420871 -24.458127) (end 175.264851 -25.302107) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 173.276561 -24.458127) (end 174.420871 -24.458127) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 192.483539 -27.043224) (end 192.719809 -27.279494) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 177.005968 -27.043224) (end 192.483539 -27.043224) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 175.264851 -25.302107) (end 177.005968 -27.043224) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 193.864119 -27.279494) (end 194.708099 -28.123474) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 192.719809 -27.279494) (end 193.864119 -27.279494) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 208.196448 -27.445488) (end 211.772326 -31.021366) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 195.386085 -27.445488) (end 208.196448 -27.445488) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 194.708099 -28.123474) (end 195.386085 -27.445488) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 212.916636 -31.021366) (end 213.760616 -31.865346) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 211.772326 -31.021366) (end 212.916636 -31.021366) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 117.552609 1.827391) (end 116.21391 3.16609) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 119.19381 1.827391) (end 117.552609 1.827391) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 116.21391 3.16609) (end 136.19625 3.16609) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 103.49609 3.16609) (end 116.21391 3.16609) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 16.419608 -49.746226) (end 16.810896 -49.354938) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 16.419608 -57.252443) (end 16.419608 -49.746226) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 16.742354 -57.575189) (end 16.419608 -57.252443) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 17.955206 -49.354938) (end 18.799186 -48.510958) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 16.810896 -49.354938) (end 17.955206 -49.354938) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 22.981162 -47.221546) (end 23.825142 -46.377566) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 21.836852 -47.221546) (end 22.981162 -47.221546) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 37.313491 -47.055552) (end 40.889369 -43.479674) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 24.503128 -47.055552) (end 37.313491 -47.055552) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 23.825142 -46.377566) (end 24.503128 -47.055552) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 42.033679 -43.479674) (end 42.877659 -42.635694) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 40.889369 -43.479674) (end 42.033679 -43.479674) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 42.877659 -42.635694) (end 44.855046 -40.658307) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 61.476926 -40.658307) (end 62.320906 -39.814327) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 59.708307 -40.658307) (end 61.476926 -40.658307) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 44.855046 -40.658307) (end 59.708307 -40.658307) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 59.708307 -40.658307) (end 60.332616 -40.658307) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 71.085287 -28.631891) (end 75.868553 -28.631891) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 62.320906 -37.396272) (end 71.085287 -28.631891) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 62.320906 -39.814327) (end 62.320906 -37.396272) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 77.012863 -28.631891) (end 77.856843 -27.787911) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 75.868553 -28.631891) (end 77.012863 -28.631891) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 90.925557 -15.684971) (end 91.013758 -15.684971) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 78.822617 -27.787911) (end 90.925557 -15.684971) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 77.856843 -27.787911) (end 78.822617 -27.787911) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 92.158068 -15.684971) (end 93.002048 -14.840991) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 91.013758 -15.684971) (end 92.158068 -15.684971) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 120.111055 -1.91391) (end 135.171528 -16.974383) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 93.002048 -12.407952) (end 103.49609 -1.91391) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 93.002048 -14.840991) (end 93.002048 -12.407952) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 136.315838 -16.974383) (end 137.159818 -17.818363) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 135.171528 -16.974383) (end 136.315838 -16.974383) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 150.228532 -29.921303) (end 150.316733 -29.921303) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 138.125592 -17.818363) (end 150.228532 -29.921303) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 137.159818 -17.818363) (end 138.125592 -17.818363) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 151.461043 -29.921303) (end 152.305023 -30.765283) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 150.316733 -29.921303) (end 151.461043 -29.921303) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 165.58919 -41.947719) (end 165.85267 -41.947719) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 154.406754 -30.765283) (end 165.58919 -41.947719) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 152.305023 -30.765283) (end 154.406754 -30.765283) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 166.99698 -41.947719) (end 167.84096 -42.791699) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 165.85267 -41.947719) (end 166.99698 -41.947719) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 185.059648 -44.532816) (end 185.295918 -44.769086) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 169.582077 -44.532816) (end 185.059648 -44.532816) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 167.84096 -42.791699) (end 169.582077 -44.532816) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 186.440228 -44.769086) (end 187.284208 -45.613066) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 185.295918 -44.769086) (end 186.440228 -44.769086) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 204.112165 -48.274688) (end 204.348435 -48.510958) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 189.94583 -48.274688) (end 204.112165 -48.274688) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 187.284208 -45.613066) (end 189.94583 -48.274688) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 205.492745 -48.510958) (end 206.336725 -49.354938) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 204.348435 -48.510958) (end 205.492745 -48.510958) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 117.415211 -0.712609) (end 116.21391 -1.91391) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 119.19381 -0.712609) (end 117.415211 -0.712609) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 116.21391 -1.91391) (end 120.111055 -1.91391) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 103.49609 -1.91391) (end 116.21391 -1.91391) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 32.313911 -16.141233) (end 33.838911 -16.141233) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 25.06791 -8.895232) (end 32.313911 -16.141233) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 25.06791 -7.989392) (end 25.06791 -8.895232) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 26.41502 -6.642282) (end 25.06791 -7.989392) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 26.41502 1.348359) (end 26.41502 -6.642282) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 39.737803 -33.630825) (end 41.262803 -33.630825) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 32.491801 -25.478984) (end 32.491801 -26.384823) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 32.491801 -26.384823) (end 39.737803 -33.630825) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 33.838911 -24.131874) (end 32.491801 -25.478984) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 33.838911 -16.141233) (end 33.838911 -24.131874) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 48.686694 -41.054716) (end 48.686694 -51.120418) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 207.487779 -13.282644) (end 200.063887 -20.706536) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 207.487779 -3.216944) (end 207.487779 -13.282644) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 199.185602 -21.584821) (end 199.185602 -31.650522) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 199.185602 -31.650522) (end 192.639996 -38.196128) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 200.063887 -20.706536) (end 199.185602 -21.584821) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 190.266673 -50.635152) (end 185.216104 -55.685721) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 192.639996 -38.196128) (end 190.266673 -40.569451) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 56.085348 -30.274652) (end 46.995989 -39.364011) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 60.300063 -30.274652) (end 56.085348 -30.274652) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 72.326479 -18.248236) (end 60.300063 -30.274652) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 99.492823 -2.633596) (end 88.806404 -2.633596) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 103.95381 1.827391) (end 99.492823 -2.633596) (width 0.25) (layer F.Cu) (net 11)) + (via (at 46.995989 -39.364011) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 11)) + (segment (start 46.995989 -39.364011) (end 48.686694 -41.054716) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 73.191764 -18.248236) (end 72.326479 -18.248236) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 88.806404 -2.633596) (end 73.191764 -18.248236) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 41.262803 -33.630825) (end 46.995989 -39.364011) (width 0.25) (layer B.Cu) (net 11)) + (via (at 107.95 1.27) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 11)) + (segment (start 107.392609 1.827391) (end 107.95 1.27) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 103.95381 1.827391) (end 107.392609 1.827391) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 107.95 1.27) (end 107.95 -8.89) (width 0.25) (layer B.Cu) (net 11)) + (via (at 107.95 -9.057609) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 11)) + (segment (start 107.95 -8.89) (end 107.95 -9.057609) (width 0.25) (layer B.Cu) (net 11)) + (via (at 190.266673 -49.296673) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 11)) + (segment (start 187.675626 -51.88772) (end 190.266673 -49.296673) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 174.795702 -49.749158) (end 176.934264 -51.88772) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 162.791828 -49.749158) (end 174.795702 -49.749158) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 160.06128 -44.537553) (end 160.06128 -47.01861) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 153.24647 -37.722743) (end 160.06128 -44.537553) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 147.255892 -37.722743) (end 153.24647 -37.722743) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 144.525344 -34.992195) (end 147.255892 -37.722743) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 144.525344 -32.511138) (end 144.525344 -34.992195) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 136.790028 -24.775822) (end 144.525344 -32.511138) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 132.110686 -24.775822) (end 136.790028 -24.775822) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 129.245311 -21.910447) (end 132.110686 -24.775822) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 160.06128 -47.01861) (end 162.791828 -49.749158) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 129.245311 -19.42939) (end 129.245311 -21.910447) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 122.027229 -12.211308) (end 129.245311 -19.42939) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 111.103699 -12.211308) (end 122.027229 -12.211308) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 190.266673 -40.569451) (end 190.266673 -49.296673) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 176.934264 -51.88772) (end 187.675626 -51.88772) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 107.95 -9.057609) (end 111.103699 -12.211308) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 190.266673 -49.296673) (end 190.266673 -50.635152) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 32.643699 9.285791) (end 33.034986 9.677078) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 32.643699 1.779573) (end 32.643699 9.285791) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 32.966445 1.456827) (end 32.643699 1.779573) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 34.179296 9.677078) (end 35.023276 10.521058) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 33.034986 9.677078) (end 34.179296 9.677078) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 45.858268 4.169726) (end 53.282159 -3.254165) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 59.181051 -30.809458) (end 60.706051 -30.809458) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 51.935049 -22.657617) (end 51.935049 -23.563456) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 51.935049 -23.563456) (end 59.181051 -30.809458) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 53.282159 -21.310507) (end 51.935049 -22.657617) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 53.282159 -13.319866) (end 53.282159 -21.310507) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 66.604942 -48.29905) (end 68.129942 -48.29905) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 59.35894 -41.053048) (end 66.604942 -48.29905) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 59.35894 -40.147209) (end 59.35894 -41.053048) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 60.706051 -38.800098) (end 59.35894 -40.147209) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 60.706051 -30.809458) (end 60.706051 -38.800098) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 187.556977 -10.948831) (end 180.620639 -17.885169) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 187.556977 -0.883131) (end 187.556977 -10.948831) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 188.044531 -0.395577) (end 187.556977 -0.883131) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 173.196748 -33.424683) (end 173.196748 -35.374761) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 180.620639 -17.885169) (end 180.620639 -26.000792) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 172.709194 -45.928015) (end 165.772856 -52.864353) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 173.196748 -35.374761) (end 172.709194 -35.862315) (width 0.25) (layer B.Cu) (net 16)) + (via (at 53.282159 -7.562159) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16)) + (segment (start 56.806475 -7.562159) (end 53.282159 -7.562159) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 65.327391 4.367391) (end 63.774494 2.814494) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 63.774494 -0.59414) (end 56.806475 -7.562159) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 63.774494 2.814494) (end 63.774494 -0.59414) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 103.95381 4.367391) (end 65.327391 4.367391) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 53.282159 -7.562159) (end 53.282159 -13.319866) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 53.282159 -3.254165) (end 53.282159 -7.562159) (width 0.25) (layer B.Cu) (net 16)) + (via (at 110.49 3.89109) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16)) + (segment (start 110.013699 4.367391) (end 110.49 3.89109) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 103.95381 4.367391) (end 110.013699 4.367391) (width 0.25) (layer F.Cu) (net 16)) + (via (at 110.49 1.27) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16)) + (segment (start 110.49 3.89109) (end 110.49 1.27) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 180.620639 -26.000792) (end 173.196748 -33.424683) (width 0.25) (layer B.Cu) (net 16)) + (via (at 172.709194 -38.110806) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16)) + (segment (start 127.037776 0.62609) (end 165.774672 -38.110806) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 165.774672 -38.110806) (end 172.709194 -38.110806) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 111.13391 0.62609) (end 127.037776 0.62609) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 110.49 1.27) (end 111.13391 0.62609) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 172.709194 -38.110806) (end 172.709194 -45.928015) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 172.709194 -35.862315) (end 172.709194 -38.110806) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 40.06759 -8.203802) (end 40.458877 -7.812515) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 40.06759 -14.210019) (end 40.06759 -8.203802) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 40.390336 -14.532765) (end 40.06759 -14.210019) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 40.390336 -16.032765) (end 40.390336 -14.532765) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 41.603187 -7.812515) (end 42.447167 -6.968535) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 40.458877 -7.812515) (end 41.603187 -7.812515) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 47.491482 -25.693394) (end 47.882769 -25.302107) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.491482 -30.965292) (end 47.491482 -25.693394) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.814228 -31.288038) (end 47.491482 -30.965292) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.814228 -33.522357) (end 47.814228 -31.288038) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 49.027079 -25.302107) (end 49.871059 -24.458127) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.882769 -25.302107) (end 49.027079 -25.302107) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 54.915373 -43.182986) (end 55.30666 -42.791699) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 54.915373 -50.689203) (end 54.915373 -43.182986) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 55.238119 -51.011949) (end 54.915373 -50.689203) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 56.45097 -42.791699) (end 57.29495 -41.947719) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 55.30666 -42.791699) (end 56.45097 -42.791699) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 48.179635 21.312205) (end 48.570923 21.703493) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 48.179635 16.040308) (end 48.179635 21.312205) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 48.502381 15.717562) (end 48.179635 16.040308) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 48.502381 13.483243) (end 48.502381 15.717562) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 49.715233 21.703493) (end 50.559213 22.547473) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 48.570923 21.703493) (end 49.715233 21.703493) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 61.394204 14.696142) (end 68.818096 7.27225) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 61.394204 16.196142) (end 61.394204 14.696142) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 76.241987 -8.717341) (end 76.241987 -18.783042) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 68.818096 -1.29345) (end 76.241987 -8.717341) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 83.665879 -27.706934) (end 83.665879 -36.272635) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 76.241987 -20.283042) (end 83.665879 -27.706934) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 76.241987 -18.783042) (end 76.241987 -20.283042) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 165.084703 -3.908675) (end 165.084703 -5.858753) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 172.508594 3.515216) (end 165.084703 -3.908675) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 172.508594 11.630839) (end 172.508594 3.515216) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 165.084703 -15.924453) (end 157.660811 -23.348345) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 157.660811 -33.414047) (end 150.23692 -40.837938) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 157.660811 -23.348345) (end 157.660811 -33.414047) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 101.361904 6.111904) (end 68.818096 6.111904) (width 0.25) (layer F.Cu) (net 21)) + (via (at 68.818096 6.111904) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 21)) + (segment (start 102.157391 6.907391) (end 101.361904 6.111904) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 68.818096 6.111904) (end 68.818096 -1.29345) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 103.95381 6.907391) (end 102.157391 6.907391) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 68.818096 7.27225) (end 68.818096 6.111904) (width 0.25) (layer B.Cu) (net 21)) + (via (at 165.084703 -10.175297) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 21)) + (segment (start 164.950932 -10.175297) (end 165.084703 -10.175297) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 149.069545 5.70609) (end 164.950932 -10.175297) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 118.617185 5.70609) (end 149.069545 5.70609) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 118.292183 6.031092) (end 118.617185 5.70609) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 104.830109 6.031092) (end 118.292183 6.031092) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 103.95381 6.907391) (end 104.830109 6.031092) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 165.084703 -10.175297) (end 165.084703 -15.924453) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 165.084703 -5.858753) (end 165.084703 -10.175297) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 55.603527 3.822614) (end 55.994814 4.213901) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.926273 -1.77203) (end 55.603527 -1.449284) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.603527 -1.449284) (end 55.603527 3.822614) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.926273 -4.006349) (end 55.926273 -1.77203) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 57.139124 4.213901) (end 57.983104 5.057881) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.994814 4.213901) (end 57.139124 4.213901) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 63.027418 -13.666978) (end 63.418705 -13.275691) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 63.027418 -21.173195) (end 63.027418 -13.666978) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 63.350164 -21.495941) (end 63.027418 -21.173195) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 64.563015 -13.275691) (end 65.406995 -12.431711) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 63.418705 -13.275691) (end 64.563015 -13.275691) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 70.45131 -31.15657) (end 70.842597 -30.765283) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 70.45131 -38.662788) (end 70.45131 -31.15657) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 70.774056 -38.985534) (end 70.45131 -38.662788) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 71.986907 -30.765283) (end 72.830887 -29.921303) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 70.842597 -30.765283) (end 71.986907 -30.765283) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 63.324841 34.259127) (end 63.716128 34.650414) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 63.324841 28.409785) (end 63.324841 34.259127) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 63.647587 28.087039) (end 63.324841 28.409785) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 63.647587 26.430164) (end 63.647587 28.087039) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 64.860438 34.650414) (end 65.704418 35.494394) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 63.716128 34.650414) (end 64.860438 34.650414) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 142.515606 -21.992125) (end 142.515606 -10.401425) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 136.616714 -27.891017) (end 142.515606 -21.992125) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 135.091714 -27.891017) (end 136.616714 -27.891017) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 149.939497 -4.502534) (end 149.939497 7.088167) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 144.040606 -10.401425) (end 149.939497 -4.502534) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 142.515606 -10.401425) (end 144.040606 -10.401425) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 149.939497 7.088167) (end 151.464497 7.088167) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 157.363389 12.987059) (end 157.363389 24.57776) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 91.387193 4.229578) (end 91.387193 -5.836122) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 97.286084 -23.325714) (end 98.811084 -23.325714) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 90.040082 -16.079712) (end 97.286084 -23.325714) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 90.040082 -15.173873) (end 90.040082 -16.079712) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 91.387193 -13.826762) (end 90.040082 -15.173873) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 91.387193 -5.836122) (end 91.387193 -13.826762) (width 0.25) (layer B.Cu) (net 26)) + (via (at 86.543385 9.073385) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 26)) + (segment (start 86.917391 9.447391) (end 86.543385 9.073385) (width 0.25) (layer F.Cu) (net 26)) + (segment (start 103.95381 9.447391) (end 86.917391 9.447391) (width 0.25) (layer F.Cu) (net 26)) + (segment (start 86.543385 9.073385) (end 91.387193 4.229578) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 83.963301 11.65347) (end 86.543385 9.073385) (width 0.25) (layer B.Cu) (net 26)) + (via (at 153.468165 9.091835) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 26)) + (segment (start 151.911308 10.648692) (end 153.468165 9.091835) (width 0.25) (layer F.Cu) (net 26)) + (segment (start 105.155111 10.648692) (end 151.911308 10.648692) (width 0.25) (layer F.Cu) (net 26)) + (segment (start 103.95381 9.447391) (end 105.155111 10.648692) (width 0.25) (layer F.Cu) (net 26)) + (segment (start 153.468165 9.091835) (end 157.363389 12.987059) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 151.464497 7.088167) (end 153.468165 9.091835) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 83.963301 20.176699) (end 83.963301 11.65347) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 76.53941 27.60059) (end 83.963301 20.176699) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 76.53941 29.143063) (end 76.53941 27.60059) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 84.721744 32.477969) (end 85.113032 32.869257) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 84.721744 27.206071) (end 84.721744 32.477969) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 85.04449 26.883325) (end 84.721744 27.206071) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 85.04449 24.649006) (end 85.04449 26.883325) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 86.257342 32.869257) (end 87.101322 33.713237) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 85.113032 32.869257) (end 86.257342 32.869257) (width 0.25) (layer B.Cu) (net 30)) + (via (at 100.33 21.59) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 31)) + (segment (start 97.936313 23.983687) (end 100.33 21.59) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 97.936313 27.361905) (end 97.936313 23.983687) (width 0.25) (layer B.Cu) (net 31)) + (via (at 130.81 21.59) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 31)) + (segment (start 100.33 21.59) (end 130.81 21.59) (width 0.25) (layer F.Cu) (net 31)) + (segment (start 134.759883 21.59) (end 135.966485 22.796602) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 130.81 21.59) (end 134.759883 21.59) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 103.95381 11.987391) (end 100.33 15.611201) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 100.33 15.611201) (end 100.33 21.59) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 219.794348 6.09121) (end 221.594153 6.09121) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 215.633386 1.930248) (end 219.794348 6.09121) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 215.633386 0.430248) (end 215.633386 1.930248) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 222.738463 6.09121) (end 223.582443 5.24723) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 221.594153 6.09121) (end 222.738463 6.09121) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 212.370457 -11.398382) (end 214.170261 -11.398382) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 208.209495 -15.559344) (end 212.370457 -11.398382) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 208.209495 -17.059344) (end 208.209495 -15.559344) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 215.314571 -11.398382) (end 216.158551 -12.242362) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 214.170261 -11.398382) (end 215.314571 -11.398382) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 204.946565 -28.887974) (end 206.74637 -28.887974) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 200.785603 -33.048936) (end 204.946565 -28.887974) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 200.785603 -34.548936) (end 200.785603 -33.048936) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 207.89068 -28.887974) (end 208.73466 -29.731954) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 206.74637 -28.887974) (end 207.89068 -28.887974) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 197.522675 -46.377566) (end 199.322479 -46.377566) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 193.361712 -50.538529) (end 197.522675 -46.377566) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 193.361712 -52.038529) (end 193.361712 -50.538529) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 200.466789 -46.377566) (end 201.310769 -47.221546) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 199.322479 -46.377566) (end 200.466789 -46.377566) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 200.741832 9.833082) (end 202.541636 9.833082) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 196.58087 5.67212) (end 200.741832 9.833082) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 196.58087 4.17212) (end 196.58087 5.67212) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 203.685946 9.833082) (end 204.529926 8.989102) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 202.541636 9.833082) (end 203.685946 9.833082) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 193.31794 -7.65651) (end 195.117745 -7.65651) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 189.156978 -11.817472) (end 193.31794 -7.65651) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 189.156978 -13.317472) (end 189.156978 -11.817472) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 196.262055 -7.65651) (end 197.106035 -8.50049) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 195.117745 -7.65651) (end 196.262055 -7.65651) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 185.894049 -25.146102) (end 187.693853 -25.146102) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 181.733087 -29.307064) (end 185.894049 -25.146102) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 181.733087 -30.807064) (end 181.733087 -29.307064) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 188.838163 -25.146102) (end 189.682143 -25.990082) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 187.693853 -25.146102) (end 188.838163 -25.146102) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 174.309195 -46.796657) (end 178.470158 -42.635694) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 178.470158 -42.635694) (end 180.269962 -42.635694) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 174.309195 -48.296657) (end 174.309195 -46.796657) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 181.414272 -42.635694) (end 182.258252 -43.479674) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 180.269962 -42.635694) (end 181.414272 -42.635694) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 181.298585 12.65445) (end 183.098388 12.65445) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 177.137622 8.493487) (end 181.298585 12.65445) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 177.137622 6.993487) (end 177.137622 8.493487) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 184.242698 12.65445) (end 185.086678 11.81047) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 183.098388 12.65445) (end 184.242698 12.65445) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 173.874692 -4.835143) (end 175.674497 -4.835143) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 169.71373 -8.996105) (end 173.874692 -4.835143) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 169.71373 -10.496105) (end 169.71373 -8.996105) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 176.818807 -4.835143) (end 177.662787 -5.679123) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 175.674497 -4.835143) (end 176.818807 -4.835143) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 166.450801 -22.324735) (end 168.250605 -22.324735) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 162.289839 -26.485697) (end 166.450801 -22.324735) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 162.289839 -27.985697) (end 162.289839 -26.485697) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 169.394915 -22.324735) (end 170.238895 -23.168715) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 168.250605 -22.324735) (end 169.394915 -22.324735) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 159.026909 -39.814327) (end 160.826714 -39.814327) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 154.865947 -43.975289) (end 159.026909 -39.814327) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 154.865947 -45.475289) (end 154.865947 -43.975289) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 161.971024 -39.814327) (end 162.815004 -40.658307) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 160.826714 -39.814327) (end 161.971024 -39.814327) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 161.601685 20.519903) (end 165.762647 24.680865) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 165.762647 24.680865) (end 167.562452 24.680865) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 161.601685 19.019903) (end 161.601685 20.519903) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 168.706762 24.680865) (end 169.550742 23.836885) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 167.562452 24.680865) (end 168.706762 24.680865) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 158.338756 7.191273) (end 160.13856 7.191273) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 154.177794 3.030311) (end 158.338756 7.191273) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 154.177794 1.530311) (end 154.177794 3.030311) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 161.28287 7.191273) (end 162.12685 6.347293) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 160.13856 7.191273) (end 161.28287 7.191273) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 150.914864 -10.298319) (end 152.714669 -10.298319) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 146.753902 -14.459281) (end 150.914864 -10.298319) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 146.753902 -15.959281) (end 146.753902 -14.459281) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 153.858979 -10.298319) (end 154.702959 -11.142299) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 152.714669 -10.298319) (end 153.858979 -10.298319) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 143.490974 -27.787911) (end 145.290777 -27.787911) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 139.330011 -31.948874) (end 143.490974 -27.787911) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 139.330011 -33.448874) (end 139.330011 -31.948874) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 146.435087 -27.787911) (end 147.279067 -28.631891) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 145.290777 -27.787911) (end 146.435087 -27.787911) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 150.617442 37.627786) (end 152.417246 37.627786) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 146.45648 33.466824) (end 150.617442 37.627786) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 146.45648 31.966824) (end 146.45648 33.466824) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 153.561556 37.627786) (end 154.405536 36.783806) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 152.417246 37.627786) (end 153.561556 37.627786) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 143.193551 20.138194) (end 144.993355 20.138194) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 139.032588 15.977231) (end 143.193551 20.138194) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 139.032588 14.477231) (end 139.032588 15.977231) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 146.137665 20.138194) (end 146.981645 19.294214) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 144.993355 20.138194) (end 146.137665 20.138194) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 135.769659 2.648601) (end 137.569463 2.648601) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 131.608697 -1.512361) (end 135.769659 2.648601) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 131.608697 -3.012361) (end 131.608697 -1.512361) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 138.713773 2.648601) (end 139.557753 1.804621) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 137.569463 2.648601) (end 138.713773 2.648601) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 128.345767 -14.840991) (end 130.145572 -14.840991) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 124.184805 -19.001953) (end 128.345767 -14.840991) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 124.184805 -20.501953) (end 124.184805 -19.001953) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 131.289882 -14.840991) (end 132.133862 -15.684971) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 130.145572 -14.840991) (end 131.289882 -14.840991) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 129.220539 35.846629) (end 131.020343 35.846629) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 125.059576 31.685666) (end 129.220539 35.846629) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 125.059576 30.185666) (end 125.059576 31.685666) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 132.164653 35.846629) (end 133.008633 35.002649) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 131.020343 35.846629) (end 132.164653 35.846629) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 72.285602 -41.91) (end 68.58 -41.91) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 73.984475 -35.200653) (end 75.613711 -36.829889) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 73.984475 -32.766049) (end 73.984475 -35.200653) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 75.190303 -31.560221) (end 73.984475 -32.766049) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 76.389779 -31.560221) (end 75.190303 -31.560221) (width 0.25) (layer F.Cu) (net 53)) + (via (at 68.58 -41.91) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 53)) + (segment (start 91.211886 -16.738113) (end 76.389779 -31.560221) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 75.613711 -36.829889) (end 75.613711 -38.581891) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 115.868306 -16.738113) (end 91.211886 -16.738113) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 75.613711 -38.581891) (end 72.285602 -41.91) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 119.19381 -13.412609) (end 115.868306 -16.738113) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 63.953588 -3.459646) (end 63.953588 1.942358) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 66.560583 -6.066641) (end 63.953588 -3.459646) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 66.560583 -17.502602) (end 66.560583 -6.066641) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 68.58 -19.522019) (end 66.560583 -17.502602) (width 0.25) (layer B.Cu) (net 53)) + (via (at 49.53 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 53)) + (segment (start 63.953588 1.942358) (end 56.505299 9.390647) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 68.58 -41.91) (end 68.58 -19.522019) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 32.469773 21.008985) (end 32.469773 17.365727) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 32.469773 17.365727) (end 31.76516 16.661114) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 39.400788 27.94) (end 32.469773 21.008985) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 49.53 27.94) (end 39.400788 27.94) (width 0.25) (layer F.Cu) (net 53)) + (segment (start 46.90238 11.973242) (end 49.484975 9.390647) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 46.90238 25.31238) (end 46.90238 11.973242) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 49.484975 9.390647) (end 56.505299 9.390647) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 49.53 27.94) (end 46.90238 25.31238) (width 0.25) (layer B.Cu) (net 53)) + (via (at 96.52 17.78) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 54)) + (segment (start 96.763424 17.536576) (end 96.52 17.78) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 107.57381 17.536576) (end 96.763424 17.536576) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 93.617977 37.192023) (end 91.44 39.37) (width 0.25) (layer B.Cu) (net 54)) + (segment (start 93.617977 29.367611) (end 93.617977 37.192023) (width 0.25) (layer B.Cu) (net 54)) + (segment (start 91.686883 27.436517) (end 93.617977 29.367611) (width 0.25) (layer B.Cu) (net 54)) + (segment (start 91.686883 22.613117) (end 91.686883 27.436517) (width 0.25) (layer B.Cu) (net 54)) + (via (at 91.44 39.37) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 54)) + (segment (start 96.52 17.78) (end 91.686883 22.613117) (width 0.25) (layer B.Cu) (net 54)) + (segment (start 35.016734 17.343249) (end 34.526675 17.833308) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 36.348832 17.343249) (end 35.016734 17.343249) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 44.405583 25.4) (end 36.348832 17.343249) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 52.575012 25.4) (end 44.405583 25.4) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 66.545012 39.37) (end 52.575012 25.4) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 91.44 39.37) (end 66.545012 39.37) (width 0.25) (layer F.Cu) (net 54)) + (via (at 116.84 16.51) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 55)) + (segment (start 115.813424 17.536576) (end 116.84 16.51) (width 0.25) (layer F.Cu) (net 55)) + (segment (start 115.57381 17.536576) (end 115.813424 17.536576) (width 0.25) (layer F.Cu) (net 55)) + (via (at 116.84 -13.97) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 55)) + (segment (start 116.84 16.51) (end 116.84 -13.97) (width 0.25) (layer B.Cu) (net 55)) + (segment (start 104.511201 -13.97) (end 103.95381 -13.412609) (width 0.25) (layer F.Cu) (net 55)) + (segment (start 116.84 -13.97) (end 104.511201 -13.97) (width 0.25) (layer F.Cu) (net 55)) + (via (at 109.22 -7.62) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 56)) + (segment (start 108.507391 -8.332609) (end 109.22 -7.62) (width 0.25) (layer F.Cu) (net 56)) + (segment (start 103.95381 -8.332609) (end 108.507391 -8.332609) (width 0.25) (layer F.Cu) (net 56)) + (via (at 109.22 24.13) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 56)) + (segment (start 109.22 -7.62) (end 109.22 24.13) (width 0.25) (layer B.Cu) (net 56)) + (segment (start 109.22 27.932766) (end 109.72381 28.436576) (width 0.25) (layer F.Cu) (net 56)) + (segment (start 109.22 24.13) (end 109.22 27.932766) (width 0.25) (layer F.Cu) (net 56)) + (segment (start 109.72381 34.636576) (end 109.72381 28.436576) (width 0.25) (layer F.Cu) (net 56)) + (segment (start 113.42381 34.636576) (end 113.42381 28.436576) (width 0.25) (layer F.Cu) (net 57)) + (via (at 115.57 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 57)) + (segment (start 115.073424 28.436576) (end 115.57 27.94) (width 0.25) (layer F.Cu) (net 57)) + (segment (start 113.42381 28.436576) (end 115.073424 28.436576) (width 0.25) (layer F.Cu) (net 57)) + + (zone (net 57) (net_name GND) (layer B.Cu) (tstamp 0) (hatch edge 0.508) + (connect_pads (clearance 0.508)) + (min_thickness 0.254) + (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 287.02 69.85) (xy -35.56 78.74) (xy -35.56 -78.74) (xy 220.98 -148.59) + ) + ) + (filled_polygon + (pts + (xy 235.329002 4.921599) (xy 217.592898 12.450129) (xy 217.580911 12.454355) (xy 217.560767 12.463768) (xy 217.54036 12.47243) + (xy 217.529235 12.478502) (xy 166.794015 36.185695) (xy 148.528528 43.938935) (xy 74.619095 43.938935) (xy 58.636465 37.154712) + (xy 67.45537 37.154712) (xy 67.466544 37.279296) (xy 67.501808 37.399306) (xy 67.559807 37.510131) (xy 67.638313 37.607511) + (xy 67.734308 37.687704) (xy 67.844104 37.747628) (xy 68.672559 38.099286) (xy 68.791935 38.13664) (xy 68.916305 38.149986) + (xy 68.931608 38.148613) (xy 68.937811 38.217771) (xy 68.973075 38.337781) (xy 69.031074 38.448606) (xy 69.10958 38.545986) + (xy 69.205575 38.626179) (xy 69.31537 38.686103) (xy 70.952028 39.380823) (xy 71.071405 39.418177) (xy 71.195775 39.431523) + (xy 71.320359 39.420349) (xy 71.440369 39.385085) (xy 71.551194 39.327086) (xy 71.648574 39.24858) (xy 71.728767 39.152585) + (xy 71.788691 39.04279) (xy 72.483411 37.406132) (xy 72.520765 37.286755) (xy 72.534111 37.162385) (xy 72.522937 37.037801) + (xy 72.487673 36.917791) (xy 72.429674 36.806966) (xy 72.351168 36.709586) (xy 72.255173 36.629393) (xy 72.145378 36.569469) + (xy 70.50872 35.874749) (xy 70.389343 35.837395) (xy 70.264973 35.824049) (xy 70.140389 35.835223) (xy 70.020379 35.870487) + (xy 69.909554 35.928486) (xy 69.855499 35.972064) (xy 69.845855 35.960101) (xy 69.74986 35.879908) (xy 69.640064 35.819984) + (xy 68.811609 35.468326) (xy 68.692233 35.430972) (xy 68.567863 35.417626) (xy 68.443279 35.4288) (xy 68.323269 35.464064) + (xy 68.212444 35.522063) (xy 68.115064 35.600569) (xy 68.034871 35.696564) (xy 67.974947 35.80636) (xy 67.50607 36.910966) + (xy 67.468716 37.030342) (xy 67.45537 37.154712) (xy 58.636465 37.154712) (xy 56.353662 36.18572) (xy 19.045059 18.752422) + (xy 30.509772 18.752422) (xy 30.509772 18.975998) (xy 30.553389 19.195277) (xy 30.638948 19.401834) (xy 30.76316 19.58773) + (xy 30.921252 19.745822) (xy 31.107148 19.870034) (xy 31.313705 19.955593) (xy 31.532984 19.99921) (xy 31.75656 19.99921) + (xy 31.975839 19.955593) (xy 32.050623 19.924616) (xy 33.271286 19.924616) (xy 33.271286 20.148192) (xy 33.314903 20.367471) + (xy 33.400462 20.574028) (xy 33.524674 20.759924) (xy 33.682766 20.918016) (xy 33.868662 21.042228) (xy 34.075219 21.127787) + (xy 34.294498 21.171404) (xy 34.518074 21.171404) (xy 34.737353 21.127787) (xy 34.94391 21.042228) (xy 35.129806 20.918016) + (xy 35.287898 20.759924) (xy 35.41211 20.574028) (xy 35.497669 20.367471) (xy 35.541286 20.148192) (xy 35.541286 19.924616) + (xy 35.497669 19.705337) (xy 35.41211 19.49878) (xy 35.287898 19.312884) (xy 35.129806 19.154792) (xy 34.94391 19.03058) + (xy 34.737353 18.945021) (xy 34.518074 18.901404) (xy 34.294498 18.901404) (xy 34.075219 18.945021) (xy 33.868662 19.03058) + (xy 33.682766 19.154792) (xy 33.524674 19.312884) (xy 33.400462 19.49878) (xy 33.314903 19.705337) (xy 33.271286 19.924616) + (xy 32.050623 19.924616) (xy 32.182396 19.870034) (xy 32.368292 19.745822) (xy 32.526384 19.58773) (xy 32.650596 19.401834) + (xy 32.736155 19.195277) (xy 32.779772 18.975998) (xy 32.779772 18.752422) (xy 32.736155 18.533143) (xy 32.650596 18.326586) + (xy 32.526384 18.14069) (xy 32.368292 17.982598) (xy 32.182396 17.858386) (xy 31.975839 17.772827) (xy 31.75656 17.72921) + (xy 31.532984 17.72921) (xy 31.313705 17.772827) (xy 31.107148 17.858386) (xy 30.921252 17.982598) (xy 30.76316 18.14069) + (xy 30.638948 18.326586) (xy 30.553389 18.533143) (xy 30.509772 18.752422) (xy 19.045059 18.752422) (xy 5.618404 12.478511) + (xy 5.60726 12.472429) (xy 5.586819 12.463752) (xy 5.566708 12.454355) (xy 5.554739 12.450135) (xy 4.921583 12.181376) + (xy 36.774228 12.181376) (xy 36.785402 12.30596) (xy 36.820666 12.42597) (xy 36.878665 12.536795) (xy 36.957171 12.634175) + (xy 37.053166 12.714368) (xy 37.162962 12.774292) (xy 37.991417 13.12595) (xy 38.110793 13.163304) (xy 38.235163 13.17665) + (xy 38.250466 13.175277) (xy 38.256669 13.244435) (xy 38.291933 13.364445) (xy 38.349932 13.47527) (xy 38.428438 13.57265) + (xy 38.524433 13.652843) (xy 38.634228 13.712767) (xy 40.270886 14.407487) (xy 40.390263 14.444841) (xy 40.514633 14.458187) + (xy 40.639217 14.447013) (xy 40.759227 14.411749) (xy 40.870052 14.35375) (xy 40.967432 14.275244) (xy 41.047625 14.179249) + (xy 41.107549 14.069454) (xy 41.802269 12.432796) (xy 41.839623 12.313419) (xy 41.852969 12.189049) (xy 41.841795 12.064465) + (xy 41.806531 11.944455) (xy 41.748532 11.83363) (xy 41.670026 11.73625) (xy 41.574031 11.656057) (xy 41.464236 11.596133) + (xy 39.827578 10.901413) (xy 39.708201 10.864059) (xy 39.583831 10.850713) (xy 39.459247 10.861887) (xy 39.339237 10.897151) + (xy 39.228412 10.95515) (xy 39.174357 10.998728) (xy 39.164713 10.986765) (xy 39.068718 10.906572) (xy 38.958922 10.846648) + (xy 38.130467 10.49499) (xy 38.011091 10.457636) (xy 37.886721 10.44429) (xy 37.762137 10.455464) (xy 37.642127 10.490728) + (xy 37.531302 10.548727) (xy 37.433922 10.627233) (xy 37.353729 10.723228) (xy 37.293805 10.833024) (xy 36.824928 11.93763) + (xy 36.787574 12.057006) (xy 36.774228 12.181376) (xy 4.921583 12.181376) (xy -1.725144 9.360008) (xy 17.33098 9.360008) + (xy 17.342154 9.484592) (xy 17.377418 9.604602) (xy 17.435417 9.715427) (xy 17.513923 9.812807) (xy 17.609918 9.893) + (xy 17.719714 9.952924) (xy 18.548169 10.304582) (xy 18.667545 10.341936) (xy 18.791915 10.355282) (xy 18.807218 10.353909) + (xy 18.813421 10.423067) (xy 18.848685 10.543077) (xy 18.906684 10.653902) (xy 18.98519 10.751282) (xy 19.081185 10.831475) + (xy 19.19098 10.891399) (xy 20.827638 11.586119) (xy 20.947015 11.623473) (xy 21.071385 11.636819) (xy 21.195969 11.625645) + (xy 21.315979 11.590381) (xy 21.426804 11.532382) (xy 21.524184 11.453876) (xy 21.604377 11.357881) (xy 21.664301 11.248086) + (xy 22.359021 9.611428) (xy 22.396375 9.492051) (xy 22.409721 9.367681) (xy 22.398547 9.243097) (xy 22.363283 9.123087) + (xy 22.305284 9.012262) (xy 22.226778 8.914882) (xy 22.130783 8.834689) (xy 22.020988 8.774765) (xy 20.38433 8.080045) + (xy 20.264953 8.042691) (xy 20.140583 8.029345) (xy 20.015999 8.040519) (xy 19.895989 8.075783) (xy 19.785164 8.133782) + (xy 19.731109 8.17736) (xy 19.721465 8.165397) (xy 19.62547 8.085204) (xy 19.515674 8.02528) (xy 18.687219 7.673622) + (xy 18.567843 7.636268) (xy 18.443473 7.622922) (xy 18.318889 7.634096) (xy 18.198879 7.66936) (xy 18.088054 7.727359) + (xy 17.990674 7.805865) (xy 17.910481 7.90186) (xy 17.850557 8.011656) (xy 17.38168 9.116262) (xy 17.344326 9.235638) + (xy 17.33098 9.360008) (xy -1.725144 9.360008) (xy -10.540443 5.618136) (xy -1.721537 5.618136) (xy -1.710363 5.74272) + (xy -1.675099 5.86273) (xy -1.6171 5.973555) (xy -1.538594 6.070935) (xy -1.442599 6.151128) (xy -1.332803 6.211052) + (xy -0.504348 6.56271) (xy -0.384972 6.600064) (xy -0.260602 6.61341) (xy -0.245299 6.612037) (xy -0.239096 6.681195) + (xy -0.203832 6.801205) (xy -0.145833 6.91203) (xy -0.067327 7.00941) (xy 0.028668 7.089603) (xy 0.138463 7.149527) + (xy 1.775121 7.844247) (xy 1.894498 7.881601) (xy 2.018868 7.894947) (xy 2.143452 7.883773) (xy 2.263462 7.848509) + (xy 2.374287 7.79051) (xy 2.471667 7.712004) (xy 2.55186 7.616009) (xy 2.611784 7.506214) (xy 2.954275 6.699355) + (xy 12.004238 6.699355) (xy 12.004238 7.012065) (xy 12.065245 7.318767) (xy 12.184914 7.607673) (xy 12.358646 7.867682) + (xy 12.579766 8.088802) (xy 12.839775 8.262534) (xy 13.128681 8.382203) (xy 13.435383 8.44321) (xy 13.748093 8.44321) + (xy 14.054795 8.382203) (xy 14.326387 8.269706) (xy 14.339752 8.31519) (xy 14.397751 8.426015) (xy 14.476257 8.523395) + (xy 14.572252 8.603588) (xy 14.682048 8.663512) (xy 15.510503 9.01517) (xy 15.629879 9.052524) (xy 15.754249 9.06587) + (xy 15.878833 9.054696) (xy 15.998843 9.019432) (xy 16.109668 8.961433) (xy 16.207048 8.882927) (xy 16.287241 8.786932) + (xy 16.347165 8.677136) (xy 16.816042 7.57253) (xy 16.853396 7.453154) (xy 16.866742 7.328784) (xy 16.855568 7.2042) + (xy 16.820304 7.08419) (xy 16.762305 6.973365) (xy 16.683799 6.875985) (xy 16.587804 6.795792) (xy 16.478008 6.735868) + (xy 15.649553 6.38421) (xy 15.530177 6.346856) (xy 15.405807 6.33351) (xy 15.281223 6.344684) (xy 15.161213 6.379948) + (xy 15.119995 6.401519) (xy 15.118231 6.392653) (xy 14.998562 6.103747) (xy 14.82483 5.843738) (xy 14.60371 5.622618) + (xy 14.343701 5.448886) (xy 14.054795 5.329217) (xy 13.748093 5.26821) (xy 13.435383 5.26821) (xy 13.128681 5.329217) + (xy 12.839775 5.448886) (xy 12.579766 5.622618) (xy 12.358646 5.843738) (xy 12.184914 6.103747) (xy 12.065245 6.392653) + (xy 12.004238 6.699355) (xy 2.954275 6.699355) (xy 3.306504 5.869556) (xy 3.343858 5.750179) (xy 3.357204 5.625809) + (xy 3.34603 5.501225) (xy 3.310766 5.381215) (xy 3.252767 5.27039) (xy 3.174261 5.17301) (xy 3.078266 5.092817) + (xy 2.968471 5.032893) (xy 1.331813 4.338173) (xy 1.212436 4.300819) (xy 1.088066 4.287473) (xy 0.963482 4.298647) + (xy 0.843472 4.333911) (xy 0.732647 4.39191) (xy 0.678592 4.435488) (xy 0.668948 4.423525) (xy 0.572953 4.343332) + (xy 0.463157 4.283408) (xy -0.365298 3.93175) (xy -0.484674 3.894396) (xy -0.609044 3.88105) (xy -0.733628 3.892224) + (xy -0.853638 3.927488) (xy -0.964463 3.985487) (xy -1.061843 4.063993) (xy -1.142036 4.159988) (xy -1.20196 4.269784) + (xy -1.670837 5.37439) (xy -1.708191 5.493766) (xy -1.721537 5.618136) (xy -10.540443 5.618136) (xy -12.181384 4.921598) + (xy -7.442392 -6.242766) (xy -7.442392 -3.856412) (xy -7.430132 -3.73193) (xy -7.393822 -3.612232) (xy -7.334857 -3.501918) + (xy -7.255505 -3.405227) (xy -7.158814 -3.325875) (xy -7.0485 -3.26691) (xy -6.928802 -3.2306) (xy -6.80432 -3.21834) + (xy -6.612066 -3.21834) (xy -6.612065 2.02006) (xy -6.693871 2.101866) (xy -6.867603 2.361875) (xy -6.987272 2.650781) + (xy -7.048279 2.957483) (xy -7.048279 3.270193) (xy -6.987272 3.576895) (xy -6.867603 3.865801) (xy -6.693871 4.12581) + (xy -6.472751 4.34693) (xy -6.212742 4.520662) (xy -5.923836 4.640331) (xy -5.617134 4.701338) (xy -5.304424 4.701338) + (xy -4.997722 4.640331) (xy -4.72613 4.527834) (xy -4.712765 4.573318) (xy -4.654766 4.684143) (xy -4.57626 4.781523) + (xy -4.480265 4.861716) (xy -4.370469 4.92164) (xy -3.542014 5.273298) (xy -3.422638 5.310652) (xy -3.298268 5.323998) + (xy -3.173684 5.312824) (xy -3.053674 5.27756) (xy -2.942849 5.219561) (xy -2.845469 5.141055) (xy -2.765276 5.04506) + (xy -2.705352 4.935264) (xy -2.236475 3.830658) (xy -2.199121 3.711282) (xy -2.185775 3.586912) (xy -2.196949 3.462328) + (xy -2.232213 3.342318) (xy -2.290212 3.231493) (xy -2.368718 3.134113) (xy -2.464713 3.05392) (xy -2.574509 2.993996) + (xy -3.402964 2.642338) (xy -3.52234 2.604984) (xy -3.64671 2.591638) (xy -3.753964 2.601258) (xy -3.776468 2.573837) + (xy -3.892193 2.478864) (xy -4.024222 2.408292) (xy -4.036238 2.404647) (xy -4.053955 2.361875) (xy -4.227687 2.101866) + (xy -4.448807 1.880746) (xy -4.708816 1.707014) (xy -4.997722 1.587345) (xy -5.092066 1.568579) (xy -5.092066 -0.552631) + (xy -4.822513 -0.499014) (xy -4.529817 -0.499014) (xy -4.242744 -0.556116) (xy -3.972327 -0.668126) (xy -3.728959 -0.83074) + (xy -3.521991 -1.037708) (xy -3.359377 -1.281076) (xy -3.247367 -1.551493) (xy -3.198142 -1.798966) (xy -3.137422 -1.773815) + (xy -2.724945 -1.691768) (xy -2.304387 -1.691768) (xy -1.956948 -1.760878) (xy -2.042 -1.675826) (xy -2.329701 -1.245251) + (xy -2.527873 -0.766822) (xy -2.6289 -0.258924) (xy -2.6289 0.258924) (xy -2.527873 0.766822) (xy -2.329701 1.245251) + (xy -2.042 1.675826) (xy -1.675826 2.042) (xy -1.245251 2.329701) (xy -0.766822 2.527873) (xy -0.258924 2.6289) + (xy 0.258924 2.6289) (xy 0.766822 2.527873) (xy 1.245251 2.329701) (xy 1.675826 2.042) (xy 1.87926 1.838566) + (xy 3.190265 1.838566) (xy 3.190265 2.131262) (xy 3.247367 2.418335) (xy 3.359377 2.688752) (xy 3.521991 2.93212) + (xy 3.728959 3.139088) (xy 3.972327 3.301702) (xy 4.242744 3.413712) (xy 4.529817 3.470814) (xy 4.822513 3.470814) + (xy 5.109586 3.413712) (xy 5.380003 3.301702) (xy 5.623371 3.139088) (xy 5.830339 2.93212) (xy 5.992953 2.688752) + (xy 6.104963 2.418335) (xy 6.162065 2.131262) (xy 6.162065 1.838566) (xy 6.104963 1.551493) (xy 5.992953 1.281076) + (xy 5.830339 1.037708) (xy 5.623371 0.83074) (xy 5.380003 0.668126) (xy 5.109586 0.556116) (xy 4.822513 0.499014) + (xy 4.529817 0.499014) (xy 4.242744 0.556116) (xy 3.972327 0.668126) (xy 3.728959 0.83074) (xy 3.521991 1.037708) + (xy 3.359377 1.281076) (xy 3.247367 1.551493) (xy 3.190265 1.838566) (xy 1.87926 1.838566) (xy 2.042 1.675826) + (xy 2.329701 1.245251) (xy 2.527873 0.766822) (xy 2.6289 0.258924) (xy 2.6289 -0.258924) (xy 2.527873 -0.766822) + (xy 2.329701 -1.245251) (xy 2.042 -1.675826) (xy 1.675826 -2.042) (xy 1.245251 -2.329701) (xy 0.766822 -2.527873) + (xy 0.258924 -2.6289) (xy -0.258924 -2.6289) (xy -0.766822 -2.527873) (xy -0.833184 -2.500385) (xy -0.622654 -2.815466) + (xy -0.461713 -3.204012) (xy -0.379666 -3.616489) (xy -0.379666 -4.037047) (xy -0.461713 -4.449524) (xy -0.622654 -4.83807) + (xy -0.856303 -5.187751) (xy -1.153683 -5.485131) (xy -1.503364 -5.71878) (xy -1.89191 -5.879721) (xy -2.304387 -5.961768) + (xy -2.724945 -5.961768) (xy -3.137422 -5.879721) (xy -3.525968 -5.71878) (xy -3.616248 -5.658457) (xy -3.616248 -6.356412) + (xy -3.628508 -6.480894) (xy -3.664818 -6.600592) (xy -3.723783 -6.710906) (xy -3.803135 -6.807597) (xy -3.899826 -6.886949) + (xy -4.01014 -6.945914) (xy -4.129838 -6.982224) (xy -4.25432 -6.994484) (xy -6.80432 -6.994484) (xy -6.928802 -6.982224) + (xy -7.0485 -6.945914) (xy -7.158814 -6.886949) (xy -7.174373 -6.87418) (xy -5.053156 -11.871456) (xy 5.702355 -11.871456) + (xy 5.713529 -11.746872) (xy 5.748793 -11.626862) (xy 5.806792 -11.516037) (xy 5.885298 -11.418657) (xy 5.981293 -11.338464) + (xy 6.091089 -11.27854) (xy 6.919544 -10.926882) (xy 7.03892 -10.889528) (xy 7.16329 -10.876182) (xy 7.178593 -10.877555) + (xy 7.184796 -10.808397) (xy 7.22006 -10.688387) (xy 7.278059 -10.577562) (xy 7.356565 -10.480182) (xy 7.45256 -10.399989) + (xy 7.562355 -10.340065) (xy 9.199013 -9.645345) (xy 9.31839 -9.607991) (xy 9.44276 -9.594645) (xy 9.567344 -9.605819) + (xy 9.687354 -9.641083) (xy 9.798179 -9.699082) (xy 9.895559 -9.777588) (xy 9.975752 -9.873583) (xy 10.035676 -9.983378) + (xy 10.730396 -11.620036) (xy 10.76775 -11.739413) (xy 10.781096 -11.863783) (xy 10.769922 -11.988367) (xy 10.734658 -12.108377) + (xy 10.676659 -12.219202) (xy 10.598153 -12.316582) (xy 10.502158 -12.396775) (xy 10.392363 -12.456699) (xy 8.755705 -13.151419) + (xy 8.636328 -13.188773) (xy 8.511958 -13.202119) (xy 8.387374 -13.190945) (xy 8.267364 -13.155681) (xy 8.156539 -13.097682) + (xy 8.102484 -13.054104) (xy 8.09284 -13.066067) (xy 7.996845 -13.14626) (xy 7.887049 -13.206184) (xy 7.058594 -13.557842) + (xy 6.939218 -13.595196) (xy 6.814848 -13.608542) (xy 6.690264 -13.597368) (xy 6.570254 -13.562104) (xy 6.459429 -13.504105) + (xy 6.362049 -13.425599) (xy 6.281856 -13.329604) (xy 6.221932 -13.219808) (xy 5.753055 -12.115202) (xy 5.715701 -11.995826) + (xy 5.702355 -11.871456) (xy -5.053156 -11.871456) (xy -0.018501 -23.732357) (xy -0.018501 -21.346004) (xy -0.006241 -21.221522) + (xy 0.030069 -21.101824) (xy 0.089034 -20.99151) (xy 0.168386 -20.894819) (xy 0.265077 -20.815467) (xy 0.375391 -20.756502) + (xy 0.495089 -20.720192) (xy 0.619571 -20.707932) (xy 0.814575 -20.707932) (xy 0.811825 -20.680015) (xy 0.811825 -20.680005) + (xy 0.808149 -20.642683) (xy 0.811825 -20.60536) (xy 0.811826 -15.469531) (xy 0.730021 -15.387726) (xy 0.556289 -15.127717) + (xy 0.43662 -14.838811) (xy 0.375613 -14.532109) (xy 0.375613 -14.219399) (xy 0.43662 -13.912697) (xy 0.556289 -13.623791) + (xy 0.730021 -13.363782) (xy 0.951141 -13.142662) (xy 1.21115 -12.96893) (xy 1.500056 -12.849261) (xy 1.806758 -12.788254) + (xy 2.119468 -12.788254) (xy 2.42617 -12.849261) (xy 2.697762 -12.961758) (xy 2.711127 -12.916274) (xy 2.769126 -12.805449) + (xy 2.847632 -12.708069) (xy 2.943627 -12.627876) (xy 3.053423 -12.567952) (xy 3.881878 -12.216294) (xy 4.001254 -12.17894) + (xy 4.125624 -12.165594) (xy 4.250208 -12.176768) (xy 4.370218 -12.212032) (xy 4.481043 -12.270031) (xy 4.578423 -12.348537) + (xy 4.658616 -12.444532) (xy 4.71854 -12.554328) (xy 5.187417 -13.658934) (xy 5.224771 -13.77831) (xy 5.238117 -13.90268) + (xy 5.226943 -14.027264) (xy 5.191679 -14.147274) (xy 5.13368 -14.258099) (xy 5.055174 -14.355479) (xy 4.959179 -14.435672) + (xy 4.849383 -14.495596) (xy 4.020928 -14.847254) (xy 3.901552 -14.884608) (xy 3.777182 -14.897954) (xy 3.669928 -14.888334) + (xy 3.647424 -14.915755) (xy 3.531699 -15.010728) (xy 3.39967 -15.0813) (xy 3.387654 -15.084945) (xy 3.369937 -15.127717) + (xy 3.196205 -15.387726) (xy 2.975085 -15.608846) (xy 2.715076 -15.782578) (xy 2.42617 -15.902247) (xy 2.331825 -15.921013) + (xy 2.331825 -18.042223) (xy 2.601378 -17.988606) (xy 2.894074 -17.988606) (xy 3.181147 -18.045708) (xy 3.451564 -18.157718) + (xy 3.694932 -18.320332) (xy 3.9019 -18.5273) (xy 4.064514 -18.770668) (xy 4.176524 -19.041085) (xy 4.225749 -19.288558) + (xy 4.286469 -19.263407) (xy 4.698946 -19.18136) (xy 5.119504 -19.18136) (xy 5.466943 -19.25047) (xy 5.381891 -19.165418) + (xy 5.09419 -18.734843) (xy 4.896018 -18.256414) (xy 4.794991 -17.748516) (xy 4.794991 -17.230668) (xy 4.896018 -16.72277) + (xy 5.09419 -16.244341) (xy 5.381891 -15.813766) (xy 5.748065 -15.447592) (xy 6.17864 -15.159891) (xy 6.657069 -14.961719) + (xy 7.164967 -14.860692) (xy 7.682815 -14.860692) (xy 8.190713 -14.961719) (xy 8.669142 -15.159891) (xy 9.099717 -15.447592) + (xy 9.303151 -15.651026) (xy 10.614156 -15.651026) (xy 10.614156 -15.35833) (xy 10.671258 -15.071257) (xy 10.783268 -14.80084) + (xy 10.945882 -14.557472) (xy 11.15285 -14.350504) (xy 11.396218 -14.18789) (xy 11.666635 -14.07588) (xy 11.953708 -14.018778) + (xy 12.246404 -14.018778) (xy 12.533477 -14.07588) (xy 12.803894 -14.18789) (xy 13.047262 -14.350504) (xy 13.25423 -14.557472) + (xy 13.416844 -14.80084) (xy 13.528854 -15.071257) (xy 13.585956 -15.35833) (xy 13.585956 -15.651026) (xy 13.528854 -15.938099) + (xy 13.416844 -16.208516) (xy 13.25423 -16.451884) (xy 13.047262 -16.658852) (xy 12.803894 -16.821466) (xy 12.533477 -16.933476) + (xy 12.246404 -16.990578) (xy 11.953708 -16.990578) (xy 11.666635 -16.933476) (xy 11.396218 -16.821466) (xy 11.15285 -16.658852) + (xy 10.945882 -16.451884) (xy 10.783268 -16.208516) (xy 10.671258 -15.938099) (xy 10.614156 -15.651026) (xy 9.303151 -15.651026) + (xy 9.465891 -15.813766) (xy 9.753592 -16.244341) (xy 9.951764 -16.72277) (xy 10.052791 -17.230668) (xy 10.052791 -17.748516) + (xy 9.951764 -18.256414) (xy 9.753592 -18.734843) (xy 9.465891 -19.165418) (xy 9.099717 -19.531592) (xy 8.669142 -19.819293) + (xy 8.190713 -20.017465) (xy 7.682815 -20.118492) (xy 7.164967 -20.118492) (xy 6.657069 -20.017465) (xy 6.590707 -19.989977) + (xy 6.801237 -20.305058) (xy 6.962178 -20.693604) (xy 7.044225 -21.106081) (xy 7.044225 -21.526639) (xy 6.962178 -21.939116) + (xy 6.801237 -22.327662) (xy 6.567588 -22.677343) (xy 6.270208 -22.974723) (xy 5.920527 -23.208372) (xy 5.531981 -23.369313) + (xy 5.119504 -23.45136) (xy 4.698946 -23.45136) (xy 4.286469 -23.369313) (xy 3.897923 -23.208372) (xy 3.807643 -23.148049) + (xy 3.807643 -23.846004) (xy 3.795383 -23.970486) (xy 3.759073 -24.090184) (xy 3.700108 -24.200498) (xy 3.620756 -24.297189) + (xy 3.524065 -24.376541) (xy 3.413751 -24.435506) (xy 3.294053 -24.471816) (xy 3.169571 -24.484076) (xy 0.619571 -24.484076) + (xy 0.495089 -24.471816) (xy 0.375391 -24.435506) (xy 0.265077 -24.376541) (xy 0.249519 -24.363773) (xy 7.405391 -41.22195) + (xy 7.405391 -38.835596) (xy 7.417651 -38.711114) (xy 7.453961 -38.591416) (xy 7.512926 -38.481102) (xy 7.592278 -38.384411) + (xy 7.688969 -38.305059) (xy 7.799283 -38.246094) (xy 7.918981 -38.209784) (xy 8.043463 -38.197524) (xy 8.235717 -38.197524) + (xy 8.235718 -32.959124) (xy 8.153912 -32.877318) (xy 7.98018 -32.617309) (xy 7.860511 -32.328403) (xy 7.799504 -32.021701) + (xy 7.799504 -31.708991) (xy 7.860511 -31.402289) (xy 7.98018 -31.113383) (xy 8.153912 -30.853374) (xy 8.375032 -30.632254) + (xy 8.635041 -30.458522) (xy 8.923947 -30.338853) (xy 9.230649 -30.277846) (xy 9.543359 -30.277846) (xy 9.850061 -30.338853) + (xy 10.121653 -30.45135) (xy 10.135018 -30.405866) (xy 10.193017 -30.295041) (xy 10.271523 -30.197661) (xy 10.367518 -30.117468) + (xy 10.477314 -30.057544) (xy 11.305769 -29.705886) (xy 11.425145 -29.668532) (xy 11.549515 -29.655186) (xy 11.674099 -29.66636) + (xy 11.794109 -29.701624) (xy 11.904934 -29.759623) (xy 12.002314 -29.838129) (xy 12.082507 -29.934124) (xy 12.142431 -30.04392) + (xy 12.611308 -31.148526) (xy 12.648662 -31.267902) (xy 12.662008 -31.392272) (xy 12.650834 -31.516856) (xy 12.61557 -31.636866) + (xy 12.557571 -31.747691) (xy 12.479065 -31.845071) (xy 12.38307 -31.925264) (xy 12.273274 -31.985188) (xy 11.444819 -32.336846) + (xy 11.325443 -32.3742) (xy 11.201073 -32.387546) (xy 11.093819 -32.377926) (xy 11.071315 -32.405347) (xy 10.95559 -32.50032) + (xy 10.823561 -32.570892) (xy 10.811545 -32.574537) (xy 10.793828 -32.617309) (xy 10.620096 -32.877318) (xy 10.398976 -33.098438) + (xy 10.138967 -33.27217) (xy 9.850061 -33.391839) (xy 9.755717 -33.410605) (xy 9.755717 -35.531815) (xy 10.02527 -35.478198) + (xy 10.317966 -35.478198) (xy 10.605039 -35.5353) (xy 10.875456 -35.64731) (xy 11.118824 -35.809924) (xy 11.325792 -36.016892) + (xy 11.488406 -36.26026) (xy 11.600416 -36.530677) (xy 11.649641 -36.77815) (xy 11.710361 -36.752999) (xy 12.122838 -36.670952) + (xy 12.543396 -36.670952) (xy 12.890835 -36.740062) (xy 12.805783 -36.65501) (xy 12.518082 -36.224435) (xy 12.31991 -35.746006) + (xy 12.218883 -35.238108) (xy 12.218883 -34.72026) (xy 12.31991 -34.212362) (xy 12.518082 -33.733933) (xy 12.805783 -33.303358) + (xy 13.171957 -32.937184) (xy 13.602532 -32.649483) (xy 14.080961 -32.451311) (xy 14.588202 -32.350415) (xy 12.928282 -30.690494) + (xy 12.899284 -30.666696) (xy 12.875486 -30.637698) (xy 12.875485 -30.637697) (xy 12.80431 -30.550971) (xy 12.733738 -30.418941) + (xy 12.709445 -30.338853) (xy 12.690282 -30.275681) (xy 12.679284 -30.164028) (xy 12.679284 -30.164017) (xy 12.675608 -30.126695) + (xy 12.679284 -30.089373) (xy 12.679284 -29.258178) (xy 12.675608 -29.220856) (xy 12.679284 -29.183534) (xy 12.679284 -29.183524) + (xy 12.690281 -29.071871) (xy 12.729113 -28.943857) (xy 12.733738 -28.92861) (xy 12.80431 -28.79658) (xy 12.83511 -28.759051) + (xy 12.899283 -28.680855) (xy 12.928287 -28.657052) (xy 14.026395 -27.558943) (xy 14.026394 -21.771177) (xy 13.804789 -21.771177) + (xy 13.79984 -21.796056) (xy 13.638899 -22.184602) (xy 13.40525 -22.534283) (xy 13.10787 -22.831663) (xy 12.758189 -23.065312) + (xy 12.369643 -23.226253) (xy 11.957166 -23.3083) (xy 11.536608 -23.3083) (xy 11.124131 -23.226253) (xy 10.735585 -23.065312) + (xy 10.385904 -22.831663) (xy 10.088524 -22.534283) (xy 9.854875 -22.184602) (xy 9.693934 -21.796056) (xy 9.611887 -21.383579) + (xy 9.611887 -20.963021) (xy 9.693934 -20.550544) (xy 9.854875 -20.161998) (xy 10.088524 -19.812317) (xy 10.385904 -19.514937) + (xy 10.735585 -19.281288) (xy 11.124131 -19.120347) (xy 11.536608 -19.0383) (xy 11.957166 -19.0383) (xy 12.369643 -19.120347) + (xy 12.758189 -19.281288) (xy 12.873322 -19.358217) (xy 12.873322 -18.633105) (xy 12.885582 -18.508623) (xy 12.921892 -18.388925) + (xy 12.980857 -18.278611) (xy 13.060209 -18.18192) (xy 13.1569 -18.102568) (xy 13.267214 -18.043603) (xy 13.386912 -18.007293) + (xy 13.511394 -17.995033) (xy 14.026395 -17.995033) (xy 14.026394 -10.132206) (xy 8.175774 -4.281585) (xy 6.380898 -4.281585) + (xy 6.375949 -4.306464) (xy 6.215008 -4.69501) (xy 5.981359 -5.044691) (xy 5.683979 -5.342071) (xy 5.334298 -5.57572) + (xy 4.945752 -5.736661) (xy 4.533275 -5.818708) (xy 4.112717 -5.818708) (xy 3.70024 -5.736661) (xy 3.311694 -5.57572) + (xy 2.962013 -5.342071) (xy 2.664633 -5.044691) (xy 2.430984 -4.69501) (xy 2.270043 -4.306464) (xy 2.187996 -3.893987) + (xy 2.187996 -3.473429) (xy 2.270043 -3.060952) (xy 2.430984 -2.672406) (xy 2.664633 -2.322725) (xy 2.962013 -2.025345) + (xy 3.311694 -1.791696) (xy 3.70024 -1.630755) (xy 4.112717 -1.548708) (xy 4.533275 -1.548708) (xy 4.945752 -1.630755) + (xy 5.334298 -1.791696) (xy 5.449431 -1.868625) (xy 5.449431 -1.143513) (xy 5.461691 -1.019031) (xy 5.498001 -0.899333) + (xy 5.556966 -0.789019) (xy 5.636318 -0.692328) (xy 5.733009 -0.612976) (xy 5.843323 -0.554011) (xy 5.963021 -0.517701) + (xy 6.087503 -0.505441) (xy 8.637503 -0.505441) (xy 8.761985 -0.517701) (xy 8.881683 -0.554011) (xy 8.991997 -0.612976) + (xy 9.088688 -0.692328) (xy 9.16804 -0.789019) (xy 9.227005 -0.899333) (xy 9.263315 -1.019031) (xy 9.275575 -1.143513) + (xy 9.275575 -2.61454) (xy 11.610125 -2.61454) (xy 11.610125 -0.11454) (xy 11.622385 0.009942) (xy 11.658695 0.12964) + (xy 11.71766 0.239954) (xy 11.797012 0.336645) (xy 11.893703 0.415997) (xy 12.004017 0.474962) (xy 12.123715 0.511272) + (xy 12.248197 0.523532) (xy 13.547754 0.523532) (xy 13.429146 0.602784) (xy 13.222178 0.809752) (xy 13.059564 1.05312) + (xy 12.947554 1.323537) (xy 12.890452 1.61061) (xy 12.890452 1.903306) (xy 12.947554 2.190379) (xy 13.059564 2.460796) + (xy 13.222178 2.704164) (xy 13.429146 2.911132) (xy 13.672514 3.073746) (xy 13.942931 3.185756) (xy 14.230004 3.242858) + (xy 14.5227 3.242858) (xy 14.809773 3.185756) (xy 15.08019 3.073746) (xy 15.323558 2.911132) (xy 15.530526 2.704164) + (xy 15.69314 2.460796) (xy 15.80515 2.190379) (xy 15.854375 1.942906) (xy 15.915095 1.968057) (xy 16.327572 2.050104) + (xy 16.74813 2.050104) (xy 17.095569 1.980994) (xy 17.010517 2.066046) (xy 16.722816 2.496621) (xy 16.524644 2.97505) + (xy 16.423617 3.482948) (xy 16.423617 4.000796) (xy 16.524644 4.508694) (xy 16.722816 4.987123) (xy 17.010517 5.417698) + (xy 17.376691 5.783872) (xy 17.807266 6.071573) (xy 18.285695 6.269745) (xy 18.793593 6.370772) (xy 19.311441 6.370772) + (xy 19.819339 6.269745) (xy 20.297768 6.071573) (xy 20.728343 5.783872) (xy 20.931777 5.580438) (xy 22.242782 5.580438) + (xy 22.242782 5.873134) (xy 22.299884 6.160207) (xy 22.411894 6.430624) (xy 22.574508 6.673992) (xy 22.781476 6.88096) + (xy 23.024844 7.043574) (xy 23.295261 7.155584) (xy 23.582334 7.212686) (xy 23.87503 7.212686) (xy 24.162103 7.155584) + (xy 24.43252 7.043574) (xy 24.675888 6.88096) (xy 24.882856 6.673992) (xy 25.04547 6.430624) (xy 25.15748 6.160207) + (xy 25.214582 5.873134) (xy 25.214582 5.580438) (xy 25.15748 5.293365) (xy 25.04547 5.022948) (xy 24.882856 4.77958) + (xy 24.675888 4.572612) (xy 24.43252 4.409998) (xy 24.162103 4.297988) (xy 23.87503 4.240886) (xy 23.582334 4.240886) + (xy 23.295261 4.297988) (xy 23.024844 4.409998) (xy 22.781476 4.572612) (xy 22.574508 4.77958) (xy 22.411894 5.022948) + (xy 22.299884 5.293365) (xy 22.242782 5.580438) (xy 20.931777 5.580438) (xy 21.094517 5.417698) (xy 21.382218 4.987123) + (xy 21.58039 4.508694) (xy 21.681417 4.000796) (xy 21.681417 3.482948) (xy 21.58039 2.97505) (xy 21.382218 2.496621) + (xy 21.094517 2.066046) (xy 20.728343 1.699872) (xy 20.297768 1.412171) (xy 19.819339 1.213999) (xy 19.311441 1.112972) + (xy 18.793593 1.112972) (xy 18.285695 1.213999) (xy 18.219333 1.241487) (xy 18.429863 0.926406) (xy 18.590804 0.53786) + (xy 18.672851 0.125383) (xy 18.672851 -0.295175) (xy 18.590804 -0.707652) (xy 18.429863 -1.096198) (xy 18.196214 -1.445879) + (xy 17.898834 -1.743259) (xy 17.549153 -1.976908) (xy 17.160607 -2.137849) (xy 16.74813 -2.219896) (xy 16.327572 -2.219896) + (xy 15.915095 -2.137849) (xy 15.526549 -1.976908) (xy 15.436269 -1.916585) (xy 15.436269 -2.61454) (xy 15.424009 -2.739022) + (xy 15.387699 -2.85872) (xy 15.328734 -2.969034) (xy 15.249382 -3.065725) (xy 15.152691 -3.145077) (xy 15.042377 -3.204042) + (xy 14.922679 -3.240352) (xy 14.798197 -3.252612) (xy 12.248197 -3.252612) (xy 12.123715 -3.240352) (xy 12.004017 -3.204042) + (xy 11.893703 -3.145077) (xy 11.797012 -3.065725) (xy 11.71766 -2.969034) (xy 11.658695 -2.85872) (xy 11.622385 -2.739022) + (xy 11.610125 -2.61454) (xy 9.275575 -2.61454) (xy 9.275575 -3.231784) (xy 15.297398 -9.253606) (xy 15.326395 -9.277403) + (xy 15.421368 -9.393128) (xy 15.49194 -9.525157) (xy 15.535397 -9.668418) (xy 15.546394 -9.780071) (xy 15.546394 -9.78008) + (xy 15.55007 -9.817403) (xy 15.546394 -9.854726) (xy 15.546394 -10.790237) (xy 19.42813 -10.790237) (xy 19.42813 -10.477527) + (xy 19.489137 -10.170825) (xy 19.608806 -9.881919) (xy 19.782538 -9.62191) (xy 20.003658 -9.40079) (xy 20.263667 -9.227058) + (xy 20.552573 -9.107389) (xy 20.859275 -9.046382) (xy 21.171985 -9.046382) (xy 21.478687 -9.107389) (xy 21.750279 -9.219886) + (xy 21.763644 -9.174402) (xy 21.821643 -9.063577) (xy 21.900149 -8.966197) (xy 21.996144 -8.886004) (xy 22.10594 -8.82608) + (xy 22.934395 -8.474422) (xy 23.053771 -8.437068) (xy 23.178141 -8.423722) (xy 23.302725 -8.434896) (xy 23.422735 -8.47016) + (xy 23.53356 -8.528159) (xy 23.63094 -8.606665) (xy 23.711133 -8.70266) (xy 23.771057 -8.812456) (xy 24.239934 -9.917062) + (xy 24.277288 -10.036438) (xy 24.290634 -10.160808) (xy 24.27946 -10.285392) (xy 24.244196 -10.405402) (xy 24.186197 -10.516227) + (xy 24.107691 -10.613607) (xy 24.011696 -10.6938) (xy 23.9019 -10.753724) (xy 23.073445 -11.105382) (xy 22.954069 -11.142736) + (xy 22.829699 -11.156082) (xy 22.705115 -11.144908) (xy 22.585105 -11.109644) (xy 22.543887 -11.088073) (xy 22.542123 -11.096939) + (xy 22.422454 -11.385845) (xy 22.248722 -11.645854) (xy 22.027602 -11.866974) (xy 21.767593 -12.040706) (xy 21.478687 -12.160375) + (xy 21.171985 -12.221382) (xy 20.859275 -12.221382) (xy 20.552573 -12.160375) (xy 20.263667 -12.040706) (xy 20.003658 -11.866974) + (xy 19.782538 -11.645854) (xy 19.608806 -11.385845) (xy 19.489137 -11.096939) (xy 19.42813 -10.790237) (xy 15.546394 -10.790237) + (xy 15.546394 -17.995033) (xy 16.061394 -17.995033) (xy 16.185876 -18.007293) (xy 16.305574 -18.043603) (xy 16.415888 -18.102568) + (xy 16.512579 -18.18192) (xy 16.591931 -18.278611) (xy 16.650896 -18.388925) (xy 16.687206 -18.508623) (xy 16.699466 -18.633105) + (xy 16.699466 -20.104132) (xy 19.034016 -20.104132) (xy 19.034016 -17.604132) (xy 19.046276 -17.47965) (xy 19.082586 -17.359952) + (xy 19.141551 -17.249638) (xy 19.220903 -17.152947) (xy 19.317594 -17.073595) (xy 19.427908 -17.01463) (xy 19.547606 -16.97832) + (xy 19.672088 -16.96606) (xy 20.971645 -16.96606) (xy 20.853037 -16.886808) (xy 20.646069 -16.67984) (xy 20.483455 -16.436472) + (xy 20.371445 -16.166055) (xy 20.314343 -15.878982) (xy 20.314343 -15.586286) (xy 20.371445 -15.299213) (xy 20.483455 -15.028796) + (xy 20.646069 -14.785428) (xy 20.853037 -14.57846) (xy 21.096405 -14.415846) (xy 21.366822 -14.303836) (xy 21.653895 -14.246734) + (xy 21.946591 -14.246734) (xy 22.233664 -14.303836) (xy 22.504081 -14.415846) (xy 22.747449 -14.57846) (xy 22.954417 -14.785428) + (xy 23.117031 -15.028796) (xy 23.229041 -15.299213) (xy 23.278266 -15.546686) (xy 23.338986 -15.521535) (xy 23.751463 -15.439488) + (xy 24.172021 -15.439488) (xy 24.51946 -15.508598) (xy 24.434408 -15.423546) (xy 24.146707 -14.992971) (xy 23.948535 -14.514542) + (xy 23.847508 -14.006644) (xy 23.847508 -13.488796) (xy 23.948535 -12.980898) (xy 24.146707 -12.502469) (xy 24.434408 -12.071894) + (xy 24.800582 -11.70572) (xy 25.231157 -11.418019) (xy 25.709586 -11.219847) (xy 26.216827 -11.118951) (xy 24.556908 -9.459031) + (xy 24.52791 -9.435233) (xy 24.504112 -9.406235) (xy 24.504111 -9.406234) (xy 24.432936 -9.319508) (xy 24.362364 -9.187478) + (xy 24.342388 -9.121623) (xy 24.318908 -9.044218) (xy 24.30791 -8.932565) (xy 24.30791 -8.932554) (xy 24.304234 -8.895232) + (xy 24.30791 -8.85791) (xy 24.30791 -8.026714) (xy 24.304234 -7.989392) (xy 24.30791 -7.95207) (xy 24.30791 -7.95206) + (xy 24.318907 -7.840407) (xy 24.354159 -7.724194) (xy 24.362364 -7.697146) (xy 24.432936 -7.565116) (xy 24.472781 -7.516566) + (xy 24.527909 -7.449391) (xy 24.556913 -7.425588) (xy 25.655021 -6.327479) (xy 25.65502 -0.539713) (xy 25.433415 -0.539713) + (xy 25.428466 -0.564592) (xy 25.267525 -0.953138) (xy 25.033876 -1.302819) (xy 24.736496 -1.600199) (xy 24.386815 -1.833848) + (xy 23.998269 -1.994789) (xy 23.585792 -2.076836) (xy 23.165234 -2.076836) (xy 22.752757 -1.994789) (xy 22.364211 -1.833848) + (xy 22.01453 -1.600199) (xy 21.71715 -1.302819) (xy 21.483501 -0.953138) (xy 21.32256 -0.564592) (xy 21.240513 -0.152115) + (xy 21.240513 0.268443) (xy 21.32256 0.68092) (xy 21.483501 1.069466) (xy 21.71715 1.419147) (xy 22.01453 1.716527) + (xy 22.364211 1.950176) (xy 22.752757 2.111117) (xy 23.165234 2.193164) (xy 23.585792 2.193164) (xy 23.998269 2.111117) + (xy 24.386815 1.950176) (xy 24.501948 1.873247) (xy 24.501948 2.598359) (xy 24.514208 2.722841) (xy 24.550518 2.842539) + (xy 24.609483 2.952853) (xy 24.688835 3.049544) (xy 24.785526 3.128896) (xy 24.89584 3.187861) (xy 25.015538 3.224171) + (xy 25.14002 3.236431) (xy 27.69002 3.236431) (xy 27.814502 3.224171) (xy 27.9342 3.187861) (xy 28.044514 3.128896) + (xy 28.141205 3.049544) (xy 28.220557 2.952853) (xy 28.279522 2.842539) (xy 28.315832 2.722841) (xy 28.328092 2.598359) + (xy 28.328092 0.206827) (xy 31.053373 0.206827) (xy 31.053373 2.706827) (xy 31.065633 2.831309) (xy 31.101943 2.951007) + (xy 31.160908 3.061321) (xy 31.24026 3.158012) (xy 31.336951 3.237364) (xy 31.447265 3.296329) (xy 31.566963 3.332639) + (xy 31.691445 3.344899) (xy 31.883699 3.344899) (xy 31.8837 8.5833) (xy 31.801894 8.665106) (xy 31.628162 8.925115) + (xy 31.508493 9.214021) (xy 31.447486 9.520723) (xy 31.447486 9.833433) (xy 31.508493 10.140135) (xy 31.628162 10.429041) + (xy 31.801894 10.68905) (xy 32.023014 10.91017) (xy 32.283023 11.083902) (xy 32.571929 11.203571) (xy 32.878631 11.264578) + (xy 33.191341 11.264578) (xy 33.498043 11.203571) (xy 33.769635 11.091074) (xy 33.783 11.136558) (xy 33.840999 11.247383) + (xy 33.919505 11.344763) (xy 34.0155 11.424956) (xy 34.125296 11.48488) (xy 34.953751 11.836538) (xy 35.073127 11.873892) + (xy 35.197497 11.887238) (xy 35.322081 11.876064) (xy 35.442091 11.8408) (xy 35.552916 11.782801) (xy 35.650296 11.704295) + (xy 35.730489 11.6083) (xy 35.790413 11.498504) (xy 36.25929 10.393898) (xy 36.296644 10.274522) (xy 36.30999 10.150152) + (xy 36.298816 10.025568) (xy 36.263552 9.905558) (xy 36.205553 9.794733) (xy 36.127047 9.697353) (xy 36.031052 9.61716) + (xy 35.921256 9.557236) (xy 35.092801 9.205578) (xy 34.973425 9.168224) (xy 34.849055 9.154878) (xy 34.741801 9.164498) + (xy 34.719297 9.137077) (xy 34.603572 9.042104) (xy 34.471543 8.971532) (xy 34.459527 8.967887) (xy 34.44181 8.925115) + (xy 34.268078 8.665106) (xy 34.046958 8.443986) (xy 33.786949 8.270254) (xy 33.498043 8.150585) (xy 33.403699 8.131819) + (xy 33.403699 6.010608) (xy 33.673252 6.064225) (xy 33.965948 6.064225) (xy 34.253021 6.007123) (xy 34.523438 5.895113) + (xy 34.766806 5.732499) (xy 34.973774 5.525531) (xy 35.136388 5.282163) (xy 35.248398 5.011746) (xy 35.297623 4.764273) + (xy 35.358343 4.789424) (xy 35.77082 4.871471) (xy 36.191378 4.871471) (xy 36.538817 4.802361) (xy 36.453765 4.887413) + (xy 36.166064 5.317988) (xy 35.967892 5.796417) (xy 35.866865 6.304315) (xy 35.866865 6.822163) (xy 35.967892 7.330061) + (xy 36.166064 7.80849) (xy 36.453765 8.239065) (xy 36.819939 8.605239) (xy 37.250514 8.89294) (xy 37.728943 9.091112) + (xy 38.236841 9.192139) (xy 38.754689 9.192139) (xy 39.262587 9.091112) (xy 39.741016 8.89294) (xy 40.171591 8.605239) + (xy 40.375025 8.401805) (xy 41.68603 8.401805) (xy 41.68603 8.694501) (xy 41.743132 8.981574) (xy 41.855142 9.251991) + (xy 42.017756 9.495359) (xy 42.224724 9.702327) (xy 42.468092 9.864941) (xy 42.738509 9.976951) (xy 43.025582 10.034053) + (xy 43.318278 10.034053) (xy 43.605351 9.976951) (xy 43.875768 9.864941) (xy 44.119136 9.702327) (xy 44.326104 9.495359) + (xy 44.488718 9.251991) (xy 44.600728 8.981574) (xy 44.65783 8.694501) (xy 44.65783 8.401805) (xy 44.600728 8.114732) + (xy 44.488718 7.844315) (xy 44.326104 7.600947) (xy 44.119136 7.393979) (xy 43.875768 7.231365) (xy 43.605351 7.119355) + (xy 43.318278 7.062253) (xy 43.025582 7.062253) (xy 42.738509 7.119355) (xy 42.468092 7.231365) (xy 42.224724 7.393979) + (xy 42.017756 7.600947) (xy 41.855142 7.844315) (xy 41.743132 8.114732) (xy 41.68603 8.401805) (xy 40.375025 8.401805) + (xy 40.537765 8.239065) (xy 40.825466 7.80849) (xy 41.023638 7.330061) (xy 41.124665 6.822163) (xy 41.124665 6.304315) + (xy 41.023638 5.796417) (xy 40.825466 5.317988) (xy 40.537765 4.887413) (xy 40.171591 4.521239) (xy 39.741016 4.233538) + (xy 39.262587 4.035366) (xy 38.754689 3.934339) (xy 38.236841 3.934339) (xy 37.728943 4.035366) (xy 37.662581 4.062854) + (xy 37.873111 3.747773) (xy 38.034052 3.359227) (xy 38.116099 2.94675) (xy 38.116099 2.669252) (xy 40.683761 2.669252) + (xy 40.683761 3.08981) (xy 40.765808 3.502287) (xy 40.926749 3.890833) (xy 41.160398 4.240514) (xy 41.457778 4.537894) + (xy 41.807459 4.771543) (xy 42.196005 4.932484) (xy 42.608482 5.014531) (xy 43.02904 5.014531) (xy 43.441517 4.932484) + (xy 43.830063 4.771543) (xy 43.945196 4.694614) (xy 43.945196 5.419726) (xy 43.957456 5.544208) (xy 43.993766 5.663906) + (xy 44.052731 5.77422) (xy 44.132083 5.870911) (xy 44.228774 5.950263) (xy 44.339088 6.009228) (xy 44.458786 6.045538) + (xy 44.583268 6.057798) (xy 47.133268 6.057798) (xy 47.25775 6.045538) (xy 47.377448 6.009228) (xy 47.487762 5.950263) + (xy 47.584453 5.870911) (xy 47.663805 5.77422) (xy 47.72277 5.663906) (xy 47.75908 5.544208) (xy 47.77134 5.419726) + (xy 47.77134 3.331455) (xy 53.793163 -2.690367) (xy 53.82216 -2.714164) (xy 53.917133 -2.829889) (xy 53.987705 -2.961918) + (xy 54.013201 -3.045968) (xy 54.013201 -2.756349) (xy 54.025461 -2.631867) (xy 54.061771 -2.512169) (xy 54.120736 -2.401855) + (xy 54.200088 -2.305164) (xy 54.296779 -2.225812) (xy 54.407093 -2.166847) (xy 54.526791 -2.130537) (xy 54.651273 -2.118277) + (xy 55.166274 -2.118277) (xy 55.166274 -2.086832) (xy 55.09253 -2.013088) (xy 55.063526 -1.989285) (xy 55.018776 -1.934756) + (xy 54.968553 -1.87356) (xy 54.907073 -1.758539) (xy 54.897981 -1.74153) (xy 54.854524 -1.598269) (xy 54.843527 -1.486616) + (xy 54.843527 -1.486606) (xy 54.839851 -1.449284) (xy 54.843527 -1.411961) (xy 54.843528 3.120123) (xy 54.761722 3.201929) + (xy 54.58799 3.461938) (xy 54.468321 3.750844) (xy 54.407314 4.057546) (xy 54.407314 4.370256) (xy 54.468321 4.676958) + (xy 54.58799 4.965864) (xy 54.761722 5.225873) (xy 54.982842 5.446993) (xy 55.242851 5.620725) (xy 55.531757 5.740394) + (xy 55.838459 5.801401) (xy 56.151169 5.801401) (xy 56.457871 5.740394) (xy 56.729463 5.627897) (xy 56.742828 5.673381) + (xy 56.800827 5.784206) (xy 56.879333 5.881586) (xy 56.975328 5.961779) (xy 57.085124 6.021703) (xy 57.913579 6.373361) + (xy 58.032955 6.410715) (xy 58.157325 6.424061) (xy 58.281909 6.412887) (xy 58.401919 6.377623) (xy 58.489198 6.331946) + (xy 56.190498 8.630647) (xy 49.522298 8.630647) (xy 49.484975 8.626971) (xy 49.447652 8.630647) (xy 49.447642 8.630647) + (xy 49.335989 8.641644) (xy 49.192728 8.685101) (xy 49.060698 8.755673) (xy 48.980964 8.82111) (xy 48.944974 8.850646) + (xy 48.921176 8.879644) (xy 46.391378 11.409443) (xy 46.36238 11.433241) (xy 46.338582 11.462239) (xy 46.338581 11.46224) + (xy 46.267406 11.548966) (xy 46.196834 11.680996) (xy 46.153378 11.824257) (xy 46.138704 11.973242) (xy 46.142381 12.010574) + (xy 46.14238 25.275058) (xy 46.138704 25.31238) (xy 46.14238 25.349702) (xy 46.14238 25.349712) (xy 46.153377 25.461365) + (xy 46.187789 25.574808) (xy 46.196834 25.604626) (xy 46.267406 25.736656) (xy 46.307251 25.785206) (xy 46.362379 25.852381) + (xy 46.391383 25.876184) (xy 48.495 27.979802) (xy 48.495 28.041939) (xy 48.534774 28.241898) (xy 48.612795 28.430256) + (xy 48.726063 28.599774) (xy 48.870226 28.743937) (xy 49.039744 28.857205) (xy 49.228102 28.935226) (xy 49.428061 28.975) + (xy 49.631939 28.975) (xy 49.831898 28.935226) (xy 50.020256 28.857205) (xy 50.189774 28.743937) (xy 50.333937 28.599774) + (xy 50.447205 28.430256) (xy 50.525226 28.241898) (xy 50.565 28.041939) (xy 50.565 27.838061) (xy 50.525226 27.638102) + (xy 50.447205 27.449744) (xy 50.333937 27.280226) (xy 50.189774 27.136063) (xy 50.020256 27.022795) (xy 49.831898 26.944774) + (xy 49.631939 26.905) (xy 49.569802 26.905) (xy 47.66238 24.997579) (xy 47.66238 24.207791) (xy 52.310165 24.207791) + (xy 52.321339 24.332375) (xy 52.356603 24.452385) (xy 52.414602 24.56321) (xy 52.493108 24.66059) (xy 52.589103 24.740783) + (xy 52.698899 24.800707) (xy 53.527354 25.152365) (xy 53.64673 25.189719) (xy 53.7711 25.203065) (xy 53.786403 25.201692) + (xy 53.792606 25.27085) (xy 53.82787 25.39086) (xy 53.885869 25.501685) (xy 53.964375 25.599065) (xy 54.06037 25.679258) + (xy 54.170165 25.739182) (xy 55.806823 26.433902) (xy 55.9262 26.471256) (xy 56.05057 26.484602) (xy 56.175154 26.473428) + (xy 56.295164 26.438164) (xy 56.405989 26.380165) (xy 56.503369 26.301659) (xy 56.583562 26.205664) (xy 56.643486 26.095869) + (xy 57.032179 25.180164) (xy 61.734515 25.180164) (xy 61.734515 27.680164) (xy 61.746775 27.804646) (xy 61.783085 27.924344) + (xy 61.84205 28.034658) (xy 61.921402 28.131349) (xy 62.018093 28.210701) (xy 62.128407 28.269666) (xy 62.248105 28.305976) + (xy 62.372587 28.318236) (xy 62.570181 28.318236) (xy 62.564841 28.372453) (xy 62.564841 28.372463) (xy 62.561165 28.409785) + (xy 62.564841 28.447108) (xy 62.564842 33.556636) (xy 62.483036 33.638442) (xy 62.309304 33.898451) (xy 62.189635 34.187357) + (xy 62.128628 34.494059) (xy 62.128628 34.806769) (xy 62.189635 35.113471) (xy 62.309304 35.402377) (xy 62.483036 35.662386) + (xy 62.704156 35.883506) (xy 62.964165 36.057238) (xy 63.253071 36.176907) (xy 63.559773 36.237914) (xy 63.872483 36.237914) + (xy 64.179185 36.176907) (xy 64.450777 36.06441) (xy 64.464142 36.109894) (xy 64.522141 36.220719) (xy 64.600647 36.318099) + (xy 64.696642 36.398292) (xy 64.806438 36.458216) (xy 65.634893 36.809874) (xy 65.754269 36.847228) (xy 65.878639 36.860574) + (xy 66.003223 36.8494) (xy 66.123233 36.814136) (xy 66.234058 36.756137) (xy 66.331438 36.677631) (xy 66.411631 36.581636) + (xy 66.471555 36.47184) (xy 66.940432 35.367234) (xy 66.977786 35.247858) (xy 66.991132 35.123488) (xy 66.979958 34.998904) + (xy 66.944694 34.878894) (xy 66.886695 34.768069) (xy 66.808189 34.670689) (xy 66.712194 34.590496) (xy 66.602398 34.530572) + (xy 65.773943 34.178914) (xy 65.654567 34.14156) (xy 65.530197 34.128214) (xy 65.422943 34.137834) (xy 65.400439 34.110413) + (xy 65.284714 34.01544) (xy 65.152685 33.944868) (xy 65.140669 33.941223) (xy 65.122952 33.898451) (xy 64.94922 33.638442) + (xy 64.7281 33.417322) (xy 64.468091 33.24359) (xy 64.179185 33.123921) (xy 64.084841 33.105155) (xy 64.084841 30.983945) + (xy 64.354394 31.037562) (xy 64.64709 31.037562) (xy 64.934163 30.98046) (xy 65.20458 30.86845) (xy 65.447948 30.705836) + (xy 65.654916 30.498868) (xy 65.81753 30.2555) (xy 65.92954 29.985083) (xy 65.978765 29.73761) (xy 66.039485 29.762761) + (xy 66.451962 29.844808) (xy 66.87252 29.844808) (xy 67.219959 29.775698) (xy 67.134907 29.86075) (xy 66.847206 30.291325) + (xy 66.649034 30.769754) (xy 66.548007 31.277652) (xy 66.548007 31.7955) (xy 66.649034 32.303398) (xy 66.847206 32.781827) + (xy 67.134907 33.212402) (xy 67.501081 33.578576) (xy 67.931656 33.866277) (xy 68.410085 34.064449) (xy 68.917983 34.165476) + (xy 69.435831 34.165476) (xy 69.943729 34.064449) (xy 70.422158 33.866277) (xy 70.852733 33.578576) (xy 71.056167 33.375142) + (xy 72.367172 33.375142) (xy 72.367172 33.667838) (xy 72.424274 33.954911) (xy 72.536284 34.225328) (xy 72.698898 34.468696) + (xy 72.905866 34.675664) (xy 73.149234 34.838278) (xy 73.419651 34.950288) (xy 73.706724 35.00739) (xy 73.99942 35.00739) + (xy 74.286493 34.950288) (xy 74.55691 34.838278) (xy 74.800278 34.675664) (xy 75.007246 34.468696) (xy 75.16986 34.225328) + (xy 75.28187 33.954911) (xy 75.338972 33.667838) (xy 75.338972 33.375142) (xy 75.28187 33.088069) (xy 75.16986 32.817652) + (xy 75.007246 32.574284) (xy 74.800278 32.367316) (xy 74.55691 32.204702) (xy 74.286493 32.092692) (xy 73.99942 32.03559) + (xy 73.706724 32.03559) (xy 73.419651 32.092692) (xy 73.149234 32.204702) (xy 72.905866 32.367316) (xy 72.698898 32.574284) + (xy 72.536284 32.817652) (xy 72.424274 33.088069) (xy 72.367172 33.375142) (xy 71.056167 33.375142) (xy 71.218907 33.212402) + (xy 71.506608 32.781827) (xy 71.70478 32.303398) (xy 71.805807 31.7955) (xy 71.805807 31.277652) (xy 71.70478 30.769754) + (xy 71.506608 30.291325) (xy 71.218907 29.86075) (xy 70.852733 29.494576) (xy 70.422158 29.206875) (xy 69.943729 29.008703) + (xy 69.435831 28.907676) (xy 68.917983 28.907676) (xy 68.410085 29.008703) (xy 68.343723 29.036191) (xy 68.554253 28.72111) + (xy 68.715194 28.332564) (xy 68.797241 27.920087) (xy 68.797241 27.499529) (xy 68.715194 27.087052) (xy 68.554253 26.698506) + (xy 68.320604 26.348825) (xy 68.023224 26.051445) (xy 67.673543 25.817796) (xy 67.284997 25.656855) (xy 66.87252 25.574808) + (xy 66.451962 25.574808) (xy 66.039485 25.656855) (xy 65.650939 25.817796) (xy 65.560659 25.878119) (xy 65.560659 25.180164) + (xy 65.548399 25.055682) (xy 65.512089 24.935984) (xy 65.453124 24.82567) (xy 65.373772 24.728979) (xy 65.277081 24.649627) + (xy 65.166767 24.590662) (xy 65.047069 24.554352) (xy 64.922587 24.542092) (xy 62.372587 24.542092) (xy 62.248105 24.554352) + (xy 62.128407 24.590662) (xy 62.018093 24.649627) (xy 61.921402 24.728979) (xy 61.84205 24.82567) (xy 61.783085 24.935984) + (xy 61.746775 25.055682) (xy 61.734515 25.180164) (xy 57.032179 25.180164) (xy 57.338206 24.459211) (xy 57.37556 24.339834) + (xy 57.388906 24.215464) (xy 57.377732 24.09088) (xy 57.342468 23.97087) (xy 57.284469 23.860045) (xy 57.205963 23.762665) + (xy 57.109968 23.682472) (xy 57.000173 23.622548) (xy 55.363515 22.927828) (xy 55.244138 22.890474) (xy 55.119768 22.877128) + (xy 54.995184 22.888302) (xy 54.875174 22.923566) (xy 54.764349 22.981565) (xy 54.710294 23.025143) (xy 54.70065 23.01318) + (xy 54.604655 22.932987) (xy 54.494859 22.873063) (xy 53.666404 22.521405) (xy 53.547028 22.484051) (xy 53.422658 22.470705) + (xy 53.298074 22.481879) (xy 53.178064 22.517143) (xy 53.067239 22.575142) (xy 52.969859 22.653648) (xy 52.889666 22.749643) + (xy 52.829742 22.859439) (xy 52.360865 23.964045) (xy 52.323511 24.083421) (xy 52.310165 24.207791) (xy 47.66238 24.207791) + (xy 47.66238 23.005694) (xy 47.81896 23.110317) (xy 48.107866 23.229986) (xy 48.414568 23.290993) (xy 48.727278 23.290993) + (xy 49.03398 23.229986) (xy 49.305572 23.117489) (xy 49.318937 23.162973) (xy 49.376936 23.273798) (xy 49.455442 23.371178) + (xy 49.551437 23.451371) (xy 49.661233 23.511295) (xy 50.489688 23.862953) (xy 50.609064 23.900307) (xy 50.733434 23.913653) + (xy 50.858018 23.902479) (xy 50.978028 23.867215) (xy 51.088853 23.809216) (xy 51.186233 23.73071) (xy 51.266426 23.634715) + (xy 51.32635 23.524919) (xy 51.795227 22.420313) (xy 51.832581 22.300937) (xy 51.845927 22.176567) (xy 51.834753 22.051983) + (xy 51.799489 21.931973) (xy 51.74149 21.821148) (xy 51.662984 21.723768) (xy 51.566989 21.643575) (xy 51.457193 21.583651) + (xy 50.628738 21.231993) (xy 50.509362 21.194639) (xy 50.384992 21.181293) (xy 50.277738 21.190913) (xy 50.255234 21.163492) + (xy 50.139509 21.068519) (xy 50.00748 20.997947) (xy 49.995464 20.994302) (xy 49.977747 20.95153) (xy 49.804015 20.691521) + (xy 49.582895 20.470401) (xy 49.322886 20.296669) (xy 49.03398 20.177) (xy 48.939635 20.158234) (xy 48.939635 18.037024) + (xy 49.209188 18.090641) (xy 49.501884 18.090641) (xy 49.788957 18.033539) (xy 50.059374 17.921529) (xy 50.302742 17.758915) + (xy 50.50971 17.551947) (xy 50.672324 17.308579) (xy 50.784334 17.038162) (xy 50.833559 16.790689) (xy 50.894279 16.81584) + (xy 51.306756 16.897887) (xy 51.727314 16.897887) (xy 52.074753 16.828777) (xy 51.989701 16.913829) (xy 51.702 17.344404) + (xy 51.503828 17.822833) (xy 51.402801 18.330731) (xy 51.402801 18.848579) (xy 51.503828 19.356477) (xy 51.702 19.834906) + (xy 51.989701 20.265481) (xy 52.355875 20.631655) (xy 52.78645 20.919356) (xy 53.264879 21.117528) (xy 53.772777 21.218555) + (xy 54.290625 21.218555) (xy 54.798523 21.117528) (xy 55.276952 20.919356) (xy 55.707527 20.631655) (xy 55.910961 20.428221) + (xy 57.221966 20.428221) (xy 57.221966 20.720917) (xy 57.279068 21.00799) (xy 57.391078 21.278407) (xy 57.553692 21.521775) + (xy 57.76066 21.728743) (xy 58.004028 21.891357) (xy 58.274445 22.003367) (xy 58.561518 22.060469) (xy 58.854214 22.060469) + (xy 59.141287 22.003367) (xy 59.411704 21.891357) (xy 59.655072 21.728743) (xy 59.86204 21.521775) (xy 60.024654 21.278407) + (xy 60.136664 21.00799) (xy 60.193766 20.720917) (xy 60.193766 20.428221) (xy 60.136664 20.141148) (xy 60.024654 19.870731) + (xy 59.887269 19.66512) (xy 74.879261 19.66512) (xy 74.890435 19.789704) (xy 74.925699 19.909714) (xy 74.983698 20.020539) + (xy 75.062204 20.117919) (xy 75.158199 20.198112) (xy 75.267995 20.258036) (xy 76.09645 20.609694) (xy 76.215826 20.647048) + (xy 76.340196 20.660394) (xy 76.355499 20.659021) (xy 76.361702 20.728179) (xy 76.396966 20.848189) (xy 76.454965 20.959014) + (xy 76.533471 21.056394) (xy 76.629466 21.136587) (xy 76.739261 21.196511) (xy 78.375919 21.891231) (xy 78.495296 21.928585) + (xy 78.619666 21.941931) (xy 78.74425 21.930757) (xy 78.86426 21.895493) (xy 78.975085 21.837494) (xy 79.072465 21.758988) + (xy 79.152658 21.662993) (xy 79.212582 21.553198) (xy 79.907302 19.91654) (xy 79.944656 19.797163) (xy 79.958002 19.672793) + (xy 79.946828 19.548209) (xy 79.911564 19.428199) (xy 79.853565 19.317374) (xy 79.775059 19.219994) (xy 79.679064 19.139801) + (xy 79.569269 19.079877) (xy 77.932611 18.385157) (xy 77.813234 18.347803) (xy 77.688864 18.334457) (xy 77.56428 18.345631) + (xy 77.44427 18.380895) (xy 77.333445 18.438894) (xy 77.27939 18.482472) (xy 77.269746 18.470509) (xy 77.173751 18.390316) + (xy 77.063955 18.330392) (xy 76.2355 17.978734) (xy 76.116124 17.94138) (xy 75.991754 17.928034) (xy 75.86717 17.939208) + (xy 75.74716 17.974472) (xy 75.636335 18.032471) (xy 75.538955 18.110977) (xy 75.458762 18.206972) (xy 75.398838 18.316768) + (xy 74.929961 19.421374) (xy 74.892607 19.54075) (xy 74.879261 19.66512) (xy 59.887269 19.66512) (xy 59.86204 19.627363) + (xy 59.655072 19.420395) (xy 59.411704 19.257781) (xy 59.141287 19.145771) (xy 58.854214 19.088669) (xy 58.561518 19.088669) + (xy 58.274445 19.145771) (xy 58.004028 19.257781) (xy 57.76066 19.420395) (xy 57.553692 19.627363) (xy 57.391078 19.870731) + (xy 57.279068 20.141148) (xy 57.221966 20.428221) (xy 55.910961 20.428221) (xy 56.073701 20.265481) (xy 56.361402 19.834906) + (xy 56.559574 19.356477) (xy 56.660601 18.848579) (xy 56.660601 18.330731) (xy 56.559574 17.822833) (xy 56.361402 17.344404) + (xy 56.073701 16.913829) (xy 55.707527 16.547655) (xy 55.276952 16.259954) (xy 54.798523 16.061782) (xy 54.290625 15.960755) + (xy 53.772777 15.960755) (xy 53.264879 16.061782) (xy 53.198517 16.08927) (xy 53.409047 15.774189) (xy 53.569988 15.385643) + (xy 53.652035 14.973166) (xy 53.652035 14.552608) (xy 53.569988 14.140131) (xy 53.409047 13.751585) (xy 53.175398 13.401904) + (xy 52.878018 13.104524) (xy 52.528337 12.870875) (xy 52.139791 12.709934) (xy 51.727314 12.627887) (xy 51.306756 12.627887) + (xy 50.894279 12.709934) (xy 50.505733 12.870875) (xy 50.415453 12.931198) (xy 50.415453 12.233243) (xy 50.403193 12.108761) + (xy 50.366883 11.989063) (xy 50.307918 11.878749) (xy 50.228566 11.782058) (xy 50.131875 11.702706) (xy 50.021561 11.643741) + (xy 49.901863 11.607431) (xy 49.777381 11.595171) (xy 48.355252 11.595171) (xy 49.799777 10.150647) (xy 56.467977 10.150647) + (xy 56.505299 10.154323) (xy 56.542621 10.150647) (xy 56.542632 10.150647) (xy 56.654285 10.13965) (xy 56.797546 10.096193) + (xy 56.929575 10.025621) (xy 57.0453 9.930648) (xy 57.069103 9.901644) (xy 59.864665 7.106082) (xy 59.916999 7.170998) + (xy 60.012994 7.251191) (xy 60.12279 7.311115) (xy 60.951245 7.662773) (xy 61.070621 7.700127) (xy 61.194991 7.713473) + (xy 61.210294 7.7121) (xy 61.216497 7.781258) (xy 61.251761 7.901268) (xy 61.30976 8.012093) (xy 61.388266 8.109473) + (xy 61.484261 8.189666) (xy 61.594056 8.24959) (xy 63.230714 8.94431) (xy 63.350091 8.981664) (xy 63.474461 8.99501) + (xy 63.599045 8.983836) (xy 63.719055 8.948572) (xy 63.82988 8.890573) (xy 63.92726 8.812067) (xy 64.007453 8.716072) + (xy 64.067377 8.606277) (xy 64.762097 6.969619) (xy 64.799451 6.850242) (xy 64.812797 6.725872) (xy 64.801623 6.601288) + (xy 64.766359 6.481278) (xy 64.70836 6.370453) (xy 64.629854 6.273073) (xy 64.533859 6.19288) (xy 64.424064 6.132956) + (xy 62.787406 5.438236) (xy 62.668029 5.400882) (xy 62.543659 5.387536) (xy 62.419075 5.39871) (xy 62.299065 5.433974) + (xy 62.18824 5.491973) (xy 62.134185 5.535551) (xy 62.124541 5.523588) (xy 62.028546 5.443395) (xy 61.91875 5.383471) + (xy 61.686051 5.284696) (xy 64.032118 2.938629) (xy 64.645858 2.938629) (xy 64.645858 3.231325) (xy 64.70296 3.518398) + (xy 64.81497 3.788815) (xy 64.977584 4.032183) (xy 65.184552 4.239151) (xy 65.42792 4.401765) (xy 65.698337 4.513775) + (xy 65.98541 4.570877) (xy 66.278106 4.570877) (xy 66.565179 4.513775) (xy 66.835596 4.401765) (xy 67.078964 4.239151) + (xy 67.285932 4.032183) (xy 67.448546 3.788815) (xy 67.560556 3.518398) (xy 67.617658 3.231325) (xy 67.617658 2.938629) + (xy 67.560556 2.651556) (xy 67.448546 2.381139) (xy 67.285932 2.137771) (xy 67.078964 1.930803) (xy 66.835596 1.768189) + (xy 66.565179 1.656179) (xy 66.278106 1.599077) (xy 65.98541 1.599077) (xy 65.698337 1.656179) (xy 65.42792 1.768189) + (xy 65.184552 1.930803) (xy 64.977584 2.137771) (xy 64.81497 2.381139) (xy 64.70296 2.651556) (xy 64.645858 2.938629) + (xy 64.032118 2.938629) (xy 64.464591 2.506157) (xy 64.493589 2.482359) (xy 64.588562 2.366634) (xy 64.659134 2.234605) + (xy 64.702591 2.091344) (xy 64.713588 1.979691) (xy 64.713588 1.979682) (xy 64.717264 1.942359) (xy 64.713588 1.905036) + (xy 64.713588 -0.727513) (xy 64.767287 -0.691633) (xy 65.155833 -0.530692) (xy 65.56831 -0.448645) (xy 65.988868 -0.448645) + (xy 66.401345 -0.530692) (xy 66.789891 -0.691633) (xy 66.905024 -0.768562) (xy 66.905024 -0.04345) (xy 66.917284 0.081032) + (xy 66.953594 0.20073) (xy 67.012559 0.311044) (xy 67.091911 0.407735) (xy 67.188602 0.487087) (xy 67.298916 0.546052) + (xy 67.418614 0.582362) (xy 67.543096 0.594622) (xy 68.058097 0.594622) (xy 68.058096 5.408193) (xy 68.014159 5.45213) + (xy 67.900891 5.621648) (xy 67.82287 5.810006) (xy 67.783096 6.009965) (xy 67.783096 6.213843) (xy 67.82287 6.413802) + (xy 67.900891 6.60216) (xy 68.014159 6.771678) (xy 68.058096 6.815615) (xy 68.058096 6.957448) (xy 60.883202 14.132343) + (xy 60.854204 14.156141) (xy 60.830406 14.185139) (xy 60.830405 14.18514) (xy 60.75923 14.271866) (xy 60.739878 14.30807) + (xy 60.412599 14.30807) (xy 60.40765 14.283191) (xy 60.246709 13.894645) (xy 60.01306 13.544964) (xy 59.71568 13.247584) + (xy 59.365999 13.013935) (xy 58.977453 12.852994) (xy 58.564976 12.770947) (xy 58.144418 12.770947) (xy 57.731941 12.852994) + (xy 57.343395 13.013935) (xy 56.993714 13.247584) (xy 56.696334 13.544964) (xy 56.462685 13.894645) (xy 56.301744 14.283191) + (xy 56.219697 14.695668) (xy 56.219697 15.116226) (xy 56.301744 15.528703) (xy 56.462685 15.917249) (xy 56.696334 16.26693) + (xy 56.993714 16.56431) (xy 57.343395 16.797959) (xy 57.731941 16.9589) (xy 58.144418 17.040947) (xy 58.564976 17.040947) + (xy 58.977453 16.9589) (xy 59.365999 16.797959) (xy 59.481132 16.72103) (xy 59.481132 17.446142) (xy 59.493392 17.570624) + (xy 59.529702 17.690322) (xy 59.588667 17.800636) (xy 59.668019 17.897327) (xy 59.76471 17.976679) (xy 59.875024 18.035644) + (xy 59.994722 18.071954) (xy 60.119204 18.084214) (xy 62.669204 18.084214) (xy 62.793686 18.071954) (xy 62.913384 18.035644) + (xy 63.023698 17.976679) (xy 63.120389 17.897327) (xy 63.199741 17.800636) (xy 63.258706 17.690322) (xy 63.295016 17.570624) + (xy 63.307276 17.446142) (xy 63.307276 17.004467) (xy 69.552519 17.004467) (xy 69.552519 17.317177) (xy 69.613526 17.623879) + (xy 69.733195 17.912785) (xy 69.906927 18.172794) (xy 70.128047 18.393914) (xy 70.388056 18.567646) (xy 70.676962 18.687315) + (xy 70.983664 18.748322) (xy 71.296374 18.748322) (xy 71.603076 18.687315) (xy 71.874668 18.574818) (xy 71.888033 18.620302) + (xy 71.946032 18.731127) (xy 72.024538 18.828507) (xy 72.120533 18.9087) (xy 72.230329 18.968624) (xy 73.058784 19.320282) + (xy 73.17816 19.357636) (xy 73.30253 19.370982) (xy 73.427114 19.359808) (xy 73.547124 19.324544) (xy 73.657949 19.266545) + (xy 73.755329 19.188039) (xy 73.835522 19.092044) (xy 73.895446 18.982248) (xy 74.364323 17.877642) (xy 74.401677 17.758266) + (xy 74.415023 17.633896) (xy 74.403849 17.509312) (xy 74.368585 17.389302) (xy 74.310586 17.278477) (xy 74.23208 17.181097) + (xy 74.136085 17.100904) (xy 74.026289 17.04098) (xy 73.197834 16.689322) (xy 73.078458 16.651968) (xy 72.954088 16.638622) + (xy 72.829504 16.649796) (xy 72.709494 16.68506) (xy 72.668276 16.706631) (xy 72.666512 16.697765) (xy 72.546843 16.408859) + (xy 72.373111 16.14885) (xy 72.151991 15.92773) (xy 71.891982 15.753998) (xy 71.603076 15.634329) (xy 71.296374 15.573322) + (xy 70.983664 15.573322) (xy 70.676962 15.634329) (xy 70.388056 15.753998) (xy 70.128047 15.92773) (xy 69.906927 16.14885) + (xy 69.733195 16.408859) (xy 69.613526 16.697765) (xy 69.552519 17.004467) (xy 63.307276 17.004467) (xy 63.307276 14.946142) + (xy 63.295016 14.82166) (xy 63.258706 14.701962) (xy 63.199741 14.591648) (xy 63.120389 14.494957) (xy 63.023698 14.415605) + (xy 62.913384 14.35664) (xy 62.832917 14.33223) (xy 69.158406 8.006742) (xy 69.158406 10.190571) (xy 69.170666 10.315053) + (xy 69.206976 10.434751) (xy 69.265941 10.545065) (xy 69.345293 10.641756) (xy 69.441984 10.721108) (xy 69.552298 10.780073) + (xy 69.671996 10.816383) (xy 69.796478 10.828643) (xy 71.096035 10.828643) (xy 70.977427 10.907895) (xy 70.770459 11.114863) + (xy 70.607845 11.358231) (xy 70.495835 11.628648) (xy 70.438733 11.915721) (xy 70.438733 12.208417) (xy 70.495835 12.49549) + (xy 70.607845 12.765907) (xy 70.770459 13.009275) (xy 70.977427 13.216243) (xy 71.220795 13.378857) (xy 71.491212 13.490867) + (xy 71.778285 13.547969) (xy 72.070981 13.547969) (xy 72.358054 13.490867) (xy 72.628471 13.378857) (xy 72.871839 13.216243) + (xy 73.078807 13.009275) (xy 73.241421 12.765907) (xy 73.353431 12.49549) (xy 73.402656 12.248017) (xy 73.463376 12.273168) + (xy 73.875853 12.355215) (xy 74.296411 12.355215) (xy 74.64385 12.286105) (xy 74.558798 12.371157) (xy 74.271097 12.801732) + (xy 74.072925 13.280161) (xy 73.971898 13.788059) (xy 73.971898 14.305907) (xy 74.072925 14.813805) (xy 74.271097 15.292234) + (xy 74.558798 15.722809) (xy 74.924972 16.088983) (xy 75.355547 16.376684) (xy 75.833976 16.574856) (xy 76.341874 16.675883) + (xy 76.859722 16.675883) (xy 77.36762 16.574856) (xy 77.846049 16.376684) (xy 78.276624 16.088983) (xy 78.480058 15.885549) + (xy 79.791063 15.885549) (xy 79.791063 16.178245) (xy 79.848165 16.465318) (xy 79.960175 16.735735) (xy 80.122789 16.979103) + (xy 80.329757 17.186071) (xy 80.573125 17.348685) (xy 80.843542 17.460695) (xy 81.130615 17.517797) (xy 81.423311 17.517797) + (xy 81.710384 17.460695) (xy 81.980801 17.348685) (xy 82.224169 17.186071) (xy 82.431137 16.979103) (xy 82.593751 16.735735) + (xy 82.705761 16.465318) (xy 82.762863 16.178245) (xy 82.762863 15.885549) (xy 82.705761 15.598476) (xy 82.593751 15.328059) + (xy 82.431137 15.084691) (xy 82.224169 14.877723) (xy 81.980801 14.715109) (xy 81.710384 14.603099) (xy 81.423311 14.545997) + (xy 81.130615 14.545997) (xy 80.843542 14.603099) (xy 80.573125 14.715109) (xy 80.329757 14.877723) (xy 80.122789 15.084691) + (xy 79.960175 15.328059) (xy 79.848165 15.598476) (xy 79.791063 15.885549) (xy 78.480058 15.885549) (xy 78.642798 15.722809) + (xy 78.930499 15.292234) (xy 79.128671 14.813805) (xy 79.229698 14.305907) (xy 79.229698 13.788059) (xy 79.128671 13.280161) + (xy 78.930499 12.801732) (xy 78.642798 12.371157) (xy 78.276624 12.004983) (xy 77.846049 11.717282) (xy 77.36762 11.51911) + (xy 76.859722 11.418083) (xy 76.341874 11.418083) (xy 75.833976 11.51911) (xy 75.767614 11.546598) (xy 75.978144 11.231517) + (xy 76.139085 10.842971) (xy 76.221132 10.430494) (xy 76.221132 10.009936) (xy 76.139085 9.597459) (xy 75.978144 9.208913) + (xy 75.744495 8.859232) (xy 75.447115 8.561852) (xy 75.097434 8.328203) (xy 74.708888 8.167262) (xy 74.296411 8.085215) + (xy 73.875853 8.085215) (xy 73.463376 8.167262) (xy 73.07483 8.328203) (xy 72.98455 8.388526) (xy 72.98455 7.690571) + (xy 72.97229 7.566089) (xy 72.93598 7.446391) (xy 72.877015 7.336077) (xy 72.797663 7.239386) (xy 72.700972 7.160034) + (xy 72.590658 7.101069) (xy 72.47096 7.064759) (xy 72.346478 7.052499) (xy 69.796478 7.052499) (xy 69.671996 7.064759) + (xy 69.578096 7.093243) (xy 69.578096 6.815615) (xy 69.622033 6.771678) (xy 69.735301 6.60216) (xy 69.813322 6.413802) + (xy 69.853096 6.213843) (xy 69.853096 6.009965) (xy 69.813322 5.810006) (xy 69.735301 5.621648) (xy 69.622033 5.45213) + (xy 69.578096 5.408193) (xy 69.578096 2.175527) (xy 82.303153 2.175527) (xy 82.314327 2.300111) (xy 82.349591 2.420121) + (xy 82.40759 2.530946) (xy 82.486096 2.628326) (xy 82.582091 2.708519) (xy 82.691887 2.768443) (xy 83.520342 3.120101) + (xy 83.639718 3.157455) (xy 83.764088 3.170801) (xy 83.779391 3.169428) (xy 83.785594 3.238586) (xy 83.820858 3.358596) + (xy 83.878857 3.469421) (xy 83.957363 3.566801) (xy 84.053358 3.646994) (xy 84.163153 3.706918) (xy 85.799811 4.401638) + (xy 85.919188 4.438992) (xy 86.043558 4.452338) (xy 86.168142 4.441164) (xy 86.288152 4.4059) (xy 86.398977 4.347901) + (xy 86.496357 4.269395) (xy 86.57655 4.1734) (xy 86.636474 4.063605) (xy 87.331194 2.426947) (xy 87.368548 2.30757) + (xy 87.381894 2.1832) (xy 87.37072 2.058616) (xy 87.335456 1.938606) (xy 87.277457 1.827781) (xy 87.198951 1.730401) + (xy 87.102956 1.650208) (xy 86.993161 1.590284) (xy 85.356503 0.895564) (xy 85.237126 0.85821) (xy 85.112756 0.844864) + (xy 84.988172 0.856038) (xy 84.868162 0.891302) (xy 84.757337 0.949301) (xy 84.703282 0.992879) (xy 84.693638 0.980916) + (xy 84.597643 0.900723) (xy 84.487847 0.840799) (xy 83.659392 0.489141) (xy 83.540016 0.451787) (xy 83.415646 0.438441) + (xy 83.291062 0.449615) (xy 83.171052 0.484879) (xy 83.060227 0.542878) (xy 82.962847 0.621384) (xy 82.882654 0.717379) + (xy 82.82273 0.827175) (xy 82.353853 1.931781) (xy 82.316499 2.051157) (xy 82.303153 2.175527) (xy 69.578096 2.175527) + (xy 69.578096 0.594622) (xy 70.093096 0.594622) (xy 70.217578 0.582362) (xy 70.337276 0.546052) (xy 70.44759 0.487087) + (xy 70.544281 0.407735) (xy 70.623633 0.311044) (xy 70.682598 0.20073) (xy 70.718908 0.081032) (xy 70.731168 -0.04345) + (xy 70.731168 -0.485126) (xy 76.976411 -0.485126) (xy 76.976411 -0.172416) (xy 77.037418 0.134286) (xy 77.157087 0.423192) + (xy 77.330819 0.683201) (xy 77.551939 0.904321) (xy 77.811948 1.078053) (xy 78.100854 1.197722) (xy 78.407556 1.258729) + (xy 78.720266 1.258729) (xy 79.026968 1.197722) (xy 79.29856 1.085225) (xy 79.311925 1.130709) (xy 79.369924 1.241534) + (xy 79.44843 1.338914) (xy 79.544425 1.419107) (xy 79.654221 1.479031) (xy 80.482676 1.830689) (xy 80.602052 1.868043) + (xy 80.726422 1.881389) (xy 80.851006 1.870215) (xy 80.971016 1.834951) (xy 81.081841 1.776952) (xy 81.179221 1.698446) + (xy 81.259414 1.602451) (xy 81.319338 1.492655) (xy 81.788215 0.388049) (xy 81.825569 0.268673) (xy 81.838915 0.144303) + (xy 81.827741 0.019719) (xy 81.792477 -0.100291) (xy 81.734478 -0.211116) (xy 81.655972 -0.308496) (xy 81.559977 -0.388689) + (xy 81.450181 -0.448613) (xy 80.621726 -0.800271) (xy 80.50235 -0.837625) (xy 80.37798 -0.850971) (xy 80.253396 -0.839797) + (xy 80.133386 -0.804533) (xy 80.092168 -0.782962) (xy 80.090404 -0.791828) (xy 79.970735 -1.080734) (xy 79.797003 -1.340743) + (xy 79.575883 -1.561863) (xy 79.315874 -1.735595) (xy 79.026968 -1.855264) (xy 78.720266 -1.916271) (xy 78.407556 -1.916271) + (xy 78.100854 -1.855264) (xy 77.811948 -1.735595) (xy 77.551939 -1.561863) (xy 77.330819 -1.340743) (xy 77.157087 -1.080734) + (xy 77.037418 -0.791828) (xy 76.976411 -0.485126) (xy 70.731168 -0.485126) (xy 70.731168 -2.131721) (xy 76.582298 -7.98285) + (xy 76.582298 -7.299021) (xy 76.594558 -7.174539) (xy 76.630868 -7.054841) (xy 76.689833 -6.944527) (xy 76.769185 -6.847836) + (xy 76.865876 -6.768484) (xy 76.97619 -6.709519) (xy 77.095888 -6.673209) (xy 77.22037 -6.660949) (xy 78.519927 -6.660949) + (xy 78.401319 -6.581697) (xy 78.194351 -6.374729) (xy 78.031737 -6.131361) (xy 77.919727 -5.860944) (xy 77.862625 -5.573871) + (xy 77.862625 -5.281175) (xy 77.919727 -4.994102) (xy 78.031737 -4.723685) (xy 78.194351 -4.480317) (xy 78.401319 -4.273349) + (xy 78.644687 -4.110735) (xy 78.915104 -3.998725) (xy 79.202177 -3.941623) (xy 79.494873 -3.941623) (xy 79.781946 -3.998725) + (xy 80.052363 -4.110735) (xy 80.295731 -4.273349) (xy 80.502699 -4.480317) (xy 80.665313 -4.723685) (xy 80.777323 -4.994102) + (xy 80.826548 -5.241575) (xy 80.887268 -5.216424) (xy 81.299745 -5.134377) (xy 81.720303 -5.134377) (xy 82.067742 -5.203487) + (xy 81.98269 -5.118435) (xy 81.694989 -4.68786) (xy 81.496817 -4.209431) (xy 81.39579 -3.701533) (xy 81.39579 -3.183685) + (xy 81.496817 -2.675787) (xy 81.694989 -2.197358) (xy 81.98269 -1.766783) (xy 82.348864 -1.400609) (xy 82.779439 -1.112908) + (xy 83.257868 -0.914736) (xy 83.765766 -0.813709) (xy 84.283614 -0.813709) (xy 84.791512 -0.914736) (xy 85.269941 -1.112908) + (xy 85.700516 -1.400609) (xy 85.90395 -1.604043) (xy 87.214955 -1.604043) (xy 87.214955 -1.311347) (xy 87.272057 -1.024274) + (xy 87.384067 -0.753857) (xy 87.546681 -0.510489) (xy 87.753649 -0.303521) (xy 87.997017 -0.140907) (xy 88.267434 -0.028897) + (xy 88.554507 0.028205) (xy 88.847203 0.028205) (xy 89.134276 -0.028897) (xy 89.404693 -0.140907) (xy 89.648061 -0.303521) + (xy 89.855029 -0.510489) (xy 90.017643 -0.753857) (xy 90.129653 -1.024274) (xy 90.186755 -1.311347) (xy 90.186755 -1.604043) + (xy 90.129653 -1.891116) (xy 90.017643 -2.161533) (xy 89.855029 -2.404901) (xy 89.648061 -2.611869) (xy 89.404693 -2.774483) + (xy 89.134276 -2.886493) (xy 88.847203 -2.943595) (xy 88.554507 -2.943595) (xy 88.267434 -2.886493) (xy 87.997017 -2.774483) + (xy 87.753649 -2.611869) (xy 87.546681 -2.404901) (xy 87.384067 -2.161533) (xy 87.272057 -1.891116) (xy 87.214955 -1.604043) + (xy 85.90395 -1.604043) (xy 86.06669 -1.766783) (xy 86.354391 -2.197358) (xy 86.552563 -2.675787) (xy 86.65359 -3.183685) + (xy 86.65359 -3.701533) (xy 86.552563 -4.209431) (xy 86.354391 -4.68786) (xy 86.06669 -5.118435) (xy 85.700516 -5.484609) + (xy 85.269941 -5.77231) (xy 84.791512 -5.970482) (xy 84.283614 -6.071509) (xy 83.765766 -6.071509) (xy 83.257868 -5.970482) + (xy 83.191506 -5.942994) (xy 83.402036 -6.258075) (xy 83.562977 -6.646621) (xy 83.645024 -7.059098) (xy 83.645024 -7.479656) + (xy 83.562977 -7.892133) (xy 83.402036 -8.280679) (xy 83.168387 -8.63036) (xy 82.871007 -8.92774) (xy 82.521326 -9.161389) + (xy 82.13278 -9.32233) (xy 81.720303 -9.404377) (xy 81.299745 -9.404377) (xy 80.887268 -9.32233) (xy 80.498722 -9.161389) + (xy 80.408442 -9.101066) (xy 80.408442 -9.799021) (xy 80.396182 -9.923503) (xy 80.359872 -10.043201) (xy 80.300907 -10.153515) + (xy 80.221555 -10.250206) (xy 80.124864 -10.329558) (xy 80.01455 -10.388523) (xy 79.894852 -10.424833) (xy 79.77037 -10.437093) + (xy 77.22037 -10.437093) (xy 77.095888 -10.424833) (xy 77.001987 -10.396348) (xy 77.001987 -16.89497) (xy 77.516987 -16.89497) + (xy 77.641469 -16.90723) (xy 77.761167 -16.94354) (xy 77.871481 -17.002505) (xy 77.968172 -17.081857) (xy 78.047524 -17.178548) + (xy 78.106489 -17.288862) (xy 78.142799 -17.40856) (xy 78.155059 -17.533042) (xy 78.155059 -17.974718) (xy 84.400302 -17.974718) + (xy 84.400302 -17.662008) (xy 84.461309 -17.355306) (xy 84.580978 -17.0664) (xy 84.75471 -16.806391) (xy 84.97583 -16.585271) + (xy 85.235839 -16.411539) (xy 85.524745 -16.29187) (xy 85.831447 -16.230863) (xy 86.144157 -16.230863) (xy 86.450859 -16.29187) + (xy 86.722451 -16.404367) (xy 86.735816 -16.358883) (xy 86.793815 -16.248058) (xy 86.872321 -16.150678) (xy 86.968316 -16.070485) + (xy 87.078112 -16.010561) (xy 87.906567 -15.658903) (xy 88.025943 -15.621549) (xy 88.150313 -15.608203) (xy 88.274897 -15.619377) + (xy 88.394907 -15.654641) (xy 88.505732 -15.71264) (xy 88.603112 -15.791146) (xy 88.683305 -15.887141) (xy 88.743229 -15.996937) + (xy 89.212106 -17.101543) (xy 89.24946 -17.220919) (xy 89.262806 -17.345289) (xy 89.251632 -17.469873) (xy 89.216368 -17.589883) + (xy 89.158369 -17.700708) (xy 89.079863 -17.798088) (xy 88.983868 -17.878281) (xy 88.874072 -17.938205) (xy 88.045617 -18.289863) + (xy 87.926241 -18.327217) (xy 87.801871 -18.340563) (xy 87.677287 -18.329389) (xy 87.557277 -18.294125) (xy 87.516059 -18.272554) + (xy 87.514295 -18.28142) (xy 87.394626 -18.570326) (xy 87.220894 -18.830335) (xy 86.999774 -19.051455) (xy 86.739765 -19.225187) + (xy 86.450859 -19.344856) (xy 86.144157 -19.405863) (xy 85.831447 -19.405863) (xy 85.524745 -19.344856) (xy 85.235839 -19.225187) + (xy 84.97583 -19.051455) (xy 84.75471 -18.830335) (xy 84.580978 -18.570326) (xy 84.461309 -18.28142) (xy 84.400302 -17.974718) + (xy 78.155059 -17.974718) (xy 78.155059 -20.033042) (xy 78.142799 -20.157524) (xy 78.106489 -20.277222) (xy 78.047524 -20.387536) + (xy 77.968172 -20.484227) (xy 77.871481 -20.563579) (xy 77.761167 -20.622544) (xy 77.6807 -20.646954) (xy 84.006189 -26.972442) + (xy 84.006189 -24.788613) (xy 84.018449 -24.664131) (xy 84.054759 -24.544433) (xy 84.113724 -24.434119) (xy 84.193076 -24.337428) + (xy 84.289767 -24.258076) (xy 84.400081 -24.199111) (xy 84.519779 -24.162801) (xy 84.644261 -24.150541) (xy 85.943818 -24.150541) + (xy 85.82521 -24.071289) (xy 85.618242 -23.864321) (xy 85.455628 -23.620953) (xy 85.343618 -23.350536) (xy 85.286516 -23.063463) + (xy 85.286516 -22.770767) (xy 85.343618 -22.483694) (xy 85.455628 -22.213277) (xy 85.618242 -21.969909) (xy 85.82521 -21.762941) + (xy 86.068578 -21.600327) (xy 86.338995 -21.488317) (xy 86.626068 -21.431215) (xy 86.918764 -21.431215) (xy 87.205837 -21.488317) + (xy 87.476254 -21.600327) (xy 87.719622 -21.762941) (xy 87.92659 -21.969909) (xy 88.089204 -22.213277) (xy 88.201214 -22.483694) + (xy 88.250439 -22.731167) (xy 88.311159 -22.706016) (xy 88.723636 -22.623969) (xy 89.144194 -22.623969) (xy 89.491633 -22.693079) + (xy 89.406581 -22.608027) (xy 89.11888 -22.177452) (xy 88.920708 -21.699023) (xy 88.819681 -21.191125) (xy 88.819681 -20.673277) + (xy 88.920708 -20.165379) (xy 89.11888 -19.68695) (xy 89.406581 -19.256375) (xy 89.772755 -18.890201) (xy 90.20333 -18.6025) + (xy 90.681759 -18.404328) (xy 91.189 -18.303432) (xy 89.52908 -16.643511) (xy 89.500082 -16.619713) (xy 89.476284 -16.590715) + (xy 89.476283 -16.590714) (xy 89.405108 -16.503988) (xy 89.334536 -16.371958) (xy 89.310243 -16.29187) (xy 89.29108 -16.228698) + (xy 89.280082 -16.117045) (xy 89.280082 -16.117034) (xy 89.276406 -16.079712) (xy 89.280082 -16.04239) (xy 89.280082 -15.211195) + (xy 89.276406 -15.173873) (xy 89.280082 -15.136551) (xy 89.280082 -15.136541) (xy 89.291079 -15.024888) (xy 89.32171 -14.923909) + (xy 89.334536 -14.881627) (xy 89.405108 -14.749597) (xy 89.434566 -14.713703) (xy 89.500081 -14.633872) (xy 89.529085 -14.610069) + (xy 90.627194 -13.511959) (xy 90.627193 -7.724194) (xy 90.405588 -7.724194) (xy 90.400639 -7.749073) (xy 90.239698 -8.137619) + (xy 90.006049 -8.4873) (xy 89.708669 -8.78468) (xy 89.358988 -9.018329) (xy 88.970442 -9.17927) (xy 88.557965 -9.261317) + (xy 88.137407 -9.261317) (xy 87.72493 -9.17927) (xy 87.336384 -9.018329) (xy 86.986703 -8.78468) (xy 86.689323 -8.4873) + (xy 86.455674 -8.137619) (xy 86.294733 -7.749073) (xy 86.212686 -7.336596) (xy 86.212686 -6.916038) (xy 86.294733 -6.503561) + (xy 86.455674 -6.115015) (xy 86.689323 -5.765334) (xy 86.986703 -5.467954) (xy 87.336384 -5.234305) (xy 87.72493 -5.073364) + (xy 88.137407 -4.991317) (xy 88.557965 -4.991317) (xy 88.970442 -5.073364) (xy 89.358988 -5.234305) (xy 89.474121 -5.311234) + (xy 89.474121 -4.586122) (xy 89.486381 -4.46164) (xy 89.522691 -4.341942) (xy 89.581656 -4.231628) (xy 89.661008 -4.134937) + (xy 89.757699 -4.055585) (xy 89.868013 -3.99662) (xy 89.987711 -3.96031) (xy 90.112193 -3.94805) (xy 90.627194 -3.94805) + (xy 90.627193 3.914776) (xy 86.503584 8.038385) (xy 86.441446 8.038385) (xy 86.241487 8.078159) (xy 86.053129 8.15618) + (xy 85.883611 8.269448) (xy 85.739448 8.413611) (xy 85.62618 8.583129) (xy 85.548159 8.771487) (xy 85.508385 8.971446) + (xy 85.508385 9.033583) (xy 84.77657 9.765398) (xy 82.981696 9.765398) (xy 82.976747 9.740519) (xy 82.815806 9.351973) + (xy 82.582157 9.002292) (xy 82.284777 8.704912) (xy 81.935096 8.471263) (xy 81.54655 8.310322) (xy 81.134073 8.228275) + (xy 80.713515 8.228275) (xy 80.301038 8.310322) (xy 79.912492 8.471263) (xy 79.562811 8.704912) (xy 79.265431 9.002292) + (xy 79.031782 9.351973) (xy 78.870841 9.740519) (xy 78.788794 10.152996) (xy 78.788794 10.573554) (xy 78.870841 10.986031) + (xy 79.031782 11.374577) (xy 79.265431 11.724258) (xy 79.562811 12.021638) (xy 79.912492 12.255287) (xy 80.301038 12.416228) + (xy 80.713515 12.498275) (xy 81.134073 12.498275) (xy 81.54655 12.416228) (xy 81.935096 12.255287) (xy 82.050229 12.178358) + (xy 82.050229 12.90347) (xy 82.062489 13.027952) (xy 82.098799 13.14765) (xy 82.157764 13.257964) (xy 82.237116 13.354655) + (xy 82.333807 13.434007) (xy 82.444121 13.492972) (xy 82.563819 13.529282) (xy 82.688301 13.541542) (xy 83.203302 13.541542) + (xy 83.203301 19.861897) (xy 76.028408 27.036791) (xy 75.99941 27.060589) (xy 75.975612 27.089587) (xy 75.975611 27.089588) + (xy 75.904436 27.176314) (xy 75.862382 27.254991) (xy 75.557805 27.254991) (xy 75.552856 27.230112) (xy 75.391915 26.841566) + (xy 75.158266 26.491885) (xy 74.860886 26.194505) (xy 74.511205 25.960856) (xy 74.122659 25.799915) (xy 73.710182 25.717868) + (xy 73.289624 25.717868) (xy 72.877147 25.799915) (xy 72.488601 25.960856) (xy 72.13892 26.194505) (xy 71.84154 26.491885) + (xy 71.607891 26.841566) (xy 71.44695 27.230112) (xy 71.364903 27.642589) (xy 71.364903 28.063147) (xy 71.44695 28.475624) + (xy 71.607891 28.86417) (xy 71.84154 29.213851) (xy 72.13892 29.511231) (xy 72.488601 29.74488) (xy 72.877147 29.905821) + (xy 73.289624 29.987868) (xy 73.710182 29.987868) (xy 74.122659 29.905821) (xy 74.511205 29.74488) (xy 74.626338 29.667951) + (xy 74.626338 30.393063) (xy 74.638598 30.517545) (xy 74.674908 30.637243) (xy 74.733873 30.747557) (xy 74.813225 30.844248) + (xy 74.909916 30.9236) (xy 75.02023 30.982565) (xy 75.139928 31.018875) (xy 75.26441 31.031135) (xy 77.81441 31.031135) + (xy 77.938892 31.018875) (xy 78.05859 30.982565) (xy 78.168904 30.9236) (xy 78.265595 30.844248) (xy 78.344947 30.747557) + (xy 78.403912 30.637243) (xy 78.440222 30.517545) (xy 78.452482 30.393063) (xy 78.452482 27.893063) (xy 78.440222 27.768581) + (xy 78.403912 27.648883) (xy 78.344947 27.538569) (xy 78.265595 27.441878) (xy 78.168904 27.362526) (xy 78.05859 27.303561) + (xy 77.945535 27.269266) (xy 81.815795 23.399006) (xy 83.131418 23.399006) (xy 83.131418 25.899006) (xy 83.143678 26.023488) + (xy 83.179988 26.143186) (xy 83.238953 26.2535) (xy 83.318305 26.350191) (xy 83.414996 26.429543) (xy 83.52531 26.488508) + (xy 83.645008 26.524818) (xy 83.76949 26.537078) (xy 84.284491 26.537078) (xy 84.284491 26.568523) (xy 84.210747 26.642267) + (xy 84.181743 26.66607) (xy 84.155124 26.698506) (xy 84.08677 26.781795) (xy 84.064586 26.823298) (xy 84.016198 26.913825) + (xy 83.972741 27.057086) (xy 83.961744 27.168739) (xy 83.961744 27.168749) (xy 83.958068 27.206071) (xy 83.961744 27.243394) + (xy 83.961745 31.77548) (xy 83.87994 31.857285) (xy 83.706208 32.117294) (xy 83.586539 32.4062) (xy 83.525532 32.712902) + (xy 83.525532 33.025612) (xy 83.586539 33.332314) (xy 83.706208 33.62122) (xy 83.87994 33.881229) (xy 84.10106 34.102349) + (xy 84.361069 34.276081) (xy 84.649975 34.39575) (xy 84.956677 34.456757) (xy 85.269387 34.456757) (xy 85.576089 34.39575) + (xy 85.847681 34.283253) (xy 85.861046 34.328737) (xy 85.919045 34.439562) (xy 85.997551 34.536942) (xy 86.093546 34.617135) + (xy 86.203342 34.677059) (xy 87.031797 35.028717) (xy 87.151173 35.066071) (xy 87.275543 35.079417) (xy 87.400127 35.068243) + (xy 87.520137 35.032979) (xy 87.630962 34.97498) (xy 87.728342 34.896474) (xy 87.808535 34.800479) (xy 87.868459 34.690683) + (xy 88.337336 33.586077) (xy 88.37469 33.466701) (xy 88.388036 33.342331) (xy 88.376862 33.217747) (xy 88.341598 33.097737) + (xy 88.283599 32.986912) (xy 88.205093 32.889532) (xy 88.109098 32.809339) (xy 87.999302 32.749415) (xy 87.170847 32.397757) + (xy 87.051471 32.360403) (xy 86.927101 32.347057) (xy 86.819847 32.356677) (xy 86.797343 32.329256) (xy 86.681618 32.234283) + (xy 86.549589 32.163711) (xy 86.537573 32.160066) (xy 86.519856 32.117294) (xy 86.346124 31.857285) (xy 86.125004 31.636165) + (xy 85.864995 31.462433) (xy 85.576089 31.342764) (xy 85.481744 31.323998) (xy 85.481744 29.202787) (xy 85.751297 29.256404) + (xy 86.043993 29.256404) (xy 86.331066 29.199302) (xy 86.601483 29.087292) (xy 86.844851 28.924678) (xy 87.051819 28.71771) + (xy 87.214433 28.474342) (xy 87.326443 28.203925) (xy 87.375668 27.956452) (xy 87.436388 27.981603) (xy 87.848865 28.06365) + (xy 88.269423 28.06365) (xy 88.616862 27.99454) (xy 88.53181 28.079592) (xy 88.244109 28.510167) (xy 88.045937 28.988596) + (xy 87.94491 29.496494) (xy 87.94491 30.014342) (xy 88.045937 30.52224) (xy 88.244109 31.000669) (xy 88.53181 31.431244) + (xy 88.897984 31.797418) (xy 89.328559 32.085119) (xy 89.806988 32.283291) (xy 90.314886 32.384318) (xy 90.832734 32.384318) + (xy 91.340632 32.283291) (xy 91.819061 32.085119) (xy 92.249636 31.797418) (xy 92.61581 31.431244) (xy 92.857977 31.068815) + (xy 92.857978 34.497842) (xy 91.905624 34.093592) (xy 91.786247 34.056238) (xy 91.661877 34.042892) (xy 91.537293 34.054066) + (xy 91.417283 34.08933) (xy 91.306458 34.147329) (xy 91.252403 34.190907) (xy 91.242759 34.178944) (xy 91.146764 34.098751) + (xy 91.036968 34.038827) (xy 90.208513 33.687169) (xy 90.089137 33.649815) (xy 89.964767 33.636469) (xy 89.840183 33.647643) + (xy 89.720173 33.682907) (xy 89.609348 33.740906) (xy 89.511968 33.819412) (xy 89.431775 33.915407) (xy 89.371851 34.025203) + (xy 88.902974 35.129809) (xy 88.86562 35.249185) (xy 88.852274 35.373555) (xy 88.863448 35.498139) (xy 88.898712 35.618149) + (xy 88.956711 35.728974) (xy 89.035217 35.826354) (xy 89.131212 35.906547) (xy 89.241008 35.966471) (xy 90.069463 36.318129) + (xy 90.188839 36.355483) (xy 90.313209 36.368829) (xy 90.328512 36.367456) (xy 90.334715 36.436614) (xy 90.369979 36.556624) + (xy 90.427978 36.667449) (xy 90.506484 36.764829) (xy 90.602479 36.845022) (xy 90.712274 36.904946) (xy 92.199123 37.536076) + (xy 91.400199 38.335) (xy 91.338061 38.335) (xy 91.138102 38.374774) (xy 90.949744 38.452795) (xy 90.780226 38.566063) + (xy 90.636063 38.710226) (xy 90.522795 38.879744) (xy 90.444774 39.068102) (xy 90.405 39.268061) (xy 90.405 39.471939) + (xy 90.444774 39.671898) (xy 90.522795 39.860256) (xy 90.636063 40.029774) (xy 90.780226 40.173937) (xy 90.949744 40.287205) + (xy 91.138102 40.365226) (xy 91.338061 40.405) (xy 91.541939 40.405) (xy 91.741898 40.365226) (xy 91.930256 40.287205) + (xy 92.099774 40.173937) (xy 92.243937 40.029774) (xy 92.357205 39.860256) (xy 92.435226 39.671898) (xy 92.475 39.471939) + (xy 92.475 39.409801) (xy 93.081453 38.803348) (xy 110.260287 38.803348) (xy 110.260287 39.007226) (xy 110.300061 39.207185) + (xy 110.378082 39.395543) (xy 110.49135 39.565061) (xy 110.635513 39.709224) (xy 110.805031 39.822492) (xy 110.993389 39.900513) + (xy 111.193348 39.940287) (xy 111.397226 39.940287) (xy 111.597185 39.900513) (xy 111.785543 39.822492) (xy 111.955061 39.709224) + (xy 112.099224 39.565061) (xy 112.212492 39.395543) (xy 112.290513 39.207185) (xy 112.330287 39.007226) (xy 112.330287 38.803348) + (xy 112.290513 38.603389) (xy 112.212492 38.415031) (xy 112.099224 38.245513) (xy 112.055287 38.201576) (xy 112.055287 28.935666) + (xy 123.146504 28.935666) (xy 123.146504 31.435666) (xy 123.158764 31.560148) (xy 123.195074 31.679846) (xy 123.254039 31.79016) + (xy 123.333391 31.886851) (xy 123.430082 31.966203) (xy 123.540396 32.025168) (xy 123.660094 32.061478) (xy 123.784576 32.073738) + (xy 124.40525 32.073738) (xy 124.424602 32.109942) (xy 124.46873 32.163711) (xy 124.519576 32.225667) (xy 124.548574 32.249465) + (xy 128.65674 36.357632) (xy 128.680538 36.38663) (xy 128.796263 36.481603) (xy 128.928292 36.552175) (xy 129.071553 36.595632) + (xy 129.183206 36.606629) (xy 129.183215 36.606629) (xy 129.220538 36.610305) (xy 129.257861 36.606629) (xy 129.618889 36.606629) + (xy 129.787251 36.858601) (xy 130.008371 37.079721) (xy 130.26838 37.253453) (xy 130.557286 37.373122) (xy 130.863988 37.434129) + (xy 131.176698 37.434129) (xy 131.4834 37.373122) (xy 131.772306 37.253453) (xy 132.032315 37.079721) (xy 132.253435 36.858601) + (xy 132.427167 36.598592) (xy 132.444884 36.55582) (xy 132.4569 36.552175) (xy 132.588929 36.481603) (xy 132.704654 36.38663) + (xy 132.727158 36.359209) (xy 132.834412 36.368829) (xy 132.958782 36.355483) (xy 133.078158 36.318129) (xy 133.906613 35.966471) + (xy 134.016409 35.906547) (xy 134.112404 35.826354) (xy 134.19091 35.728974) (xy 134.248909 35.618149) (xy 134.284173 35.498139) + (xy 134.295347 35.373555) (xy 134.282001 35.249185) (xy 134.244647 35.129809) (xy 133.77577 34.025203) (xy 133.715846 33.915407) + (xy 133.635653 33.819412) (xy 133.538273 33.740906) (xy 133.427448 33.682907) (xy 133.307438 33.647643) (xy 133.182854 33.636469) + (xy 133.058484 33.649815) (xy 132.939108 33.687169) (xy 132.110653 34.038827) (xy 132.000857 34.098751) (xy 131.904862 34.178944) + (xy 131.826356 34.276324) (xy 131.768357 34.387149) (xy 131.754992 34.432633) (xy 131.4834 34.320136) (xy 131.176698 34.259129) + (xy 130.863988 34.259129) (xy 130.557286 34.320136) (xy 130.26838 34.439805) (xy 130.008371 34.613537) (xy 129.787251 34.834657) + (xy 129.618889 35.086629) (xy 129.535341 35.086629) (xy 127.791043 33.342331) (xy 134.759585 33.342331) (xy 134.772931 33.466701) + (xy 134.810285 33.586077) (xy 135.279162 34.690683) (xy 135.339086 34.800479) (xy 135.419279 34.896474) (xy 135.516659 34.97498) + (xy 135.627484 35.032979) (xy 135.747494 35.068243) (xy 135.872078 35.079417) (xy 135.996448 35.066071) (xy 136.115824 35.028717) + (xy 136.944279 34.677059) (xy 137.054075 34.617135) (xy 137.15007 34.536942) (xy 137.159714 34.524979) (xy 137.213769 34.568557) + (xy 137.324594 34.626556) (xy 137.444604 34.66182) (xy 137.569188 34.672994) (xy 137.693558 34.659648) (xy 137.812935 34.622294) + (xy 139.449593 33.927574) (xy 139.559388 33.86765) (xy 139.655383 33.787457) (xy 139.733889 33.690077) (xy 139.791888 33.579252) + (xy 139.827152 33.459242) (xy 139.838326 33.334658) (xy 139.82498 33.210288) (xy 139.787626 33.090911) (xy 139.092906 31.454253) + (xy 139.032982 31.344458) (xy 138.952789 31.248463) (xy 138.855409 31.169957) (xy 138.744584 31.111958) (xy 138.624574 31.076694) + (xy 138.49999 31.06552) (xy 138.37562 31.078866) (xy 138.256243 31.11622) (xy 136.619585 31.81094) (xy 136.50979 31.870864) + (xy 136.413795 31.951057) (xy 136.335289 32.048437) (xy 136.27729 32.159262) (xy 136.242026 32.279272) (xy 136.235823 32.34843) + (xy 136.22052 32.347057) (xy 136.09615 32.360403) (xy 135.976774 32.397757) (xy 135.148319 32.749415) (xy 135.038523 32.809339) + (xy 134.942528 32.889532) (xy 134.864022 32.986912) (xy 134.806023 33.097737) (xy 134.770759 33.217747) (xy 134.759585 33.342331) + (xy 127.791043 33.342331) (xy 127.655985 33.207273) (xy 127.751297 33.226232) (xy 128.043993 33.226232) (xy 128.331066 33.16913) + (xy 128.601483 33.05712) (xy 128.844851 32.894506) (xy 129.051819 32.687538) (xy 129.214433 32.44417) (xy 129.326443 32.173753) + (xy 129.383545 31.88668) (xy 129.383545 31.593984) (xy 129.326443 31.306911) (xy 129.214433 31.036494) (xy 129.061695 30.807906) + (xy 129.085531 30.798033) (xy 129.435212 30.564384) (xy 129.732592 30.267004) (xy 129.94491 29.949247) (xy 129.94491 30.014342) + (xy 130.045937 30.52224) (xy 130.244109 31.000669) (xy 130.53181 31.431244) (xy 130.897984 31.797418) (xy 131.328559 32.085119) + (xy 131.806988 32.283291) (xy 132.314886 32.384318) (xy 132.832734 32.384318) (xy 133.340632 32.283291) (xy 133.819061 32.085119) + (xy 134.249636 31.797418) (xy 134.61581 31.431244) (xy 134.903511 31.000669) (xy 135.021083 30.716824) (xy 144.543408 30.716824) + (xy 144.543408 33.216824) (xy 144.555668 33.341306) (xy 144.591978 33.461004) (xy 144.650943 33.571318) (xy 144.730295 33.668009) + (xy 144.826986 33.747361) (xy 144.9373 33.806326) (xy 145.056998 33.842636) (xy 145.18148 33.854896) (xy 145.802154 33.854896) + (xy 145.821506 33.8911) (xy 145.85144 33.927574) (xy 145.91648 34.006825) (xy 145.945478 34.030623) (xy 150.053643 38.138789) + (xy 150.077441 38.167787) (xy 150.106439 38.191585) (xy 150.193165 38.26276) (xy 150.325195 38.333332) (xy 150.468456 38.376789) + (xy 150.580109 38.387786) (xy 150.580119 38.387786) (xy 150.617442 38.391462) (xy 150.654765 38.387786) (xy 151.015792 38.387786) + (xy 151.184154 38.639758) (xy 151.405274 38.860878) (xy 151.665283 39.03461) (xy 151.954189 39.154279) (xy 152.260891 39.215286) + (xy 152.573601 39.215286) (xy 152.880303 39.154279) (xy 153.169209 39.03461) (xy 153.429218 38.860878) (xy 153.650338 38.639758) + (xy 153.82407 38.379749) (xy 153.841787 38.336977) (xy 153.853803 38.333332) (xy 153.985832 38.26276) (xy 154.101557 38.167787) + (xy 154.124061 38.140366) (xy 154.231315 38.149986) (xy 154.355685 38.13664) (xy 154.475061 38.099286) (xy 155.303516 37.747628) + (xy 155.413312 37.687704) (xy 155.509307 37.607511) (xy 155.587813 37.510131) (xy 155.645812 37.399306) (xy 155.681076 37.279296) + (xy 155.69225 37.154712) (xy 155.678904 37.030342) (xy 155.64155 36.910966) (xy 155.172673 35.80636) (xy 155.112749 35.696564) + (xy 155.032556 35.600569) (xy 154.935176 35.522063) (xy 154.824351 35.464064) (xy 154.704341 35.4288) (xy 154.579757 35.417626) + (xy 154.455387 35.430972) (xy 154.336011 35.468326) (xy 153.507556 35.819984) (xy 153.39776 35.879908) (xy 153.301765 35.960101) + (xy 153.223259 36.057481) (xy 153.16526 36.168306) (xy 153.151895 36.21379) (xy 152.880303 36.101293) (xy 152.573601 36.040286) + (xy 152.260891 36.040286) (xy 151.954189 36.101293) (xy 151.665283 36.220962) (xy 151.405274 36.394694) (xy 151.184154 36.615814) + (xy 151.015792 36.867786) (xy 150.932244 36.867786) (xy 149.187946 35.123488) (xy 156.156488 35.123488) (xy 156.169834 35.247858) + (xy 156.207188 35.367234) (xy 156.676065 36.47184) (xy 156.735989 36.581636) (xy 156.816182 36.677631) (xy 156.913562 36.756137) + (xy 157.024387 36.814136) (xy 157.144397 36.8494) (xy 157.268981 36.860574) (xy 157.393351 36.847228) (xy 157.512727 36.809874) + (xy 158.341182 36.458216) (xy 158.450978 36.398292) (xy 158.546973 36.318099) (xy 158.556617 36.306136) (xy 158.610672 36.349714) + (xy 158.721497 36.407713) (xy 158.841507 36.442977) (xy 158.966091 36.454151) (xy 159.090461 36.440805) (xy 159.209838 36.403451) + (xy 160.846496 35.708731) (xy 160.956291 35.648807) (xy 161.052286 35.568614) (xy 161.130792 35.471234) (xy 161.188791 35.360409) + (xy 161.224055 35.240399) (xy 161.235229 35.115815) (xy 161.221883 34.991445) (xy 161.184529 34.872068) (xy 160.489809 33.23541) + (xy 160.429885 33.125615) (xy 160.349692 33.02962) (xy 160.252312 32.951114) (xy 160.141487 32.893115) (xy 160.021477 32.857851) + (xy 159.896893 32.846677) (xy 159.772523 32.860023) (xy 159.653146 32.897377) (xy 158.016488 33.592097) (xy 157.906693 33.652021) + (xy 157.810698 33.732214) (xy 157.732192 33.829594) (xy 157.674193 33.940419) (xy 157.638929 34.060429) (xy 157.632726 34.129587) + (xy 157.617423 34.128214) (xy 157.493053 34.14156) (xy 157.373677 34.178914) (xy 156.545222 34.530572) (xy 156.435426 34.590496) + (xy 156.339431 34.670689) (xy 156.260925 34.768069) (xy 156.202926 34.878894) (xy 156.167662 34.998904) (xy 156.156488 35.123488) + (xy 149.187946 35.123488) (xy 149.052889 34.988431) (xy 149.148201 35.00739) (xy 149.440897 35.00739) (xy 149.72797 34.950288) + (xy 149.998387 34.838278) (xy 150.241755 34.675664) (xy 150.448723 34.468696) (xy 150.611337 34.225328) (xy 150.723347 33.954911) + (xy 150.780449 33.667838) (xy 150.780449 33.375142) (xy 150.723347 33.088069) (xy 150.611337 32.817652) (xy 150.458599 32.589064) + (xy 150.482435 32.579191) (xy 150.832116 32.345542) (xy 151.129496 32.048162) (xy 151.341814 31.730405) (xy 151.341814 31.7955) + (xy 151.442841 32.303398) (xy 151.641013 32.781827) (xy 151.928714 33.212402) (xy 152.294888 33.578576) (xy 152.725463 33.866277) + (xy 153.203892 34.064449) (xy 153.71179 34.165476) (xy 154.229638 34.165476) (xy 154.737536 34.064449) (xy 155.215965 33.866277) + (xy 155.64654 33.578576) (xy 156.012714 33.212402) (xy 156.300415 32.781827) (xy 156.498587 32.303398) (xy 156.599614 31.7955) + (xy 156.599614 31.277652) (xy 156.498587 30.769754) (xy 156.300415 30.291325) (xy 156.012714 29.86075) (xy 155.64654 29.494576) + (xy 155.51295 29.405314) (xy 157.160979 29.405314) (xy 157.160979 29.69801) (xy 157.218081 29.985083) (xy 157.330091 30.2555) + (xy 157.492705 30.498868) (xy 157.699673 30.705836) (xy 157.943041 30.86845) (xy 158.213458 30.98046) (xy 158.500531 31.037562) + (xy 158.793227 31.037562) (xy 159.0803 30.98046) (xy 159.350717 30.86845) (xy 159.594085 30.705836) (xy 159.801053 30.498868) + (xy 159.963667 30.2555) (xy 160.075677 29.985083) (xy 160.132779 29.69801) (xy 160.132779 29.405314) (xy 160.075677 29.118241) + (xy 159.963667 28.847824) (xy 159.801053 28.604456) (xy 159.594085 28.397488) (xy 159.350717 28.234874) (xy 159.0803 28.122864) + (xy 158.793227 28.065762) (xy 158.500531 28.065762) (xy 158.213458 28.122864) (xy 157.943041 28.234874) (xy 157.699673 28.397488) + (xy 157.492705 28.604456) (xy 157.330091 28.847824) (xy 157.218081 29.118241) (xy 157.160979 29.405314) (xy 155.51295 29.405314) + (xy 155.215965 29.206875) (xy 154.737536 29.008703) (xy 154.229638 28.907676) (xy 153.71179 28.907676) (xy 153.203892 29.008703) + (xy 152.725463 29.206875) (xy 152.294888 29.494576) (xy 151.928714 29.86075) (xy 151.641013 30.291325) (xy 151.592511 30.408419) + (xy 151.524086 30.064423) (xy 151.363145 29.675877) (xy 151.129496 29.326196) (xy 150.832116 29.028816) (xy 150.482435 28.795167) + (xy 150.093889 28.634226) (xy 149.681412 28.552179) (xy 149.260854 28.552179) (xy 148.848377 28.634226) (xy 148.459831 28.795167) + (xy 148.11015 29.028816) (xy 147.81277 29.326196) (xy 147.579121 29.675877) (xy 147.41818 30.064423) (xy 147.41533 30.078752) + (xy 145.18148 30.078752) (xy 145.056998 30.091012) (xy 144.9373 30.127322) (xy 144.826986 30.186287) (xy 144.730295 30.265639) + (xy 144.650943 30.36233) (xy 144.591978 30.472644) (xy 144.555668 30.592342) (xy 144.543408 30.716824) (xy 135.021083 30.716824) + (xy 135.101683 30.52224) (xy 135.20271 30.014342) (xy 135.20271 29.496494) (xy 135.101683 28.988596) (xy 134.903511 28.510167) + (xy 134.61581 28.079592) (xy 134.249636 27.713418) (xy 134.116046 27.624156) (xy 135.764075 27.624156) (xy 135.764075 27.916852) + (xy 135.821177 28.203925) (xy 135.933187 28.474342) (xy 136.095801 28.71771) (xy 136.302769 28.924678) (xy 136.546137 29.087292) + (xy 136.816554 29.199302) (xy 137.103627 29.256404) (xy 137.396323 29.256404) (xy 137.683396 29.199302) (xy 137.953813 29.087292) + (xy 138.197181 28.924678) (xy 138.404149 28.71771) (xy 138.566763 28.474342) (xy 138.678773 28.203925) (xy 138.735875 27.916852) + (xy 138.735875 27.624156) (xy 138.678773 27.337083) (xy 138.566763 27.066666) (xy 138.404149 26.823298) (xy 138.197181 26.61633) + (xy 137.953813 26.453716) (xy 137.683396 26.341706) (xy 137.396323 26.284604) (xy 137.103627 26.284604) (xy 136.816554 26.341706) + (xy 136.546137 26.453716) (xy 136.302769 26.61633) (xy 136.095801 26.823298) (xy 135.933187 27.066666) (xy 135.821177 27.337083) + (xy 135.764075 27.624156) (xy 134.116046 27.624156) (xy 133.819061 27.425717) (xy 133.340632 27.227545) (xy 132.832734 27.126518) + (xy 132.314886 27.126518) (xy 131.806988 27.227545) (xy 131.328559 27.425717) (xy 130.897984 27.713418) (xy 130.53181 28.079592) + (xy 130.244109 28.510167) (xy 130.195607 28.627261) (xy 130.127182 28.283265) (xy 129.966241 27.894719) (xy 129.732592 27.545038) + (xy 129.435212 27.247658) (xy 129.085531 27.014009) (xy 128.696985 26.853068) (xy 128.284508 26.771021) (xy 127.86395 26.771021) + (xy 127.451473 26.853068) (xy 127.062927 27.014009) (xy 126.713246 27.247658) (xy 126.415866 27.545038) (xy 126.182217 27.894719) + (xy 126.021276 28.283265) (xy 126.018426 28.297594) (xy 123.784576 28.297594) (xy 123.660094 28.309854) (xy 123.540396 28.346164) + (xy 123.430082 28.405129) (xy 123.333391 28.484481) (xy 123.254039 28.581172) (xy 123.195074 28.691486) (xy 123.158764 28.811184) + (xy 123.146504 28.935666) (xy 112.055287 28.935666) (xy 112.055287 21.488061) (xy 129.775 21.488061) (xy 129.775 21.691939) + (xy 129.814774 21.891898) (xy 129.892795 22.080256) (xy 130.006063 22.249774) (xy 130.150226 22.393937) (xy 130.319744 22.507205) + (xy 130.508102 22.585226) (xy 130.708061 22.625) (xy 130.911939 22.625) (xy 131.111898 22.585226) (xy 131.300256 22.507205) + (xy 131.469774 22.393937) (xy 131.513711 22.35) (xy 131.683378 22.35) (xy 131.565995 22.428433) (xy 131.268615 22.725813) + (xy 131.034966 23.075494) (xy 130.874025 23.46404) (xy 130.791978 23.876517) (xy 130.791978 24.297075) (xy 130.874025 24.709552) + (xy 131.034966 25.098098) (xy 131.268615 25.447779) (xy 131.565995 25.745159) (xy 131.915676 25.978808) (xy 132.304222 26.139749) + (xy 132.716699 26.221796) (xy 133.137257 26.221796) (xy 133.549734 26.139749) (xy 133.93828 25.978808) (xy 134.287961 25.745159) + (xy 134.585341 25.447779) (xy 134.81899 25.098098) (xy 134.979931 24.709552) (xy 134.98488 24.684674) (xy 137.241485 24.684674) + (xy 137.365967 24.672414) (xy 137.485665 24.636104) (xy 137.595979 24.577139) (xy 137.69267 24.497787) (xy 137.772022 24.401096) + (xy 137.830987 24.290782) (xy 137.867297 24.171084) (xy 137.879557 24.046602) (xy 137.879557 21.546602) (xy 137.867297 21.42212) + (xy 137.830987 21.302422) (xy 137.772022 21.192108) (xy 137.69267 21.095417) (xy 137.595979 21.016065) (xy 137.485665 20.9571) + (xy 137.365967 20.92079) (xy 137.241485 20.90853) (xy 135.097172 20.90853) (xy 135.05213 20.884454) (xy 134.908869 20.840997) + (xy 134.797216 20.83) (xy 134.797205 20.83) (xy 134.759883 20.826324) (xy 134.722561 20.83) (xy 131.513711 20.83) + (xy 131.469774 20.786063) (xy 131.300256 20.672795) (xy 131.111898 20.594774) (xy 130.911939 20.555) (xy 130.708061 20.555) + (xy 130.508102 20.594774) (xy 130.319744 20.672795) (xy 130.150226 20.786063) (xy 130.006063 20.930226) (xy 129.892795 21.099744) + (xy 129.814774 21.288102) (xy 129.775 21.488061) (xy 112.055287 21.488061) (xy 112.055287 19.538998) (xy 112.180919 19.66463) + (xy 112.350437 19.777898) (xy 112.538795 19.855919) (xy 112.738754 19.895693) (xy 112.942632 19.895693) (xy 113.142591 19.855919) + (xy 113.330949 19.777898) (xy 113.500467 19.66463) (xy 113.64463 19.520467) (xy 113.757898 19.350949) (xy 113.835919 19.162591) + (xy 113.875693 18.962632) (xy 113.875693 18.758754) (xy 113.835919 18.558795) (xy 113.79 18.447938) (xy 113.79 5.783711) + (xy 113.833937 5.739774) (xy 113.947205 5.570256) (xy 114.025226 5.381898) (xy 114.065 5.181939) (xy 114.065 4.978061) + (xy 114.025226 4.778102) (xy 113.947205 4.589744) (xy 113.833937 4.420226) (xy 113.689774 4.276063) (xy 113.520256 4.162795) + (xy 113.331898 4.084774) (xy 113.131939 4.045) (xy 112.928061 4.045) (xy 112.728102 4.084774) (xy 112.539744 4.162795) + (xy 112.370226 4.276063) (xy 112.226063 4.420226) (xy 112.112795 4.589744) (xy 112.034774 4.778102) (xy 111.995 4.978061) + (xy 111.995 5.181939) (xy 112.034774 5.381898) (xy 112.112795 5.570256) (xy 112.226063 5.739774) (xy 112.27 5.783711) + (xy 112.27 6.715988) (xy 112.250256 6.702795) (xy 112.061898 6.624774) (xy 111.861939 6.585) (xy 111.658061 6.585) + (xy 111.458102 6.624774) (xy 111.269744 6.702795) (xy 111.100226 6.816063) (xy 110.956063 6.960226) (xy 110.842795 7.129744) + (xy 110.764774 7.318102) (xy 110.725 7.518061) (xy 110.725 7.581616) (xy 110.710595 7.599169) (xy 110.660313 7.660437) + (xy 110.59966 7.77391) (xy 110.589741 7.792467) (xy 110.546284 7.935728) (xy 110.535287 8.047381) (xy 110.535287 8.047391) + (xy 110.531611 8.084713) (xy 110.535287 8.122035) (xy 110.535288 38.201575) (xy 110.49135 38.245513) (xy 110.378082 38.415031) + (xy 110.300061 38.603389) (xy 110.260287 38.803348) (xy 93.081453 38.803348) (xy 94.12898 37.755822) (xy 94.157978 37.732024) + (xy 94.252951 37.616299) (xy 94.323523 37.48427) (xy 94.36698 37.341009) (xy 94.377977 37.229356) (xy 94.381654 37.192023) + (xy 94.377977 37.15469) (xy 94.377977 32.944759) (xy 94.546137 33.05712) (xy 94.816554 33.16913) (xy 95.103627 33.226232) + (xy 95.396323 33.226232) (xy 95.683396 33.16913) (xy 95.953813 33.05712) (xy 96.197181 32.894506) (xy 96.404149 32.687538) + (xy 96.566763 32.44417) (xy 96.678773 32.173753) (xy 96.735875 31.88668) (xy 96.735875 31.593984) (xy 96.678773 31.306911) + (xy 96.566763 31.036494) (xy 96.404149 30.793126) (xy 96.197181 30.586158) (xy 95.953813 30.423544) (xy 95.683396 30.311534) + (xy 95.396323 30.254432) (xy 95.103627 30.254432) (xy 94.816554 30.311534) (xy 94.546137 30.423544) (xy 94.377977 30.535905) + (xy 94.377977 29.404933) (xy 94.381653 29.36761) (xy 94.377977 29.330287) (xy 94.377977 29.330278) (xy 94.36698 29.218625) + (xy 94.323523 29.075364) (xy 94.252951 28.943335) (xy 94.157978 28.82761) (xy 94.128981 28.803813) (xy 92.446883 27.121716) + (xy 92.446883 25.861431) (xy 92.761806 25.861431) (xy 92.761806 26.281989) (xy 92.843853 26.694466) (xy 93.004794 27.083012) + (xy 93.238443 27.432693) (xy 93.535823 27.730073) (xy 93.885504 27.963722) (xy 94.27405 28.124663) (xy 94.686527 28.20671) + (xy 95.107085 28.20671) (xy 95.519562 28.124663) (xy 95.908108 27.963722) (xy 96.023241 27.886793) (xy 96.023241 28.611905) + (xy 96.035501 28.736387) (xy 96.071811 28.856085) (xy 96.130776 28.966399) (xy 96.210128 29.06309) (xy 96.306819 29.142442) + (xy 96.417133 29.201407) (xy 96.536831 29.237717) (xy 96.661313 29.249977) (xy 99.211313 29.249977) (xy 99.335795 29.237717) + (xy 99.455493 29.201407) (xy 99.565807 29.142442) (xy 99.662498 29.06309) (xy 99.74185 28.966399) (xy 99.800815 28.856085) + (xy 99.837125 28.736387) (xy 99.849385 28.611905) (xy 99.849385 26.111905) (xy 99.837125 25.987423) (xy 99.800815 25.867725) + (xy 99.74185 25.757411) (xy 99.662498 25.66072) (xy 99.565807 25.581368) (xy 99.455493 25.522403) (xy 99.335795 25.486093) + (xy 99.211313 25.473833) (xy 98.696313 25.473833) (xy 98.696313 24.298488) (xy 100.369802 22.625) (xy 100.431939 22.625) + (xy 100.631898 22.585226) (xy 100.820256 22.507205) (xy 100.989774 22.393937) (xy 101.133937 22.249774) (xy 101.247205 22.080256) + (xy 101.325226 21.891898) (xy 101.365 21.691939) (xy 101.365 21.488061) (xy 101.325226 21.288102) (xy 101.247205 21.099744) + (xy 101.133937 20.930226) (xy 101.09 20.886289) (xy 101.09 15.926002) (xy 102.44251 14.573492) (xy 102.44251 14.676241) + (xy 102.500588 14.968221) (xy 102.614513 15.24326) (xy 102.779906 15.490789) (xy 102.990412 15.701295) (xy 103.237941 15.866688) + (xy 103.51298 15.980613) (xy 103.80496 16.038691) (xy 104.10266 16.038691) (xy 104.39464 15.980613) (xy 104.669679 15.866688) + (xy 104.917208 15.701295) (xy 105.127714 15.490789) (xy 105.293107 15.24326) (xy 105.407032 14.968221) (xy 105.46511 14.676241) + (xy 105.46511 14.378541) (xy 105.407032 14.086561) (xy 105.293107 13.811522) (xy 105.127714 13.563993) (xy 104.917208 13.353487) + (xy 104.77339 13.257391) (xy 104.917208 13.161295) (xy 105.127714 12.950789) (xy 105.293107 12.70326) (xy 105.407032 12.428221) + (xy 105.46511 12.136241) (xy 105.46511 11.838541) (xy 105.407032 11.546561) (xy 105.293107 11.271522) (xy 105.127714 11.023993) + (xy 104.917208 10.813487) (xy 104.77339 10.717391) (xy 104.917208 10.621295) (xy 105.127714 10.410789) (xy 105.293107 10.16326) + (xy 105.407032 9.888221) (xy 105.46511 9.596241) (xy 105.46511 9.298541) (xy 105.407032 9.006561) (xy 105.293107 8.731522) + (xy 105.127714 8.483993) (xy 104.917208 8.273487) (xy 104.77339 8.177391) (xy 104.917208 8.081295) (xy 105.127714 7.870789) + (xy 105.293107 7.62326) (xy 105.407032 7.348221) (xy 105.46511 7.056241) (xy 105.46511 6.758541) (xy 105.407032 6.466561) + (xy 105.293107 6.191522) (xy 105.127714 5.943993) (xy 104.917208 5.733487) (xy 104.77339 5.637391) (xy 104.917208 5.541295) + (xy 105.127714 5.330789) (xy 105.293107 5.08326) (xy 105.407032 4.808221) (xy 105.46511 4.516241) (xy 105.46511 4.218541) + (xy 105.407032 3.926561) (xy 105.293107 3.651522) (xy 105.127714 3.403993) (xy 104.917208 3.193487) (xy 104.77339 3.097391) + (xy 104.917208 3.001295) (xy 105.127714 2.790789) (xy 105.293107 2.54326) (xy 105.407032 2.268221) (xy 105.46511 1.976241) + (xy 105.46511 1.678541) (xy 105.407032 1.386561) (xy 105.293107 1.111522) (xy 105.127714 0.863993) (xy 104.917208 0.653487) + (xy 104.77339 0.557391) (xy 104.917208 0.461295) (xy 105.127714 0.250789) (xy 105.293107 0.00326) (xy 105.407032 -0.271779) + (xy 105.46511 -0.563759) (xy 105.46511 -0.861459) (xy 105.407032 -1.153439) (xy 105.293107 -1.428478) (xy 105.127714 -1.676007) + (xy 104.917208 -1.886513) (xy 104.77339 -1.982609) (xy 104.917208 -2.078705) (xy 105.127714 -2.289211) (xy 105.293107 -2.53674) + (xy 105.407032 -2.811779) (xy 105.46511 -3.103759) (xy 105.46511 -3.401459) (xy 105.407032 -3.693439) (xy 105.293107 -3.968478) + (xy 105.127714 -4.216007) (xy 104.917208 -4.426513) (xy 104.77339 -4.522609) (xy 104.917208 -4.618705) (xy 105.127714 -4.829211) + (xy 105.293107 -5.07674) (xy 105.407032 -5.351779) (xy 105.46511 -5.643759) (xy 105.46511 -5.941459) (xy 105.407032 -6.233439) + (xy 105.293107 -6.508478) (xy 105.127714 -6.756007) (xy 104.917208 -6.966513) (xy 104.77339 -7.062609) (xy 104.917208 -7.158705) + (xy 105.127714 -7.369211) (xy 105.293107 -7.61674) (xy 105.407032 -7.891779) (xy 105.46511 -8.183759) (xy 105.46511 -8.481459) + (xy 105.407032 -8.773439) (xy 105.293107 -9.048478) (xy 105.127714 -9.296007) (xy 104.917208 -9.506513) (xy 104.754001 -9.615564) + (xy 104.821373 -9.82544) (xy 103.95381 -10.693004) (xy 103.086247 -9.82544) (xy 103.153619 -9.615564) (xy 102.990412 -9.506513) + (xy 102.779906 -9.296007) (xy 102.614513 -9.048478) (xy 102.500588 -8.773439) (xy 102.44251 -8.481459) (xy 102.44251 -8.183759) + (xy 102.500588 -7.891779) (xy 102.614513 -7.61674) (xy 102.779906 -7.369211) (xy 102.990412 -7.158705) (xy 103.13423 -7.062609) + (xy 102.990412 -6.966513) (xy 102.779906 -6.756007) (xy 102.614513 -6.508478) (xy 102.500588 -6.233439) (xy 102.44251 -5.941459) + (xy 102.44251 -5.643759) (xy 102.500588 -5.351779) (xy 102.614513 -5.07674) (xy 102.779906 -4.829211) (xy 102.990412 -4.618705) + (xy 103.13423 -4.522609) (xy 102.990412 -4.426513) (xy 102.779906 -4.216007) (xy 102.614513 -3.968478) (xy 102.500588 -3.693439) + (xy 102.44251 -3.401459) (xy 102.44251 -3.103759) (xy 102.500588 -2.811779) (xy 102.614513 -2.53674) (xy 102.779906 -2.289211) + (xy 102.990412 -2.078705) (xy 103.13423 -1.982609) (xy 102.990412 -1.886513) (xy 102.779906 -1.676007) (xy 102.614513 -1.428478) + (xy 102.500588 -1.153439) (xy 102.44251 -0.861459) (xy 102.44251 -0.563759) (xy 102.500588 -0.271779) (xy 102.614513 0.00326) + (xy 102.779906 0.250789) (xy 102.990412 0.461295) (xy 103.13423 0.557391) (xy 102.990412 0.653487) (xy 102.779906 0.863993) + (xy 102.614513 1.111522) (xy 102.500588 1.386561) (xy 102.44251 1.678541) (xy 102.44251 1.976241) (xy 102.500588 2.268221) + (xy 102.614513 2.54326) (xy 102.779906 2.790789) (xy 102.990412 3.001295) (xy 103.13423 3.097391) (xy 102.990412 3.193487) + (xy 102.779906 3.403993) (xy 102.614513 3.651522) (xy 102.500588 3.926561) (xy 102.44251 4.218541) (xy 102.44251 4.516241) + (xy 102.500588 4.808221) (xy 102.614513 5.08326) (xy 102.779906 5.330789) (xy 102.990412 5.541295) (xy 103.13423 5.637391) + (xy 102.990412 5.733487) (xy 102.779906 5.943993) (xy 102.614513 6.191522) (xy 102.500588 6.466561) (xy 102.44251 6.758541) + (xy 102.44251 7.056241) (xy 102.500588 7.348221) (xy 102.614513 7.62326) (xy 102.779906 7.870789) (xy 102.990412 8.081295) + (xy 103.13423 8.177391) (xy 102.990412 8.273487) (xy 102.779906 8.483993) (xy 102.614513 8.731522) (xy 102.500588 9.006561) + (xy 102.44251 9.298541) (xy 102.44251 9.596241) (xy 102.500588 9.888221) (xy 102.614513 10.16326) (xy 102.779906 10.410789) + (xy 102.990412 10.621295) (xy 103.13423 10.717391) (xy 102.990412 10.813487) (xy 102.779906 11.023993) (xy 102.614513 11.271522) + (xy 102.500588 11.546561) (xy 102.44251 11.838541) (xy 102.44251 12.136241) (xy 102.490234 12.376166) (xy 99.819003 15.047397) + (xy 99.789999 15.0712) (xy 99.734871 15.138375) (xy 99.695026 15.186925) (xy 99.624455 15.318954) (xy 99.624454 15.318955) + (xy 99.580997 15.462216) (xy 99.57 15.573869) (xy 99.57 15.573879) (xy 99.566324 15.611201) (xy 99.57 15.648524) + (xy 99.570001 20.886288) (xy 99.526063 20.930226) (xy 99.412795 21.099744) (xy 99.334774 21.288102) (xy 99.295 21.488061) + (xy 99.295 21.550198) (xy 97.425311 23.419888) (xy 97.396313 23.443686) (xy 97.372515 23.472684) (xy 97.372514 23.472685) + (xy 97.301339 23.559411) (xy 97.230767 23.691441) (xy 97.200493 23.791245) (xy 97.187311 23.834701) (xy 97.178033 23.928902) + (xy 97.172637 23.983687) (xy 97.176314 24.021019) (xy 97.176314 25.473833) (xy 96.954708 25.473833) (xy 96.949759 25.448954) + (xy 96.788818 25.060408) (xy 96.555169 24.710727) (xy 96.257789 24.413347) (xy 95.908108 24.179698) (xy 95.519562 24.018757) + (xy 95.107085 23.93671) (xy 94.686527 23.93671) (xy 94.27405 24.018757) (xy 93.885504 24.179698) (xy 93.535823 24.413347) + (xy 93.238443 24.710727) (xy 93.004794 25.060408) (xy 92.843853 25.448954) (xy 92.761806 25.861431) (xy 92.446883 25.861431) + (xy 92.446883 22.927918) (xy 96.559802 18.815) (xy 96.621939 18.815) (xy 96.821898 18.775226) (xy 97.010256 18.697205) + (xy 97.179774 18.583937) (xy 97.323937 18.439774) (xy 97.437205 18.270256) (xy 97.515226 18.081898) (xy 97.555 17.881939) + (xy 97.555 17.678061) (xy 97.515226 17.478102) (xy 97.437205 17.289744) (xy 97.323937 17.120226) (xy 97.179774 16.976063) + (xy 97.010256 16.862795) (xy 96.821898 16.784774) (xy 96.621939 16.745) (xy 96.418061 16.745) (xy 96.218102 16.784774) + (xy 96.029744 16.862795) (xy 95.860226 16.976063) (xy 95.716063 17.120226) (xy 95.602795 17.289744) (xy 95.524774 17.478102) + (xy 95.485 17.678061) (xy 95.485 17.740198) (xy 91.175886 22.049313) (xy 91.146882 22.073116) (xy 91.105783 22.123196) + (xy 91.051909 22.188841) (xy 90.995979 22.293478) (xy 90.981337 22.320871) (xy 90.93788 22.464132) (xy 90.926883 22.575785) + (xy 90.926883 22.575795) (xy 90.923207 22.613117) (xy 90.926883 22.65044) (xy 90.926884 27.145246) (xy 90.832734 27.126518) + (xy 90.314886 27.126518) (xy 89.806988 27.227545) (xy 89.740626 27.255033) (xy 89.951156 26.939952) (xy 90.112097 26.551406) + (xy 90.194144 26.138929) (xy 90.194144 25.718371) (xy 90.112097 25.305894) (xy 89.951156 24.917348) (xy 89.717507 24.567667) + (xy 89.420127 24.270287) (xy 89.070446 24.036638) (xy 88.6819 23.875697) (xy 88.269423 23.79365) (xy 87.848865 23.79365) + (xy 87.436388 23.875697) (xy 87.047842 24.036638) (xy 86.957562 24.096961) (xy 86.957562 23.399006) (xy 86.945302 23.274524) + (xy 86.908992 23.154826) (xy 86.850027 23.044512) (xy 86.770675 22.947821) (xy 86.673984 22.868469) (xy 86.56367 22.809504) + (xy 86.443972 22.773194) (xy 86.31949 22.760934) (xy 83.76949 22.760934) (xy 83.645008 22.773194) (xy 83.52531 22.809504) + (xy 83.414996 22.868469) (xy 83.318305 22.947821) (xy 83.238953 23.044512) (xy 83.179988 23.154826) (xy 83.143678 23.274524) + (xy 83.131418 23.399006) (xy 81.815795 23.399006) (xy 84.474305 20.740497) (xy 84.503302 20.7167) (xy 84.598275 20.600975) + (xy 84.668847 20.468946) (xy 84.712304 20.325685) (xy 84.723301 20.214032) (xy 84.723301 20.214023) (xy 84.726977 20.1767) + (xy 84.723301 20.139377) (xy 84.723301 13.541542) (xy 85.238301 13.541542) (xy 85.362783 13.529282) (xy 85.482481 13.492972) + (xy 85.592795 13.434007) (xy 85.689486 13.354655) (xy 85.768838 13.257964) (xy 85.827803 13.14765) (xy 85.864113 13.027952) + (xy 85.876373 12.90347) (xy 85.876373 10.815199) (xy 86.583187 10.108385) (xy 86.645324 10.108385) (xy 86.845283 10.068611) + (xy 87.033641 9.99059) (xy 87.203159 9.877322) (xy 87.347322 9.733159) (xy 87.46059 9.563641) (xy 87.538611 9.375283) + (xy 87.578385 9.175324) (xy 87.578385 9.113186) (xy 91.898197 4.793376) (xy 91.927194 4.769579) (xy 92.022167 4.653854) + (xy 92.092739 4.521825) (xy 92.136196 4.378564) (xy 92.147193 4.266911) (xy 92.147193 4.266902) (xy 92.150869 4.229579) + (xy 92.147193 4.192256) (xy 92.147193 -3.94805) (xy 92.662193 -3.94805) (xy 92.786675 -3.96031) (xy 92.906373 -3.99662) + (xy 93.016687 -4.055585) (xy 93.113378 -4.134937) (xy 93.19273 -4.231628) (xy 93.251695 -4.341942) (xy 93.288005 -4.46164) + (xy 93.300265 -4.586122) (xy 93.300265 -7.086122) (xy 93.288005 -7.210604) (xy 93.251695 -7.330302) (xy 93.19273 -7.440616) + (xy 93.113378 -7.537307) (xy 93.016687 -7.616659) (xy 92.906373 -7.675624) (xy 92.786675 -7.711934) (xy 92.662193 -7.724194) + (xy 92.147193 -7.724194) (xy 92.147193 -10.805118) (xy 102.436697 -10.805118) (xy 102.479014 -10.510442) (xy 102.578008 -10.229682) + (xy 102.654881 -10.085863) (xy 102.906641 -10.005046) (xy 103.774205 -10.872609) (xy 103.760062 -10.886751) (xy 103.939668 -11.066357) + (xy 103.95381 -11.052214) (xy 103.967952 -11.066357) (xy 104.147558 -10.886751) (xy 104.133415 -10.872609) (xy 105.000979 -10.005046) + (xy 105.252739 -10.085863) (xy 105.381267 -10.354388) (xy 105.454939 -10.642828) (xy 105.470923 -10.9401) (xy 105.428606 -11.234776) + (xy 105.329612 -11.515536) (xy 105.252739 -11.659355) (xy 105.000981 -11.740172) (xy 105.117001 -11.856192) (xy 105.037535 -11.935658) + (xy 105.07429 -11.946807) (xy 105.184604 -12.005772) (xy 105.281295 -12.085124) (xy 105.360647 -12.181815) (xy 105.419612 -12.292129) + (xy 105.455922 -12.411827) (xy 105.468182 -12.536309) (xy 105.468182 -14.288909) (xy 105.455922 -14.413391) (xy 105.419612 -14.533089) + (xy 105.360647 -14.643403) (xy 105.281295 -14.740094) (xy 105.184604 -14.819446) (xy 105.07429 -14.878411) (xy 104.954592 -14.914721) + (xy 104.83011 -14.926981) (xy 103.07751 -14.926981) (xy 102.953028 -14.914721) (xy 102.83333 -14.878411) (xy 102.723016 -14.819446) + (xy 102.626325 -14.740094) (xy 102.546973 -14.643403) (xy 102.488008 -14.533089) (xy 102.451698 -14.413391) (xy 102.439438 -14.288909) + (xy 102.439438 -12.536309) (xy 102.451698 -12.411827) (xy 102.488008 -12.292129) (xy 102.546973 -12.181815) (xy 102.626325 -12.085124) + (xy 102.723016 -12.005772) (xy 102.83333 -11.946807) (xy 102.870085 -11.935658) (xy 102.790619 -11.856192) (xy 102.906639 -11.740172) + (xy 102.654881 -11.659355) (xy 102.526353 -11.39083) (xy 102.452681 -11.10239) (xy 102.436697 -10.805118) (xy 92.147193 -10.805118) + (xy 92.147193 -13.544905) (xy 93.223702 -13.087954) (xy 93.343079 -13.0506) (xy 93.467449 -13.037254) (xy 93.592033 -13.048428) + (xy 93.712043 -13.083692) (xy 93.822868 -13.141691) (xy 93.920248 -13.220197) (xy 94.000441 -13.316192) (xy 94.060365 -13.425987) + (xy 94.755085 -15.062645) (xy 94.792439 -15.182022) (xy 94.805785 -15.306392) (xy 94.794611 -15.430976) (xy 94.759347 -15.550986) + (xy 94.701348 -15.661811) (xy 94.622842 -15.759191) (xy 94.526847 -15.839384) (xy 94.417052 -15.899308) (xy 92.780394 -16.594028) + (xy 92.661017 -16.631382) (xy 92.536647 -16.644728) (xy 92.412063 -16.633554) (xy 92.292053 -16.59829) (xy 92.181228 -16.540291) + (xy 92.127173 -16.496713) (xy 92.117529 -16.508676) (xy 92.021534 -16.588869) (xy 91.911738 -16.648793) (xy 91.751838 -16.716667) + (xy 94.128806 -19.093635) (xy 94.638846 -19.093635) (xy 94.638846 -18.800939) (xy 94.695948 -18.513866) (xy 94.807958 -18.243449) + (xy 94.970572 -18.000081) (xy 95.17754 -17.793113) (xy 95.420908 -17.630499) (xy 95.691325 -17.518489) (xy 95.978398 -17.461387) + (xy 96.271094 -17.461387) (xy 96.558167 -17.518489) (xy 96.828584 -17.630499) (xy 97.071952 -17.793113) (xy 97.160778 -17.881939) + (xy 105.645 -17.881939) (xy 105.645 -17.678061) (xy 105.684774 -17.478102) (xy 105.762795 -17.289744) (xy 105.876063 -17.120226) + (xy 105.920001 -17.076288) (xy 105.92 -0.703711) (xy 105.876063 -0.659774) (xy 105.762795 -0.490256) (xy 105.684774 -0.301898) + (xy 105.645 -0.101939) (xy 105.645 0.101939) (xy 105.684774 0.301898) (xy 105.762795 0.490256) (xy 105.876063 0.659774) + (xy 106.020226 0.803937) (xy 106.189744 0.917205) (xy 106.378102 0.995226) (xy 106.578061 1.035) (xy 106.781939 1.035) + (xy 106.948039 1.001961) (xy 106.915 1.168061) (xy 106.915 1.371939) (xy 106.954774 1.571898) (xy 107.032795 1.760256) + (xy 107.146063 1.929774) (xy 107.290226 2.073937) (xy 107.459744 2.187205) (xy 107.648102 2.265226) (xy 107.848061 2.305) + (xy 108.051939 2.305) (xy 108.251898 2.265226) (xy 108.440256 2.187205) (xy 108.46 2.174012) (xy 108.460001 23.426288) + (xy 108.416063 23.470226) (xy 108.302795 23.639744) (xy 108.224774 23.828102) (xy 108.185 24.028061) (xy 108.185 24.231939) + (xy 108.224774 24.431898) (xy 108.302795 24.620256) (xy 108.416063 24.789774) (xy 108.560226 24.933937) (xy 108.729744 25.047205) + (xy 108.918102 25.125226) (xy 109.118061 25.165) (xy 109.321939 25.165) (xy 109.521898 25.125226) (xy 109.710256 25.047205) + (xy 109.879774 24.933937) (xy 110.023937 24.789774) (xy 110.137205 24.620256) (xy 110.215226 24.431898) (xy 110.255 24.231939) + (xy 110.255 24.028061) (xy 110.215226 23.828102) (xy 110.137205 23.639744) (xy 110.023937 23.470226) (xy 109.98 23.426289) + (xy 109.98 4.795103) (xy 109.999744 4.808295) (xy 110.188102 4.886316) (xy 110.388061 4.92609) (xy 110.591939 4.92609) + (xy 110.791898 4.886316) (xy 110.980256 4.808295) (xy 111.149774 4.695027) (xy 111.293937 4.550864) (xy 111.407205 4.381346) + (xy 111.485226 4.192988) (xy 111.525 3.993029) (xy 111.525 3.789151) (xy 111.485226 3.589192) (xy 111.407205 3.400834) + (xy 111.293937 3.231316) (xy 111.25 3.187379) (xy 111.25 1.973711) (xy 111.293937 1.929774) (xy 111.407205 1.760256) + (xy 111.485226 1.571898) (xy 111.525 1.371939) (xy 111.525 1.168061) (xy 111.485226 0.968102) (xy 111.407205 0.779744) + (xy 111.293937 0.610226) (xy 111.149774 0.466063) (xy 110.980256 0.352795) (xy 110.791898 0.274774) (xy 110.591939 0.235) + (xy 110.388061 0.235) (xy 110.188102 0.274774) (xy 109.999744 0.352795) (xy 109.98 0.365987) (xy 109.98 -6.916289) + (xy 110.023937 -6.960226) (xy 110.137205 -7.129744) (xy 110.215226 -7.318102) (xy 110.255 -7.518061) (xy 110.255 -7.721939) + (xy 110.215226 -7.921898) (xy 110.137205 -8.110256) (xy 110.023937 -8.279774) (xy 109.879774 -8.423937) (xy 109.710256 -8.537205) + (xy 109.521898 -8.615226) (xy 109.321939 -8.655) (xy 109.118061 -8.655) (xy 108.918102 -8.615226) (xy 108.8806 -8.599692) + (xy 108.945226 -8.755711) (xy 108.985 -8.95567) (xy 108.985 -9.159548) (xy 108.945226 -9.359507) (xy 108.867205 -9.547865) + (xy 108.753937 -9.717383) (xy 108.609774 -9.861546) (xy 108.440256 -9.974814) (xy 108.251898 -10.052835) (xy 108.051939 -10.092609) + (xy 107.848061 -10.092609) (xy 107.648102 -10.052835) (xy 107.459744 -9.974814) (xy 107.44 -9.961622) (xy 107.44 -14.071939) + (xy 115.805 -14.071939) (xy 115.805 -13.868061) (xy 115.844774 -13.668102) (xy 115.922795 -13.479744) (xy 116.036063 -13.310226) + (xy 116.080001 -13.266288) (xy 116.08 15.806289) (xy 116.036063 15.850226) (xy 115.922795 16.019744) (xy 115.844774 16.208102) + (xy 115.805 16.408061) (xy 115.805 16.611939) (xy 115.844774 16.811898) (xy 115.922795 17.000256) (xy 116.036063 17.169774) + (xy 116.180226 17.313937) (xy 116.349744 17.427205) (xy 116.538102 17.505226) (xy 116.738061 17.545) (xy 116.941939 17.545) + (xy 117.141898 17.505226) (xy 117.330256 17.427205) (xy 117.499774 17.313937) (xy 117.643937 17.169774) (xy 117.757205 17.000256) + (xy 117.835226 16.811898) (xy 117.875 16.611939) (xy 117.875 16.408061) (xy 117.835226 16.208102) (xy 117.757205 16.019744) + (xy 117.643937 15.850226) (xy 117.6 15.806289) (xy 117.6 -3.401459) (xy 117.68251 -3.401459) (xy 117.68251 -3.103759) + (xy 117.740588 -2.811779) (xy 117.854513 -2.53674) (xy 118.019906 -2.289211) (xy 118.230412 -2.078705) (xy 118.37423 -1.982609) + (xy 118.230412 -1.886513) (xy 118.019906 -1.676007) (xy 117.854513 -1.428478) (xy 117.740588 -1.153439) (xy 117.68251 -0.861459) + (xy 117.68251 -0.563759) (xy 117.740588 -0.271779) (xy 117.854513 0.00326) (xy 118.019906 0.250789) (xy 118.230412 0.461295) + (xy 118.37423 0.557391) (xy 118.230412 0.653487) (xy 118.019906 0.863993) (xy 117.854513 1.111522) (xy 117.740588 1.386561) + (xy 117.68251 1.678541) (xy 117.68251 1.976241) (xy 117.740588 2.268221) (xy 117.854513 2.54326) (xy 118.019906 2.790789) + (xy 118.230412 3.001295) (xy 118.37423 3.097391) (xy 118.230412 3.193487) (xy 118.019906 3.403993) (xy 117.854513 3.651522) + (xy 117.740588 3.926561) (xy 117.68251 4.218541) (xy 117.68251 4.516241) (xy 117.740588 4.808221) (xy 117.854513 5.08326) + (xy 118.019906 5.330789) (xy 118.230412 5.541295) (xy 118.37423 5.637391) (xy 118.230412 5.733487) (xy 118.019906 5.943993) + (xy 117.854513 6.191522) (xy 117.740588 6.466561) (xy 117.68251 6.758541) (xy 117.68251 7.056241) (xy 117.740588 7.348221) + (xy 117.854513 7.62326) (xy 118.019906 7.870789) (xy 118.230412 8.081295) (xy 118.37423 8.177391) (xy 118.230412 8.273487) + (xy 118.019906 8.483993) (xy 117.854513 8.731522) (xy 117.740588 9.006561) (xy 117.68251 9.298541) (xy 117.68251 9.596241) + (xy 117.740588 9.888221) (xy 117.854513 10.16326) (xy 118.019906 10.410789) (xy 118.230412 10.621295) (xy 118.37423 10.717391) + (xy 118.230412 10.813487) (xy 118.019906 11.023993) (xy 117.854513 11.271522) (xy 117.740588 11.546561) (xy 117.68251 11.838541) + (xy 117.68251 12.136241) (xy 117.740588 12.428221) (xy 117.854513 12.70326) (xy 118.019906 12.950789) (xy 118.230412 13.161295) + (xy 118.37423 13.257391) (xy 118.230412 13.353487) (xy 118.019906 13.563993) (xy 117.854513 13.811522) (xy 117.740588 14.086561) + (xy 117.68251 14.378541) (xy 117.68251 14.676241) (xy 117.740588 14.968221) (xy 117.854513 15.24326) (xy 118.019906 15.490789) + (xy 118.230412 15.701295) (xy 118.477941 15.866688) (xy 118.75298 15.980613) (xy 119.04496 16.038691) (xy 119.34266 16.038691) + (xy 119.63464 15.980613) (xy 119.909679 15.866688) (xy 120.157208 15.701295) (xy 120.367714 15.490789) (xy 120.533107 15.24326) + (xy 120.647032 14.968221) (xy 120.70511 14.676241) (xy 120.70511 14.378541) (xy 120.647032 14.086561) (xy 120.533107 13.811522) + (xy 120.367714 13.563993) (xy 120.157208 13.353487) (xy 120.01339 13.257391) (xy 120.058527 13.227231) (xy 137.119516 13.227231) + (xy 137.119516 15.727231) (xy 137.131776 15.851713) (xy 137.168086 15.971411) (xy 137.227051 16.081725) (xy 137.306403 16.178416) + (xy 137.403094 16.257768) (xy 137.513408 16.316733) (xy 137.633106 16.353043) (xy 137.757588 16.365303) (xy 138.378262 16.365303) + (xy 138.397614 16.401507) (xy 138.463049 16.481239) (xy 138.492588 16.517232) (xy 138.521586 16.54103) (xy 142.629752 20.649197) + (xy 142.65355 20.678195) (xy 142.769275 20.773168) (xy 142.901304 20.84374) (xy 143.044565 20.887197) (xy 143.156218 20.898194) + (xy 143.156227 20.898194) (xy 143.19355 20.90187) (xy 143.230873 20.898194) (xy 143.591901 20.898194) (xy 143.760263 21.150166) + (xy 143.981383 21.371286) (xy 144.241392 21.545018) (xy 144.530298 21.664687) (xy 144.837 21.725694) (xy 145.14971 21.725694) + (xy 145.456412 21.664687) (xy 145.745318 21.545018) (xy 146.005327 21.371286) (xy 146.226447 21.150166) (xy 146.400179 20.890157) + (xy 146.417896 20.847385) (xy 146.429912 20.84374) (xy 146.561941 20.773168) (xy 146.677666 20.678195) (xy 146.70017 20.650774) + (xy 146.807424 20.660394) (xy 146.931794 20.647048) (xy 147.05117 20.609694) (xy 147.879625 20.258036) (xy 147.989421 20.198112) + (xy 148.085416 20.117919) (xy 148.163922 20.020539) (xy 148.221921 19.909714) (xy 148.257185 19.789704) (xy 148.268359 19.66512) + (xy 148.255013 19.54075) (xy 148.217659 19.421374) (xy 147.748782 18.316768) (xy 147.688858 18.206972) (xy 147.608665 18.110977) + (xy 147.511285 18.032471) (xy 147.40046 17.974472) (xy 147.28045 17.939208) (xy 147.155866 17.928034) (xy 147.031496 17.94138) + (xy 146.91212 17.978734) (xy 146.083665 18.330392) (xy 145.973869 18.390316) (xy 145.877874 18.470509) (xy 145.799368 18.567889) + (xy 145.741369 18.678714) (xy 145.728004 18.724198) (xy 145.456412 18.611701) (xy 145.14971 18.550694) (xy 144.837 18.550694) + (xy 144.530298 18.611701) (xy 144.241392 18.73137) (xy 143.981383 18.905102) (xy 143.760263 19.126222) (xy 143.591901 19.378194) + (xy 143.508353 19.378194) (xy 141.764055 17.633896) (xy 148.732597 17.633896) (xy 148.745943 17.758266) (xy 148.783297 17.877642) + (xy 149.252174 18.982248) (xy 149.312098 19.092044) (xy 149.392291 19.188039) (xy 149.489671 19.266545) (xy 149.600496 19.324544) + (xy 149.720506 19.359808) (xy 149.84509 19.370982) (xy 149.96946 19.357636) (xy 150.088836 19.320282) (xy 150.917291 18.968624) + (xy 151.027087 18.9087) (xy 151.123082 18.828507) (xy 151.132726 18.816544) (xy 151.186781 18.860122) (xy 151.297606 18.918121) + (xy 151.417616 18.953385) (xy 151.5422 18.964559) (xy 151.66657 18.951213) (xy 151.785947 18.913859) (xy 153.422605 18.219139) + (xy 153.5324 18.159215) (xy 153.628395 18.079022) (xy 153.706901 17.981642) (xy 153.7649 17.870817) (xy 153.800164 17.750807) + (xy 153.811338 17.626223) (xy 153.797992 17.501853) (xy 153.760638 17.382476) (xy 153.065918 15.745818) (xy 153.005994 15.636023) + (xy 152.925801 15.540028) (xy 152.828421 15.461522) (xy 152.717596 15.403523) (xy 152.597586 15.368259) (xy 152.473002 15.357085) + (xy 152.348632 15.370431) (xy 152.229255 15.407785) (xy 150.592597 16.102505) (xy 150.482802 16.162429) (xy 150.386807 16.242622) + (xy 150.308301 16.340002) (xy 150.250302 16.450827) (xy 150.215038 16.570837) (xy 150.208835 16.639995) (xy 150.193532 16.638622) + (xy 150.069162 16.651968) (xy 149.949786 16.689322) (xy 149.121331 17.04098) (xy 149.011535 17.100904) (xy 148.91554 17.181097) + (xy 148.837034 17.278477) (xy 148.779035 17.389302) (xy 148.743771 17.509312) (xy 148.732597 17.633896) (xy 141.764055 17.633896) + (xy 141.628997 17.498838) (xy 141.724309 17.517797) (xy 142.017005 17.517797) (xy 142.304078 17.460695) (xy 142.574495 17.348685) + (xy 142.817863 17.186071) (xy 143.024831 16.979103) (xy 143.187445 16.735735) (xy 143.299455 16.465318) (xy 143.356557 16.178245) + (xy 143.356557 15.885549) (xy 143.299455 15.598476) (xy 143.187445 15.328059) (xy 143.034707 15.099471) (xy 143.058543 15.089598) + (xy 143.408224 14.855949) (xy 143.705604 14.558569) (xy 143.917922 14.240812) (xy 143.917922 14.305907) (xy 144.018949 14.813805) + (xy 144.217121 15.292234) (xy 144.504822 15.722809) (xy 144.870996 16.088983) (xy 145.301571 16.376684) (xy 145.78 16.574856) + (xy 146.287898 16.675883) (xy 146.805746 16.675883) (xy 147.313644 16.574856) (xy 147.792073 16.376684) (xy 148.222648 16.088983) + (xy 148.588822 15.722809) (xy 148.876523 15.292234) (xy 149.074695 14.813805) (xy 149.175722 14.305907) (xy 149.175722 13.788059) + (xy 149.074695 13.280161) (xy 148.876523 12.801732) (xy 148.588822 12.371157) (xy 148.222648 12.004983) (xy 148.089058 11.915721) + (xy 149.737087 11.915721) (xy 149.737087 12.208417) (xy 149.794189 12.49549) (xy 149.906199 12.765907) (xy 150.068813 13.009275) + (xy 150.275781 13.216243) (xy 150.519149 13.378857) (xy 150.789566 13.490867) (xy 151.076639 13.547969) (xy 151.369335 13.547969) + (xy 151.656408 13.490867) (xy 151.926825 13.378857) (xy 152.170193 13.216243) (xy 152.377161 13.009275) (xy 152.539775 12.765907) + (xy 152.651785 12.49549) (xy 152.708887 12.208417) (xy 152.708887 11.915721) (xy 152.651785 11.628648) (xy 152.539775 11.358231) + (xy 152.377161 11.114863) (xy 152.170193 10.907895) (xy 151.926825 10.745281) (xy 151.656408 10.633271) (xy 151.369335 10.576169) + (xy 151.076639 10.576169) (xy 150.789566 10.633271) (xy 150.519149 10.745281) (xy 150.275781 10.907895) (xy 150.068813 11.114863) + (xy 149.906199 11.358231) (xy 149.794189 11.628648) (xy 149.737087 11.915721) (xy 148.089058 11.915721) (xy 147.792073 11.717282) + (xy 147.313644 11.51911) (xy 146.805746 11.418083) (xy 146.287898 11.418083) (xy 145.78 11.51911) (xy 145.301571 11.717282) + (xy 144.870996 12.004983) (xy 144.504822 12.371157) (xy 144.217121 12.801732) (xy 144.168619 12.918826) (xy 144.100194 12.57483) + (xy 143.939253 12.186284) (xy 143.705604 11.836603) (xy 143.408224 11.539223) (xy 143.058543 11.305574) (xy 142.669997 11.144633) + (xy 142.25752 11.062586) (xy 141.836962 11.062586) (xy 141.424485 11.144633) (xy 141.035939 11.305574) (xy 140.686258 11.539223) + (xy 140.388878 11.836603) (xy 140.155229 12.186284) (xy 139.994288 12.57483) (xy 139.991438 12.589159) (xy 137.757588 12.589159) + (xy 137.633106 12.601419) (xy 137.513408 12.637729) (xy 137.403094 12.696694) (xy 137.306403 12.776046) (xy 137.227051 12.872737) + (xy 137.168086 12.983051) (xy 137.131776 13.102749) (xy 137.119516 13.227231) (xy 120.058527 13.227231) (xy 120.157208 13.161295) + (xy 120.367714 12.950789) (xy 120.533107 12.70326) (xy 120.647032 12.428221) (xy 120.70511 12.136241) (xy 120.70511 11.838541) + (xy 120.647032 11.546561) (xy 120.533107 11.271522) (xy 120.367714 11.023993) (xy 120.157208 10.813487) (xy 120.01339 10.717391) + (xy 120.157208 10.621295) (xy 120.367714 10.410789) (xy 120.533107 10.16326) (xy 120.647032 9.888221) (xy 120.70511 9.596241) + (xy 120.70511 9.298541) (xy 120.647032 9.006561) (xy 120.533107 8.731522) (xy 120.367714 8.483993) (xy 120.157208 8.273487) + (xy 120.01339 8.177391) (xy 120.157208 8.081295) (xy 120.367714 7.870789) (xy 120.533107 7.62326) (xy 120.647032 7.348221) + (xy 120.70511 7.056241) (xy 120.70511 6.758541) (xy 120.647032 6.466561) (xy 120.533107 6.191522) (xy 120.367714 5.943993) + (xy 120.157208 5.733487) (xy 120.01339 5.637391) (xy 120.157208 5.541295) (xy 120.367714 5.330789) (xy 120.533107 5.08326) + (xy 120.647032 4.808221) (xy 120.70511 4.516241) (xy 120.70511 4.218541) (xy 120.647032 3.926561) (xy 120.533107 3.651522) + (xy 120.367714 3.403993) (xy 120.157208 3.193487) (xy 120.01339 3.097391) (xy 120.157208 3.001295) (xy 120.367714 2.790789) + (xy 120.533107 2.54326) (xy 120.647032 2.268221) (xy 120.70511 1.976241) (xy 120.70511 1.678541) (xy 120.647032 1.386561) + (xy 120.533107 1.111522) (xy 120.367714 0.863993) (xy 120.157208 0.653487) (xy 120.01339 0.557391) (xy 120.157208 0.461295) + (xy 120.367714 0.250789) (xy 120.533107 0.00326) (xy 120.647032 -0.271779) (xy 120.70511 -0.563759) (xy 120.70511 -0.861459) + (xy 120.647032 -1.153439) (xy 120.533107 -1.428478) (xy 120.367714 -1.676007) (xy 120.157208 -1.886513) (xy 120.01339 -1.982609) + (xy 120.157208 -2.078705) (xy 120.367714 -2.289211) (xy 120.533107 -2.53674) (xy 120.647032 -2.811779) (xy 120.70511 -3.103759) + (xy 120.70511 -3.401459) (xy 120.647032 -3.693439) (xy 120.533107 -3.968478) (xy 120.367714 -4.216007) (xy 120.32136 -4.262361) + (xy 129.695625 -4.262361) (xy 129.695625 -1.762361) (xy 129.707885 -1.637879) (xy 129.744195 -1.518181) (xy 129.80316 -1.407867) + (xy 129.882512 -1.311176) (xy 129.979203 -1.231824) (xy 130.089517 -1.172859) (xy 130.209215 -1.136549) (xy 130.333697 -1.124289) + (xy 130.954371 -1.124289) (xy 130.973723 -1.088085) (xy 131.030395 -1.019031) (xy 131.068697 -0.97236) (xy 131.097695 -0.948562) + (xy 135.20586 3.159604) (xy 135.229658 3.188602) (xy 135.258656 3.2124) (xy 135.345382 3.283575) (xy 135.396406 3.310848) + (xy 135.477412 3.354147) (xy 135.620673 3.397604) (xy 135.732326 3.408601) (xy 135.732336 3.408601) (xy 135.769659 3.412277) + (xy 135.806982 3.408601) (xy 136.168009 3.408601) (xy 136.336371 3.660573) (xy 136.557491 3.881693) (xy 136.8175 4.055425) + (xy 137.106406 4.175094) (xy 137.413108 4.236101) (xy 137.725818 4.236101) (xy 138.03252 4.175094) (xy 138.321426 4.055425) + (xy 138.581435 3.881693) (xy 138.802555 3.660573) (xy 138.976287 3.400564) (xy 138.994004 3.357792) (xy 139.00602 3.354147) + (xy 139.138049 3.283575) (xy 139.253774 3.188602) (xy 139.276278 3.161181) (xy 139.383532 3.170801) (xy 139.507902 3.157455) + (xy 139.627278 3.120101) (xy 140.455733 2.768443) (xy 140.565529 2.708519) (xy 140.661524 2.628326) (xy 140.74003 2.530946) + (xy 140.798029 2.420121) (xy 140.833293 2.300111) (xy 140.844467 2.175527) (xy 140.831121 2.051157) (xy 140.793767 1.931781) + (xy 140.32489 0.827175) (xy 140.264966 0.717379) (xy 140.184773 0.621384) (xy 140.087393 0.542878) (xy 139.976568 0.484879) + (xy 139.856558 0.449615) (xy 139.731974 0.438441) (xy 139.607604 0.451787) (xy 139.488228 0.489141) (xy 138.659773 0.840799) + (xy 138.549977 0.900723) (xy 138.453982 0.980916) (xy 138.375476 1.078296) (xy 138.317477 1.189121) (xy 138.304112 1.234605) + (xy 138.03252 1.122108) (xy 137.725818 1.061101) (xy 137.413108 1.061101) (xy 137.106406 1.122108) (xy 136.8175 1.241777) + (xy 136.557491 1.415509) (xy 136.336371 1.636629) (xy 136.168009 1.888601) (xy 136.084461 1.888601) (xy 134.340163 0.144303) + (xy 141.308705 0.144303) (xy 141.322051 0.268673) (xy 141.359405 0.388049) (xy 141.828282 1.492655) (xy 141.888206 1.602451) + (xy 141.968399 1.698446) (xy 142.065779 1.776952) (xy 142.176604 1.834951) (xy 142.296614 1.870215) (xy 142.421198 1.881389) + (xy 142.545568 1.868043) (xy 142.664944 1.830689) (xy 143.493399 1.479031) (xy 143.603195 1.419107) (xy 143.69919 1.338914) + (xy 143.708834 1.326951) (xy 143.762889 1.370529) (xy 143.873714 1.428528) (xy 143.993724 1.463792) (xy 144.118308 1.474966) + (xy 144.242678 1.46162) (xy 144.362055 1.424266) (xy 145.998713 0.729546) (xy 146.108508 0.669622) (xy 146.204503 0.589429) + (xy 146.283009 0.492049) (xy 146.341008 0.381224) (xy 146.376272 0.261214) (xy 146.387446 0.13663) (xy 146.3741 0.01226) + (xy 146.336746 -0.107117) (xy 145.642026 -1.743775) (xy 145.582102 -1.85357) (xy 145.501909 -1.949565) (xy 145.404529 -2.028071) + (xy 145.293704 -2.08607) (xy 145.173694 -2.121334) (xy 145.04911 -2.132508) (xy 144.92474 -2.119162) (xy 144.805363 -2.081808) + (xy 143.168705 -1.387088) (xy 143.05891 -1.327164) (xy 142.962915 -1.246971) (xy 142.884409 -1.149591) (xy 142.82641 -1.038766) + (xy 142.791146 -0.918756) (xy 142.784943 -0.849598) (xy 142.76964 -0.850971) (xy 142.64527 -0.837625) (xy 142.525894 -0.800271) + (xy 141.697439 -0.448613) (xy 141.587643 -0.388689) (xy 141.491648 -0.308496) (xy 141.413142 -0.211116) (xy 141.355143 -0.100291) + (xy 141.319879 0.019719) (xy 141.308705 0.144303) (xy 134.340163 0.144303) (xy 134.205106 0.009246) (xy 134.300418 0.028205) + (xy 134.593114 0.028205) (xy 134.880187 -0.028897) (xy 135.150604 -0.140907) (xy 135.393972 -0.303521) (xy 135.60094 -0.510489) + (xy 135.763554 -0.753857) (xy 135.875564 -1.024274) (xy 135.932666 -1.311347) (xy 135.932666 -1.604043) (xy 135.875564 -1.891116) + (xy 135.763554 -2.161533) (xy 135.610816 -2.390121) (xy 135.634652 -2.399994) (xy 135.984333 -2.633643) (xy 136.281713 -2.931023) + (xy 136.494031 -3.24878) (xy 136.494031 -3.183685) (xy 136.595058 -2.675787) (xy 136.79323 -2.197358) (xy 137.080931 -1.766783) + (xy 137.447105 -1.400609) (xy 137.87768 -1.112908) (xy 138.356109 -0.914736) (xy 138.864007 -0.813709) (xy 139.381855 -0.813709) + (xy 139.889753 -0.914736) (xy 140.368182 -1.112908) (xy 140.798757 -1.400609) (xy 141.164931 -1.766783) (xy 141.452632 -2.197358) + (xy 141.650804 -2.675787) (xy 141.751831 -3.183685) (xy 141.751831 -3.701533) (xy 141.650804 -4.209431) (xy 141.452632 -4.68786) + (xy 141.164931 -5.118435) (xy 140.798757 -5.484609) (xy 140.665167 -5.573871) (xy 142.313196 -5.573871) (xy 142.313196 -5.281175) + (xy 142.370298 -4.994102) (xy 142.482308 -4.723685) (xy 142.644922 -4.480317) (xy 142.85189 -4.273349) (xy 143.095258 -4.110735) + (xy 143.365675 -3.998725) (xy 143.652748 -3.941623) (xy 143.945444 -3.941623) (xy 144.232517 -3.998725) (xy 144.502934 -4.110735) + (xy 144.746302 -4.273349) (xy 144.95327 -4.480317) (xy 145.115884 -4.723685) (xy 145.227894 -4.994102) (xy 145.284996 -5.281175) + (xy 145.284996 -5.573871) (xy 145.227894 -5.860944) (xy 145.115884 -6.131361) (xy 144.95327 -6.374729) (xy 144.746302 -6.581697) + (xy 144.502934 -6.744311) (xy 144.232517 -6.856321) (xy 143.945444 -6.913423) (xy 143.652748 -6.913423) (xy 143.365675 -6.856321) + (xy 143.095258 -6.744311) (xy 142.85189 -6.581697) (xy 142.644922 -6.374729) (xy 142.482308 -6.131361) (xy 142.370298 -5.860944) + (xy 142.313196 -5.573871) (xy 140.665167 -5.573871) (xy 140.368182 -5.77231) (xy 139.889753 -5.970482) (xy 139.381855 -6.071509) + (xy 138.864007 -6.071509) (xy 138.356109 -5.970482) (xy 137.87768 -5.77231) (xy 137.447105 -5.484609) (xy 137.080931 -5.118435) + (xy 136.79323 -4.68786) (xy 136.744728 -4.570766) (xy 136.676303 -4.914762) (xy 136.515362 -5.303308) (xy 136.281713 -5.652989) + (xy 135.984333 -5.950369) (xy 135.634652 -6.184018) (xy 135.246106 -6.344959) (xy 134.833629 -6.427006) (xy 134.413071 -6.427006) + (xy 134.000594 -6.344959) (xy 133.612048 -6.184018) (xy 133.262367 -5.950369) (xy 132.964987 -5.652989) (xy 132.731338 -5.303308) + (xy 132.570397 -4.914762) (xy 132.567547 -4.900433) (xy 130.333697 -4.900433) (xy 130.209215 -4.888173) (xy 130.089517 -4.851863) + (xy 129.979203 -4.792898) (xy 129.882512 -4.713546) (xy 129.80316 -4.616855) (xy 129.744195 -4.506541) (xy 129.707885 -4.386843) + (xy 129.695625 -4.262361) (xy 120.32136 -4.262361) (xy 120.157208 -4.426513) (xy 119.994001 -4.535564) (xy 120.061373 -4.74544) + (xy 119.19381 -5.613004) (xy 118.326247 -4.74544) (xy 118.393619 -4.535564) (xy 118.230412 -4.426513) (xy 118.019906 -4.216007) + (xy 117.854513 -3.968478) (xy 117.740588 -3.693439) (xy 117.68251 -3.401459) (xy 117.6 -3.401459) (xy 117.6 -5.725118) + (xy 117.676697 -5.725118) (xy 117.719014 -5.430442) (xy 117.818008 -5.149682) (xy 117.894881 -5.005863) (xy 118.146641 -4.925046) + (xy 119.014205 -5.792609) (xy 119.373415 -5.792609) (xy 120.240979 -4.925046) (xy 120.492739 -5.005863) (xy 120.621267 -5.274388) + (xy 120.694939 -5.562828) (xy 120.710923 -5.8601) (xy 120.668606 -6.154776) (xy 120.569612 -6.435536) (xy 120.492739 -6.579355) + (xy 120.240979 -6.660172) (xy 119.373415 -5.792609) (xy 119.014205 -5.792609) (xy 118.146641 -6.660172) (xy 117.894881 -6.579355) + (xy 117.766353 -6.31083) (xy 117.692681 -6.02239) (xy 117.676697 -5.725118) (xy 117.6 -5.725118) (xy 117.6 -7.28544) + (xy 118.326247 -7.28544) (xy 118.397778 -7.062609) (xy 118.326247 -6.839778) (xy 119.19381 -5.972214) (xy 120.061373 -6.839778) + (xy 119.989842 -7.062609) (xy 120.061373 -7.28544) (xy 119.19381 -8.153004) (xy 118.326247 -7.28544) (xy 117.6 -7.28544) + (xy 117.6 -8.265118) (xy 117.676697 -8.265118) (xy 117.719014 -7.970442) (xy 117.818008 -7.689682) (xy 117.894881 -7.545863) + (xy 118.146641 -7.465046) (xy 119.014205 -8.332609) (xy 119.373415 -8.332609) (xy 120.240979 -7.465046) (xy 120.492739 -7.545863) + (xy 120.621267 -7.814388) (xy 120.694939 -8.102828) (xy 120.710923 -8.4001) (xy 120.668606 -8.694776) (xy 120.569612 -8.975536) + (xy 120.492739 -9.119355) (xy 120.240979 -9.200172) (xy 119.373415 -8.332609) (xy 119.014205 -8.332609) (xy 118.146641 -9.200172) + (xy 117.894881 -9.119355) (xy 117.766353 -8.85083) (xy 117.692681 -8.56239) (xy 117.676697 -8.265118) (xy 117.6 -8.265118) + (xy 117.6 -13.266289) (xy 117.643937 -13.310226) (xy 117.68251 -13.367955) (xy 117.68251 -13.263759) (xy 117.740588 -12.971779) + (xy 117.854513 -12.69674) (xy 118.019906 -12.449211) (xy 118.230412 -12.238705) (xy 118.37423 -12.142609) (xy 118.230412 -12.046513) + (xy 118.019906 -11.836007) (xy 117.854513 -11.588478) (xy 117.740588 -11.313439) (xy 117.68251 -11.021459) (xy 117.68251 -10.723759) + (xy 117.740588 -10.431779) (xy 117.854513 -10.15674) (xy 118.019906 -9.909211) (xy 118.230412 -9.698705) (xy 118.393619 -9.589654) + (xy 118.326247 -9.379778) (xy 119.19381 -8.512214) (xy 120.061373 -9.379778) (xy 119.994001 -9.589654) (xy 120.157208 -9.698705) + (xy 120.367714 -9.909211) (xy 120.533107 -10.15674) (xy 120.647032 -10.431779) (xy 120.70511 -10.723759) (xy 120.70511 -11.021459) + (xy 120.647032 -11.313439) (xy 120.533107 -11.588478) (xy 120.367714 -11.836007) (xy 120.157208 -12.046513) (xy 120.01339 -12.142609) + (xy 120.157208 -12.238705) (xy 120.367714 -12.449211) (xy 120.533107 -12.69674) (xy 120.647032 -12.971779) (xy 120.70511 -13.263759) + (xy 120.70511 -13.561459) (xy 120.647032 -13.853439) (xy 120.533107 -14.128478) (xy 120.367714 -14.376007) (xy 120.157208 -14.586513) + (xy 119.909679 -14.751906) (xy 119.63464 -14.865831) (xy 119.34266 -14.923909) (xy 119.04496 -14.923909) (xy 118.75298 -14.865831) + (xy 118.477941 -14.751906) (xy 118.230412 -14.586513) (xy 118.019906 -14.376007) (xy 117.861634 -14.139135) (xy 117.835226 -14.271898) + (xy 117.757205 -14.460256) (xy 117.643937 -14.629774) (xy 117.499774 -14.773937) (xy 117.330256 -14.887205) (xy 117.141898 -14.965226) + (xy 116.941939 -15.005) (xy 116.738061 -15.005) (xy 116.538102 -14.965226) (xy 116.349744 -14.887205) (xy 116.180226 -14.773937) + (xy 116.036063 -14.629774) (xy 115.922795 -14.460256) (xy 115.844774 -14.271898) (xy 115.805 -14.071939) (xy 107.44 -14.071939) + (xy 107.44 -17.076289) (xy 107.483937 -17.120226) (xy 107.597205 -17.289744) (xy 107.675226 -17.478102) (xy 107.715 -17.678061) + (xy 107.715 -17.881939) (xy 107.675226 -18.081898) (xy 107.597205 -18.270256) (xy 107.483937 -18.439774) (xy 107.339774 -18.583937) + (xy 107.170256 -18.697205) (xy 106.981898 -18.775226) (xy 106.781939 -18.815) (xy 106.578061 -18.815) (xy 106.378102 -18.775226) + (xy 106.189744 -18.697205) (xy 106.020226 -18.583937) (xy 105.876063 -18.439774) (xy 105.762795 -18.270256) (xy 105.684774 -18.081898) + (xy 105.645 -17.881939) (xy 97.160778 -17.881939) (xy 97.27892 -18.000081) (xy 97.441534 -18.243449) (xy 97.553544 -18.513866) + (xy 97.610646 -18.800939) (xy 97.610646 -19.093635) (xy 97.553544 -19.380708) (xy 97.441534 -19.651125) (xy 97.27892 -19.894493) + (xy 97.071952 -20.101461) (xy 96.828584 -20.264075) (xy 96.558167 -20.376085) (xy 96.271094 -20.433187) (xy 95.978398 -20.433187) + (xy 95.691325 -20.376085) (xy 95.420908 -20.264075) (xy 95.17754 -20.101461) (xy 94.970572 -19.894493) (xy 94.807958 -19.651125) + (xy 94.695948 -19.380708) (xy 94.638846 -19.093635) (xy 94.128806 -19.093635) (xy 96.927991 -21.892819) (xy 96.946582 -21.831534) + (xy 97.005547 -21.72122) (xy 97.084899 -21.624529) (xy 97.18159 -21.545177) (xy 97.291904 -21.486212) (xy 97.411602 -21.449902) + (xy 97.536084 -21.437642) (xy 100.086084 -21.437642) (xy 100.210566 -21.449902) (xy 100.330264 -21.486212) (xy 100.440578 -21.545177) + (xy 100.537269 -21.624529) (xy 100.616621 -21.72122) (xy 100.633048 -21.751953) (xy 122.271733 -21.751953) (xy 122.271733 -19.251953) + (xy 122.283993 -19.127471) (xy 122.320303 -19.007773) (xy 122.379268 -18.897459) (xy 122.45862 -18.800768) (xy 122.555311 -18.721416) + (xy 122.665625 -18.662451) (xy 122.785323 -18.626141) (xy 122.909805 -18.613881) (xy 123.530479 -18.613881) (xy 123.549831 -18.577677) + (xy 123.6022 -18.513866) (xy 123.644805 -18.461952) (xy 123.673803 -18.438154) (xy 127.781968 -14.329988) (xy 127.805766 -14.30099) + (xy 127.834764 -14.277192) (xy 127.92149 -14.206017) (xy 127.972514 -14.178744) (xy 128.05352 -14.135445) (xy 128.196781 -14.091988) + (xy 128.308434 -14.080991) (xy 128.308444 -14.080991) (xy 128.345767 -14.077315) (xy 128.38309 -14.080991) (xy 128.744118 -14.080991) + (xy 128.91248 -13.829019) (xy 129.1336 -13.607899) (xy 129.393609 -13.434167) (xy 129.682515 -13.314498) (xy 129.989217 -13.253491) + (xy 130.301927 -13.253491) (xy 130.608629 -13.314498) (xy 130.897535 -13.434167) (xy 131.157544 -13.607899) (xy 131.378664 -13.829019) + (xy 131.552396 -14.089028) (xy 131.570113 -14.1318) (xy 131.582129 -14.135445) (xy 131.714158 -14.206017) (xy 131.829883 -14.30099) + (xy 131.852387 -14.328411) (xy 131.959641 -14.318791) (xy 132.084011 -14.332137) (xy 132.203387 -14.369491) (xy 133.031842 -14.721149) + (xy 133.141638 -14.781073) (xy 133.237633 -14.861266) (xy 133.316139 -14.958646) (xy 133.374138 -15.069471) (xy 133.409402 -15.189481) + (xy 133.420576 -15.314065) (xy 133.40723 -15.438435) (xy 133.369876 -15.557811) (xy 132.900999 -16.662417) (xy 132.841075 -16.772213) + (xy 132.760882 -16.868208) (xy 132.663502 -16.946714) (xy 132.552677 -17.004713) (xy 132.432667 -17.039977) (xy 132.308083 -17.051151) + (xy 132.183713 -17.037805) (xy 132.064337 -17.000451) (xy 131.235882 -16.648793) (xy 131.126086 -16.588869) (xy 131.030091 -16.508676) + (xy 130.951585 -16.411296) (xy 130.893586 -16.300471) (xy 130.880221 -16.254987) (xy 130.608629 -16.367484) (xy 130.301927 -16.428491) + (xy 129.989217 -16.428491) (xy 129.682515 -16.367484) (xy 129.393609 -16.247815) (xy 129.1336 -16.074083) (xy 128.91248 -15.852963) + (xy 128.744118 -15.600991) (xy 128.660569 -15.600991) (xy 126.916271 -17.345289) (xy 133.884814 -17.345289) (xy 133.89816 -17.220919) + (xy 133.935514 -17.101543) (xy 134.404391 -15.996937) (xy 134.464315 -15.887141) (xy 134.544508 -15.791146) (xy 134.641888 -15.71264) + (xy 134.752713 -15.654641) (xy 134.872723 -15.619377) (xy 134.997307 -15.608203) (xy 135.121677 -15.621549) (xy 135.241053 -15.658903) + (xy 136.069508 -16.010561) (xy 136.179304 -16.070485) (xy 136.275299 -16.150678) (xy 136.284943 -16.162641) (xy 136.338998 -16.119063) + (xy 136.449823 -16.061064) (xy 136.569833 -16.0258) (xy 136.694417 -16.014626) (xy 136.818787 -16.027972) (xy 136.938164 -16.065326) + (xy 138.574822 -16.760046) (xy 138.684617 -16.81997) (xy 138.780612 -16.900163) (xy 138.859118 -16.997543) (xy 138.917117 -17.108368) + (xy 138.952381 -17.228378) (xy 138.963555 -17.352962) (xy 138.950209 -17.477332) (xy 138.912855 -17.596709) (xy 138.218135 -19.233367) + (xy 138.158211 -19.343162) (xy 138.078018 -19.439157) (xy 137.980638 -19.517663) (xy 137.869813 -19.575662) (xy 137.749803 -19.610926) + (xy 137.625219 -19.6221) (xy 137.500849 -19.608754) (xy 137.381472 -19.5714) (xy 135.744814 -18.87668) (xy 135.635019 -18.816756) + (xy 135.539024 -18.736563) (xy 135.460518 -18.639183) (xy 135.402519 -18.528358) (xy 135.367255 -18.408348) (xy 135.361052 -18.33919) + (xy 135.345749 -18.340563) (xy 135.221379 -18.327217) (xy 135.102003 -18.289863) (xy 134.273548 -17.938205) (xy 134.163752 -17.878281) + (xy 134.067757 -17.798088) (xy 133.989251 -17.700708) (xy 133.931252 -17.589883) (xy 133.895988 -17.469873) (xy 133.884814 -17.345289) + (xy 126.916271 -17.345289) (xy 126.781214 -17.480346) (xy 126.876526 -17.461387) (xy 127.169222 -17.461387) (xy 127.456295 -17.518489) + (xy 127.726712 -17.630499) (xy 127.97008 -17.793113) (xy 128.177048 -18.000081) (xy 128.339662 -18.243449) (xy 128.451672 -18.513866) + (xy 128.508774 -18.800939) (xy 128.508774 -19.093635) (xy 128.451672 -19.380708) (xy 128.339662 -19.651125) (xy 128.186924 -19.879713) + (xy 128.21076 -19.889586) (xy 128.560441 -20.123235) (xy 128.857821 -20.420615) (xy 129.070139 -20.738372) (xy 129.070139 -20.673277) + (xy 129.171166 -20.165379) (xy 129.369338 -19.68695) (xy 129.657039 -19.256375) (xy 130.023213 -18.890201) (xy 130.453788 -18.6025) + (xy 130.932217 -18.404328) (xy 131.440115 -18.303301) (xy 131.957963 -18.303301) (xy 132.465861 -18.404328) (xy 132.94429 -18.6025) + (xy 133.374865 -18.890201) (xy 133.741039 -19.256375) (xy 134.02874 -19.68695) (xy 134.226912 -20.165379) (xy 134.327939 -20.673277) + (xy 134.327939 -21.191125) (xy 134.226912 -21.699023) (xy 134.02874 -22.177452) (xy 133.741039 -22.608027) (xy 133.374865 -22.974201) + (xy 133.241275 -23.063463) (xy 134.889304 -23.063463) (xy 134.889304 -22.770767) (xy 134.946406 -22.483694) (xy 135.058416 -22.213277) + (xy 135.22103 -21.969909) (xy 135.427998 -21.762941) (xy 135.671366 -21.600327) (xy 135.941783 -21.488317) (xy 136.228856 -21.431215) + (xy 136.521552 -21.431215) (xy 136.808625 -21.488317) (xy 137.079042 -21.600327) (xy 137.32241 -21.762941) (xy 137.529378 -21.969909) + (xy 137.691992 -22.213277) (xy 137.804002 -22.483694) (xy 137.861104 -22.770767) (xy 137.861104 -23.063463) (xy 137.804002 -23.350536) + (xy 137.691992 -23.620953) (xy 137.529378 -23.864321) (xy 137.32241 -24.071289) (xy 137.079042 -24.233903) (xy 136.808625 -24.345913) + (xy 136.521552 -24.403015) (xy 136.228856 -24.403015) (xy 135.941783 -24.345913) (xy 135.671366 -24.233903) (xy 135.427998 -24.071289) + (xy 135.22103 -23.864321) (xy 135.058416 -23.620953) (xy 134.946406 -23.350536) (xy 134.889304 -23.063463) (xy 133.241275 -23.063463) + (xy 132.94429 -23.261902) (xy 132.465861 -23.460074) (xy 131.957963 -23.561101) (xy 131.440115 -23.561101) (xy 130.932217 -23.460074) + (xy 130.453788 -23.261902) (xy 130.023213 -22.974201) (xy 129.657039 -22.608027) (xy 129.369338 -22.177452) (xy 129.320836 -22.060358) + (xy 129.252411 -22.404354) (xy 129.09147 -22.7929) (xy 128.857821 -23.142581) (xy 128.560441 -23.439961) (xy 128.21076 -23.67361) + (xy 127.822214 -23.834551) (xy 127.409737 -23.916598) (xy 126.989179 -23.916598) (xy 126.576702 -23.834551) (xy 126.188156 -23.67361) + (xy 125.838475 -23.439961) (xy 125.541095 -23.142581) (xy 125.307446 -22.7929) (xy 125.146505 -22.404354) (xy 125.143655 -22.390025) + (xy 122.909805 -22.390025) (xy 122.785323 -22.377765) (xy 122.665625 -22.341455) (xy 122.555311 -22.28249) (xy 122.45862 -22.203138) + (xy 122.379268 -22.106447) (xy 122.320303 -21.996133) (xy 122.283993 -21.876435) (xy 122.271733 -21.751953) (xy 100.633048 -21.751953) + (xy 100.675586 -21.831534) (xy 100.711896 -21.951232) (xy 100.724156 -22.075714) (xy 100.724156 -24.575714) (xy 100.711896 -24.700196) + (xy 100.675586 -24.819894) (xy 100.616621 -24.930208) (xy 100.537269 -25.026899) (xy 100.440578 -25.106251) (xy 100.330264 -25.165216) + (xy 100.210566 -25.201526) (xy 100.086084 -25.213786) (xy 97.829479 -25.213786) (xy 97.82453 -25.238665) (xy 97.663589 -25.627211) + (xy 97.42994 -25.976892) (xy 97.13256 -26.274272) (xy 96.782879 -26.507921) (xy 96.394333 -26.668862) (xy 95.981856 -26.750909) + (xy 95.561298 -26.750909) (xy 95.148821 -26.668862) (xy 94.760275 -26.507921) (xy 94.410594 -26.274272) (xy 94.113214 -25.976892) + (xy 93.879565 -25.627211) (xy 93.718624 -25.238665) (xy 93.636577 -24.826188) (xy 93.636577 -24.40563) (xy 93.718624 -23.993153) + (xy 93.879565 -23.604607) (xy 94.113214 -23.254926) (xy 94.410594 -22.957546) (xy 94.760275 -22.723897) (xy 95.148821 -22.562956) + (xy 95.3988 -22.513232) (xy 94.07735 -21.191782) (xy 93.976454 -21.699023) (xy 93.778282 -22.177452) (xy 93.490581 -22.608027) + (xy 93.124407 -22.974201) (xy 92.693832 -23.261902) (xy 92.215403 -23.460074) (xy 91.707505 -23.561101) (xy 91.189657 -23.561101) + (xy 90.681759 -23.460074) (xy 90.615397 -23.432586) (xy 90.825927 -23.747667) (xy 90.986868 -24.136213) (xy 91.068915 -24.54869) + (xy 91.068915 -24.969248) (xy 90.986868 -25.381725) (xy 90.825927 -25.770271) (xy 90.592278 -26.119952) (xy 90.294898 -26.417332) + (xy 89.945217 -26.650981) (xy 89.556671 -26.811922) (xy 89.144194 -26.893969) (xy 88.723636 -26.893969) (xy 88.311159 -26.811922) + (xy 87.922613 -26.650981) (xy 87.832333 -26.590658) (xy 87.832333 -27.288613) (xy 87.820073 -27.413095) (xy 87.783763 -27.532793) + (xy 87.724798 -27.643107) (xy 87.645446 -27.739798) (xy 87.548755 -27.81915) (xy 87.438441 -27.878115) (xy 87.318743 -27.914425) + (xy 87.194261 -27.926685) (xy 84.644261 -27.926685) (xy 84.519779 -27.914425) (xy 84.425879 -27.885941) (xy 84.425879 -34.384563) + (xy 84.940879 -34.384563) (xy 85.065361 -34.396823) (xy 85.185059 -34.433133) (xy 85.295373 -34.492098) (xy 85.392064 -34.57145) + (xy 85.471416 -34.668141) (xy 85.530381 -34.778455) (xy 85.566691 -34.898153) (xy 85.578951 -35.022635) (xy 85.578951 -37.522635) + (xy 85.566691 -37.647117) (xy 85.530381 -37.766815) (xy 85.471416 -37.877129) (xy 85.392064 -37.97382) (xy 85.295373 -38.053172) + (xy 85.185059 -38.112137) (xy 85.065361 -38.148447) (xy 84.940879 -38.160707) (xy 82.684274 -38.160707) (xy 82.679325 -38.185586) + (xy 82.518384 -38.574132) (xy 82.284735 -38.923813) (xy 81.987355 -39.221193) (xy 81.637674 -39.454842) (xy 81.249128 -39.615783) + (xy 80.836651 -39.69783) (xy 80.416093 -39.69783) (xy 80.003616 -39.615783) (xy 79.61507 -39.454842) (xy 79.265389 -39.221193) + (xy 78.968009 -38.923813) (xy 78.73436 -38.574132) (xy 78.573419 -38.185586) (xy 78.491372 -37.773109) (xy 78.491372 -37.352551) + (xy 78.573419 -36.940074) (xy 78.73436 -36.551528) (xy 78.968009 -36.201847) (xy 79.265389 -35.904467) (xy 79.61507 -35.670818) + (xy 80.003616 -35.509877) (xy 80.416093 -35.42783) (xy 80.836651 -35.42783) (xy 81.249128 -35.509877) (xy 81.637674 -35.670818) + (xy 81.752807 -35.747747) (xy 81.752807 -35.022635) (xy 81.765067 -34.898153) (xy 81.801377 -34.778455) (xy 81.860342 -34.668141) + (xy 81.939694 -34.57145) (xy 82.036385 -34.492098) (xy 82.146699 -34.433133) (xy 82.266397 -34.396823) (xy 82.390879 -34.384563) + (xy 82.90588 -34.384563) (xy 82.905879 -28.021736) (xy 75.730985 -20.846841) (xy 75.701987 -20.823043) (xy 75.678189 -20.794045) + (xy 75.678188 -20.794044) (xy 75.607013 -20.707318) (xy 75.587661 -20.671114) (xy 75.260382 -20.671114) (xy 75.255433 -20.695993) + (xy 75.094492 -21.084539) (xy 74.860843 -21.43422) (xy 74.563463 -21.7316) (xy 74.213782 -21.965249) (xy 73.825236 -22.12619) + (xy 73.412759 -22.208237) (xy 72.992201 -22.208237) (xy 72.579724 -22.12619) (xy 72.191178 -21.965249) (xy 71.841497 -21.7316) + (xy 71.544117 -21.43422) (xy 71.310468 -21.084539) (xy 71.149527 -20.695993) (xy 71.06748 -20.283516) (xy 71.06748 -19.862958) + (xy 71.149527 -19.450481) (xy 71.310468 -19.061935) (xy 71.544117 -18.712254) (xy 71.841497 -18.414874) (xy 72.191178 -18.181225) + (xy 72.579724 -18.020284) (xy 72.992201 -17.938237) (xy 73.412759 -17.938237) (xy 73.825236 -18.020284) (xy 74.213782 -18.181225) + (xy 74.328915 -18.258154) (xy 74.328915 -17.533042) (xy 74.341175 -17.40856) (xy 74.377485 -17.288862) (xy 74.43645 -17.178548) + (xy 74.515802 -17.081857) (xy 74.612493 -17.002505) (xy 74.722807 -16.94354) (xy 74.842505 -16.90723) (xy 74.966987 -16.89497) + (xy 75.481988 -16.89497) (xy 75.481987 -9.032143) (xy 69.631367 -3.181522) (xy 67.836491 -3.181522) (xy 67.831542 -3.206401) + (xy 67.670601 -3.594947) (xy 67.436952 -3.944628) (xy 67.139572 -4.242008) (xy 66.789891 -4.475657) (xy 66.401345 -4.636598) + (xy 66.237861 -4.669117) (xy 67.071586 -5.502842) (xy 67.100584 -5.52664) (xy 67.195557 -5.642365) (xy 67.266129 -5.774394) + (xy 67.309586 -5.917655) (xy 67.320583 -6.029308) (xy 67.320583 -6.029316) (xy 67.324259 -6.066641) (xy 67.320583 -6.103966) + (xy 67.320583 -10.343783) (xy 67.34089 -10.318594) (xy 67.436885 -10.238401) (xy 67.546681 -10.178477) (xy 68.375136 -9.826819) + (xy 68.494512 -9.789465) (xy 68.618882 -9.776119) (xy 68.634185 -9.777492) (xy 68.640388 -9.708334) (xy 68.675652 -9.588324) + (xy 68.733651 -9.477499) (xy 68.812157 -9.380119) (xy 68.908152 -9.299926) (xy 69.017947 -9.240002) (xy 70.654605 -8.545282) + (xy 70.773982 -8.507928) (xy 70.898352 -8.494582) (xy 71.022936 -8.505756) (xy 71.142946 -8.54102) (xy 71.253771 -8.599019) + (xy 71.351151 -8.677525) (xy 71.431344 -8.77352) (xy 71.491268 -8.883315) (xy 72.185988 -10.519973) (xy 72.223342 -10.63935) + (xy 72.236688 -10.76372) (xy 72.225514 -10.888304) (xy 72.19025 -11.008314) (xy 72.132251 -11.119139) (xy 72.053745 -11.216519) + (xy 71.95775 -11.296712) (xy 71.847955 -11.356636) (xy 70.211297 -12.051356) (xy 70.09192 -12.08871) (xy 69.96755 -12.102056) + (xy 69.842966 -12.090882) (xy 69.722956 -12.055618) (xy 69.612131 -11.997619) (xy 69.558076 -11.954041) (xy 69.548432 -11.966004) + (xy 69.452437 -12.046197) (xy 69.342641 -12.106121) (xy 68.514186 -12.457779) (xy 68.39481 -12.495133) (xy 68.27044 -12.508479) + (xy 68.145856 -12.497305) (xy 68.025846 -12.462041) (xy 67.915021 -12.404042) (xy 67.817641 -12.325536) (xy 67.737448 -12.229541) + (xy 67.677524 -12.119745) (xy 67.320583 -11.278844) (xy 67.320583 -14.269402) (xy 67.634233 -14.059828) (xy 68.112662 -13.861656) + (xy 68.62056 -13.760629) (xy 69.138408 -13.760629) (xy 69.646306 -13.861656) (xy 70.124735 -14.059828) (xy 70.55531 -14.347529) + (xy 70.758744 -14.550963) (xy 72.069749 -14.550963) (xy 72.069749 -14.258267) (xy 72.126851 -13.971194) (xy 72.238861 -13.700777) + (xy 72.401475 -13.457409) (xy 72.608443 -13.250441) (xy 72.851811 -13.087827) (xy 73.122228 -12.975817) (xy 73.409301 -12.918715) + (xy 73.701997 -12.918715) (xy 73.98907 -12.975817) (xy 74.259487 -13.087827) (xy 74.502855 -13.250441) (xy 74.709823 -13.457409) + (xy 74.872437 -13.700777) (xy 74.984447 -13.971194) (xy 75.041549 -14.258267) (xy 75.041549 -14.550963) (xy 74.984447 -14.838036) + (xy 74.872437 -15.108453) (xy 74.709823 -15.351821) (xy 74.502855 -15.558789) (xy 74.259487 -15.721403) (xy 73.98907 -15.833413) + (xy 73.701997 -15.890515) (xy 73.409301 -15.890515) (xy 73.122228 -15.833413) (xy 72.851811 -15.721403) (xy 72.608443 -15.558789) + (xy 72.401475 -15.351821) (xy 72.238861 -15.108453) (xy 72.126851 -14.838036) (xy 72.069749 -14.550963) (xy 70.758744 -14.550963) + (xy 70.921484 -14.713703) (xy 71.209185 -15.144278) (xy 71.407357 -15.622707) (xy 71.508384 -16.130605) (xy 71.508384 -16.648453) + (xy 71.407357 -17.156351) (xy 71.209185 -17.63478) (xy 70.921484 -18.065355) (xy 70.55531 -18.431529) (xy 70.124735 -18.71923) + (xy 69.646306 -18.917402) (xy 69.148272 -19.016467) (xy 69.149883 -19.018429) (xy 69.214974 -19.097742) (xy 69.285546 -19.229772) + (xy 69.28648 -19.232851) (xy 69.329003 -19.373033) (xy 69.34 -19.484686) (xy 69.34 -19.484696) (xy 69.343676 -19.522019) + (xy 69.34 -19.559342) (xy 69.34 -28.260985) (xy 74.581839 -28.260985) (xy 74.593013 -28.136401) (xy 74.628277 -28.016391) + (xy 74.686276 -27.905566) (xy 74.764782 -27.808186) (xy 74.860777 -27.727993) (xy 74.970573 -27.668069) (xy 75.799028 -27.316411) + (xy 75.918404 -27.279057) (xy 76.042774 -27.265711) (xy 76.058077 -27.267084) (xy 76.06428 -27.197926) (xy 76.099544 -27.077916) + (xy 76.157543 -26.967091) (xy 76.236049 -26.869711) (xy 76.332044 -26.789518) (xy 76.441839 -26.729594) (xy 78.078497 -26.034874) + (xy 78.197874 -25.99752) (xy 78.322244 -25.984174) (xy 78.446828 -25.995348) (xy 78.566838 -26.030612) (xy 78.677663 -26.088611) + (xy 78.775043 -26.167117) (xy 78.855236 -26.263112) (xy 78.91516 -26.372907) (xy 79.60988 -28.009565) (xy 79.647234 -28.128942) + (xy 79.66058 -28.253312) (xy 79.649406 -28.377896) (xy 79.614142 -28.497906) (xy 79.556143 -28.608731) (xy 79.477637 -28.706111) + (xy 79.381642 -28.786304) (xy 79.271847 -28.846228) (xy 77.635189 -29.540948) (xy 77.515812 -29.578302) (xy 77.391442 -29.591648) + (xy 77.266858 -29.580474) (xy 77.146848 -29.54521) (xy 77.036023 -29.487211) (xy 76.981968 -29.443633) (xy 76.972324 -29.455596) + (xy 76.876329 -29.535789) (xy 76.766533 -29.595713) (xy 75.938078 -29.947371) (xy 75.818702 -29.984725) (xy 75.694332 -29.998071) + (xy 75.569748 -29.986897) (xy 75.449738 -29.951633) (xy 75.338913 -29.893634) (xy 75.241533 -29.815128) (xy 75.16134 -29.719133) + (xy 75.101416 -29.609337) (xy 74.632539 -28.504731) (xy 74.595185 -28.385355) (xy 74.581839 -28.260985) (xy 69.34 -28.260985) + (xy 69.34 -30.244536) (xy 69.435773 -30.01332) (xy 69.609505 -29.753311) (xy 69.830625 -29.532191) (xy 70.090634 -29.358459) + (xy 70.37954 -29.23879) (xy 70.686242 -29.177783) (xy 70.998952 -29.177783) (xy 71.305654 -29.23879) (xy 71.577246 -29.351287) + (xy 71.590611 -29.305803) (xy 71.64861 -29.194978) (xy 71.727116 -29.097598) (xy 71.823111 -29.017405) (xy 71.932907 -28.957481) + (xy 72.761362 -28.605823) (xy 72.880738 -28.568469) (xy 73.005108 -28.555123) (xy 73.129692 -28.566297) (xy 73.249702 -28.601561) + (xy 73.360527 -28.65956) (xy 73.457907 -28.738066) (xy 73.5381 -28.834061) (xy 73.598024 -28.943857) (xy 74.066901 -30.048463) + (xy 74.104255 -30.167839) (xy 74.117601 -30.292209) (xy 74.106427 -30.416793) (xy 74.071163 -30.536803) (xy 74.013164 -30.647628) + (xy 73.934658 -30.745008) (xy 73.838663 -30.825201) (xy 73.728867 -30.885125) (xy 72.900412 -31.236783) (xy 72.781036 -31.274137) + (xy 72.656666 -31.287483) (xy 72.549412 -31.277863) (xy 72.526908 -31.305284) (xy 72.411183 -31.400257) (xy 72.279154 -31.470829) + (xy 72.267138 -31.474474) (xy 72.249421 -31.517246) (xy 72.075689 -31.777255) (xy 71.854569 -31.998375) (xy 71.59456 -32.172107) + (xy 71.305654 -32.291776) (xy 71.21131 -32.310542) (xy 71.21131 -34.431753) (xy 71.480863 -34.378136) (xy 71.773559 -34.378136) + (xy 72.060632 -34.435238) (xy 72.331049 -34.547248) (xy 72.574417 -34.709862) (xy 72.781385 -34.91683) (xy 72.943999 -35.160198) + (xy 73.056009 -35.430615) (xy 73.105234 -35.678088) (xy 73.165954 -35.652937) (xy 73.578431 -35.57089) (xy 73.998989 -35.57089) + (xy 74.346428 -35.64) (xy 74.261376 -35.554948) (xy 73.973675 -35.124373) (xy 73.775503 -34.645944) (xy 73.674476 -34.138046) + (xy 73.674476 -33.620198) (xy 73.775503 -33.1123) (xy 73.973675 -32.633871) (xy 74.261376 -32.203296) (xy 74.62755 -31.837122) + (xy 75.058125 -31.549421) (xy 75.536554 -31.351249) (xy 76.044452 -31.250222) (xy 76.5623 -31.250222) (xy 77.070198 -31.351249) + (xy 77.548627 -31.549421) (xy 77.979202 -31.837122) (xy 78.182636 -32.040556) (xy 79.493641 -32.040556) (xy 79.493641 -31.74786) + (xy 79.550743 -31.460787) (xy 79.662753 -31.19037) (xy 79.825367 -30.947002) (xy 80.032335 -30.740034) (xy 80.275703 -30.57742) + (xy 80.54612 -30.46541) (xy 80.833193 -30.408308) (xy 81.125889 -30.408308) (xy 81.412962 -30.46541) (xy 81.683379 -30.57742) + (xy 81.926747 -30.740034) (xy 82.133715 -30.947002) (xy 82.296329 -31.19037) (xy 82.408339 -31.460787) (xy 82.465441 -31.74786) + (xy 82.465441 -32.040556) (xy 82.408339 -32.327629) (xy 82.296329 -32.598046) (xy 82.133715 -32.841414) (xy 81.926747 -33.048382) + (xy 81.683379 -33.210996) (xy 81.412962 -33.323006) (xy 81.125889 -33.380108) (xy 80.833193 -33.380108) (xy 80.54612 -33.323006) + (xy 80.275703 -33.210996) (xy 80.032335 -33.048382) (xy 79.825367 -32.841414) (xy 79.662753 -32.598046) (xy 79.550743 -32.327629) + (xy 79.493641 -32.040556) (xy 78.182636 -32.040556) (xy 78.345376 -32.203296) (xy 78.633077 -32.633871) (xy 78.831249 -33.1123) + (xy 78.932276 -33.620198) (xy 78.932276 -34.138046) (xy 78.831249 -34.645944) (xy 78.633077 -35.124373) (xy 78.345376 -35.554948) + (xy 77.979202 -35.921122) (xy 77.548627 -36.208823) (xy 77.070198 -36.406995) (xy 76.5623 -36.508022) (xy 76.044452 -36.508022) + (xy 75.536554 -36.406995) (xy 75.470192 -36.379507) (xy 75.680722 -36.694588) (xy 75.841663 -37.083134) (xy 75.92371 -37.495611) + (xy 75.92371 -37.916169) (xy 75.841663 -38.328646) (xy 75.680722 -38.717192) (xy 75.447073 -39.066873) (xy 75.149693 -39.364253) + (xy 74.800012 -39.597902) (xy 74.411466 -39.758843) (xy 73.998989 -39.84089) (xy 73.578431 -39.84089) (xy 73.165954 -39.758843) + (xy 72.777408 -39.597902) (xy 72.687128 -39.537579) (xy 72.687128 -40.235534) (xy 72.674868 -40.360016) (xy 72.638558 -40.479714) + (xy 72.579593 -40.590028) (xy 72.500241 -40.686719) (xy 72.40355 -40.766071) (xy 72.293236 -40.825036) (xy 72.173538 -40.861346) + (xy 72.049056 -40.873606) (xy 69.499056 -40.873606) (xy 69.374574 -40.861346) (xy 69.34 -40.850858) (xy 69.34 -41.206289) + (xy 69.383937 -41.250226) (xy 69.497205 -41.419744) (xy 69.575226 -41.608102) (xy 69.615 -41.808061) (xy 69.615 -42.011939) + (xy 69.575226 -42.211898) (xy 69.497205 -42.400256) (xy 69.383937 -42.569774) (xy 69.239774 -42.713937) (xy 69.070256 -42.827205) + (xy 68.881898 -42.905226) (xy 68.681939 -42.945) (xy 68.478061 -42.945) (xy 68.278102 -42.905226) (xy 68.089744 -42.827205) + (xy 67.920226 -42.713937) (xy 67.776063 -42.569774) (xy 67.662795 -42.400256) (xy 67.584774 -42.211898) (xy 67.545 -42.011939) + (xy 67.545 -41.808061) (xy 67.584774 -41.608102) (xy 67.662795 -41.419744) (xy 67.776063 -41.250226) (xy 67.82 -41.206289) + (xy 67.820001 -21.78046) (xy 67.725801 -21.87466) (xy 67.37612 -22.108309) (xy 66.987574 -22.26925) (xy 66.575097 -22.351297) + (xy 66.154539 -22.351297) (xy 65.742062 -22.26925) (xy 65.353516 -22.108309) (xy 65.263236 -22.047986) (xy 65.263236 -22.745941) + (xy 65.250976 -22.870423) (xy 65.214666 -22.990121) (xy 65.155701 -23.100435) (xy 65.076349 -23.197126) (xy 64.979658 -23.276478) + (xy 64.869344 -23.335443) (xy 64.749646 -23.371753) (xy 64.625164 -23.384013) (xy 62.075164 -23.384013) (xy 61.950682 -23.371753) + (xy 61.830984 -23.335443) (xy 61.72067 -23.276478) (xy 61.623979 -23.197126) (xy 61.544627 -23.100435) (xy 61.485662 -22.990121) + (xy 61.449352 -22.870423) (xy 61.437092 -22.745941) (xy 61.437092 -20.245941) (xy 61.449352 -20.121459) (xy 61.485662 -20.001761) + (xy 61.544627 -19.891447) (xy 61.623979 -19.794756) (xy 61.72067 -19.715404) (xy 61.830984 -19.656439) (xy 61.950682 -19.620129) + (xy 62.075164 -19.607869) (xy 62.267418 -19.607869) (xy 62.267419 -14.369469) (xy 62.185613 -14.287663) (xy 62.011881 -14.027654) + (xy 61.892212 -13.738748) (xy 61.831205 -13.432046) (xy 61.831205 -13.119336) (xy 61.892212 -12.812634) (xy 62.011881 -12.523728) + (xy 62.185613 -12.263719) (xy 62.406733 -12.042599) (xy 62.666742 -11.868867) (xy 62.955648 -11.749198) (xy 63.26235 -11.688191) + (xy 63.57506 -11.688191) (xy 63.881762 -11.749198) (xy 64.153354 -11.861695) (xy 64.166719 -11.816211) (xy 64.224718 -11.705386) + (xy 64.303224 -11.608006) (xy 64.399219 -11.527813) (xy 64.509015 -11.467889) (xy 65.33747 -11.116231) (xy 65.456846 -11.078877) + (xy 65.581216 -11.065531) (xy 65.7058 -11.076705) (xy 65.800584 -11.104556) (xy 65.800584 -6.381444) (xy 63.442591 -4.02345) + (xy 63.413587 -3.999647) (xy 63.363598 -3.938735) (xy 63.318614 -3.883922) (xy 63.270638 -3.794165) (xy 63.248042 -3.751892) + (xy 63.204585 -3.608631) (xy 63.193588 -3.496978) (xy 63.193588 -3.496968) (xy 63.189912 -3.459646) (xy 63.193588 -3.422323) + (xy 63.193588 -0.879768) (xy 63.131419 -0.941937) (xy 62.700844 -1.229638) (xy 62.222415 -1.42781) (xy 61.714517 -1.528837) + (xy 61.196669 -1.528837) (xy 60.688771 -1.42781) (xy 60.622409 -1.400322) (xy 60.832939 -1.715403) (xy 60.99388 -2.103949) + (xy 61.075927 -2.516426) (xy 61.075927 -2.936984) (xy 60.99388 -3.349461) (xy 60.832939 -3.738007) (xy 60.59929 -4.087688) + (xy 60.30191 -4.385068) (xy 59.952229 -4.618717) (xy 59.563683 -4.779658) (xy 59.151206 -4.861705) (xy 58.730648 -4.861705) + (xy 58.318171 -4.779658) (xy 57.929625 -4.618717) (xy 57.839345 -4.558394) (xy 57.839345 -5.256349) (xy 57.827085 -5.380831) + (xy 57.790775 -5.500529) (xy 57.73181 -5.610843) (xy 57.652458 -5.707534) (xy 57.555767 -5.786886) (xy 57.445453 -5.845851) + (xy 57.325755 -5.882161) (xy 57.201273 -5.894421) (xy 54.651273 -5.894421) (xy 54.526791 -5.882161) (xy 54.407093 -5.845851) + (xy 54.296779 -5.786886) (xy 54.200088 -5.707534) (xy 54.120736 -5.610843) (xy 54.061771 -5.500529) (xy 54.042159 -5.435877) + (xy 54.042159 -6.858448) (xy 54.086096 -6.902385) (xy 54.199364 -7.071903) (xy 54.277385 -7.260261) (xy 54.317159 -7.46022) + (xy 54.317159 -7.664098) (xy 54.277385 -7.864057) (xy 54.199364 -8.052415) (xy 54.086096 -8.221933) (xy 54.042159 -8.26587) + (xy 54.042159 -11.431794) (xy 54.557159 -11.431794) (xy 54.681641 -11.444054) (xy 54.801339 -11.480364) (xy 54.911653 -11.539329) + (xy 55.008344 -11.618681) (xy 55.087696 -11.715372) (xy 55.146661 -11.825686) (xy 55.182971 -11.945384) (xy 55.195231 -12.069866) + (xy 55.195231 -14.569866) (xy 55.182971 -14.694348) (xy 55.146661 -14.814046) (xy 55.087696 -14.92436) (xy 55.008344 -15.021051) + (xy 54.911653 -15.100403) (xy 54.801339 -15.159368) (xy 54.681641 -15.195678) (xy 54.557159 -15.207938) (xy 54.042159 -15.207938) + (xy 54.042159 -21.028649) (xy 55.118669 -20.571698) (xy 55.238046 -20.534344) (xy 55.362416 -20.520998) (xy 55.487 -20.532172) + (xy 55.60701 -20.567436) (xy 55.717835 -20.625435) (xy 55.815215 -20.703941) (xy 55.895408 -20.799936) (xy 55.955332 -20.909731) + (xy 56.650052 -22.546389) (xy 56.687406 -22.665766) (xy 56.700752 -22.790136) (xy 56.689578 -22.91472) (xy 56.654314 -23.03473) + (xy 56.596315 -23.145555) (xy 56.517809 -23.242935) (xy 56.421814 -23.323128) (xy 56.312019 -23.383052) (xy 54.675361 -24.077772) + (xy 54.555984 -24.115126) (xy 54.431614 -24.128472) (xy 54.30703 -24.117298) (xy 54.18702 -24.082034) (xy 54.076195 -24.024035) + (xy 54.02214 -23.980457) (xy 54.012496 -23.99242) (xy 53.916501 -24.072613) (xy 53.806705 -24.132537) (xy 53.646805 -24.200411) + (xy 56.023773 -26.577379) (xy 56.533813 -26.577379) (xy 56.533813 -26.284683) (xy 56.590915 -25.99761) (xy 56.702925 -25.727193) + (xy 56.865539 -25.483825) (xy 57.072507 -25.276857) (xy 57.315875 -25.114243) (xy 57.586292 -25.002233) (xy 57.873365 -24.945131) + (xy 58.166061 -24.945131) (xy 58.453134 -25.002233) (xy 58.723551 -25.114243) (xy 58.966919 -25.276857) (xy 59.173887 -25.483825) + (xy 59.336501 -25.727193) (xy 59.448511 -25.99761) (xy 59.505613 -26.284683) (xy 59.505613 -26.577379) (xy 59.448511 -26.864452) + (xy 59.336501 -27.134869) (xy 59.173887 -27.378237) (xy 58.966919 -27.585205) (xy 58.723551 -27.747819) (xy 58.453134 -27.859829) + (xy 58.166061 -27.916931) (xy 57.873365 -27.916931) (xy 57.586292 -27.859829) (xy 57.315875 -27.747819) (xy 57.072507 -27.585205) + (xy 56.865539 -27.378237) (xy 56.702925 -27.134869) (xy 56.590915 -26.864452) (xy 56.533813 -26.577379) (xy 56.023773 -26.577379) + (xy 58.822958 -29.376563) (xy 58.841549 -29.315278) (xy 58.900514 -29.204964) (xy 58.979866 -29.108273) (xy 59.076557 -29.028921) + (xy 59.186871 -28.969956) (xy 59.306569 -28.933646) (xy 59.431051 -28.921386) (xy 61.981051 -28.921386) (xy 62.105533 -28.933646) + (xy 62.225231 -28.969956) (xy 62.335545 -29.028921) (xy 62.432236 -29.108273) (xy 62.511588 -29.204964) (xy 62.570553 -29.315278) + (xy 62.606863 -29.434976) (xy 62.619123 -29.559458) (xy 62.619123 -32.059458) (xy 62.606863 -32.18394) (xy 62.570553 -32.303638) + (xy 62.511588 -32.413952) (xy 62.432236 -32.510643) (xy 62.335545 -32.589995) (xy 62.225231 -32.64896) (xy 62.105533 -32.68527) + (xy 61.981051 -32.69753) (xy 61.466051 -32.69753) (xy 61.466051 -38.518241) (xy 62.54256 -38.06129) (xy 62.661937 -38.023936) + (xy 62.786307 -38.01059) (xy 62.910891 -38.021764) (xy 63.030901 -38.057028) (xy 63.141726 -38.115027) (xy 63.239106 -38.193533) + (xy 63.319299 -38.289528) (xy 63.379223 -38.399323) (xy 64.073943 -40.035981) (xy 64.111297 -40.155358) (xy 64.124643 -40.279728) + (xy 64.113469 -40.404312) (xy 64.078205 -40.524322) (xy 64.020206 -40.635147) (xy 63.9417 -40.732527) (xy 63.845705 -40.81272) + (xy 63.73591 -40.872644) (xy 62.099252 -41.567364) (xy 61.979875 -41.604718) (xy 61.855505 -41.618064) (xy 61.730921 -41.60689) + (xy 61.610911 -41.571626) (xy 61.500086 -41.513627) (xy 61.446031 -41.470049) (xy 61.436387 -41.482012) (xy 61.340392 -41.562205) + (xy 61.230596 -41.622129) (xy 61.070696 -41.690003) (xy 63.447664 -44.066971) (xy 63.957704 -44.066971) (xy 63.957704 -43.774275) + (xy 64.014806 -43.487202) (xy 64.126816 -43.216785) (xy 64.28943 -42.973417) (xy 64.496398 -42.766449) (xy 64.739766 -42.603835) + (xy 65.010183 -42.491825) (xy 65.297256 -42.434723) (xy 65.589952 -42.434723) (xy 65.877025 -42.491825) (xy 66.147442 -42.603835) + (xy 66.39081 -42.766449) (xy 66.597778 -42.973417) (xy 66.760392 -43.216785) (xy 66.872402 -43.487202) (xy 66.929504 -43.774275) + (xy 66.929504 -44.066971) (xy 66.872402 -44.354044) (xy 66.760392 -44.624461) (xy 66.597778 -44.867829) (xy 66.39081 -45.074797) + (xy 66.147442 -45.237411) (xy 65.877025 -45.349421) (xy 65.589952 -45.406523) (xy 65.297256 -45.406523) (xy 65.010183 -45.349421) + (xy 64.739766 -45.237411) (xy 64.496398 -45.074797) (xy 64.28943 -44.867829) (xy 64.126816 -44.624461) (xy 64.014806 -44.354044) + (xy 63.957704 -44.066971) (xy 63.447664 -44.066971) (xy 66.246849 -46.866155) (xy 66.26544 -46.80487) (xy 66.324405 -46.694556) + (xy 66.403757 -46.597865) (xy 66.500448 -46.518513) (xy 66.610762 -46.459548) (xy 66.73046 -46.423238) (xy 66.854942 -46.410978) + (xy 69.404942 -46.410978) (xy 69.529424 -46.423238) (xy 69.649122 -46.459548) (xy 69.759436 -46.518513) (xy 69.856127 -46.597865) + (xy 69.935479 -46.694556) (xy 69.994444 -46.80487) (xy 70.030754 -46.924568) (xy 70.043014 -47.04905) (xy 70.043014 -49.54905) + (xy 70.030754 -49.673532) (xy 69.994444 -49.79323) (xy 69.935479 -49.903544) (xy 69.856127 -50.000235) (xy 69.759436 -50.079587) + (xy 69.649122 -50.138552) (xy 69.529424 -50.174862) (xy 69.404942 -50.187122) (xy 67.148337 -50.187122) (xy 67.143388 -50.212001) + (xy 66.982447 -50.600547) (xy 66.748798 -50.950228) (xy 66.451418 -51.247608) (xy 66.101737 -51.481257) (xy 65.713191 -51.642198) + (xy 65.300714 -51.724245) (xy 64.880156 -51.724245) (xy 64.467679 -51.642198) (xy 64.079133 -51.481257) (xy 63.729452 -51.247608) + (xy 63.432072 -50.950228) (xy 63.198423 -50.600547) (xy 63.037482 -50.212001) (xy 62.955435 -49.799524) (xy 62.955435 -49.378966) + (xy 63.037482 -48.966489) (xy 63.198423 -48.577943) (xy 63.432072 -48.228262) (xy 63.729452 -47.930882) (xy 64.079133 -47.697233) + (xy 64.467679 -47.536292) (xy 64.717658 -47.486568) (xy 63.396208 -46.165118) (xy 63.295312 -46.672359) (xy 63.09714 -47.150788) + (xy 62.809439 -47.581363) (xy 62.443265 -47.947537) (xy 62.01269 -48.235238) (xy 61.534261 -48.43341) (xy 61.026363 -48.534437) + (xy 60.508515 -48.534437) (xy 60.000617 -48.43341) (xy 59.934255 -48.405922) (xy 60.144785 -48.721003) (xy 60.305726 -49.109549) + (xy 60.387773 -49.522026) (xy 60.387773 -49.942584) (xy 60.305726 -50.355061) (xy 60.144785 -50.743607) (xy 59.911136 -51.093288) + (xy 59.613756 -51.390668) (xy 59.264075 -51.624317) (xy 58.875529 -51.785258) (xy 58.463052 -51.867305) (xy 58.042494 -51.867305) + (xy 57.630017 -51.785258) (xy 57.241471 -51.624317) (xy 57.151191 -51.563994) (xy 57.151191 -52.261949) (xy 57.138931 -52.386431) + (xy 57.102621 -52.506129) (xy 57.043656 -52.616443) (xy 56.964304 -52.713134) (xy 56.867613 -52.792486) (xy 56.757299 -52.851451) + (xy 56.637601 -52.887761) (xy 56.513119 -52.900021) (xy 53.963119 -52.900021) (xy 53.838637 -52.887761) (xy 53.718939 -52.851451) + (xy 53.608625 -52.792486) (xy 53.511934 -52.713134) (xy 53.432582 -52.616443) (xy 53.373617 -52.506129) (xy 53.337307 -52.386431) + (xy 53.325047 -52.261949) (xy 53.325047 -49.761949) (xy 53.337307 -49.637467) (xy 53.373617 -49.517769) (xy 53.432582 -49.407455) + (xy 53.511934 -49.310764) (xy 53.608625 -49.231412) (xy 53.718939 -49.172447) (xy 53.838637 -49.136137) (xy 53.963119 -49.123877) + (xy 54.155373 -49.123877) (xy 54.155374 -43.885477) (xy 54.073568 -43.803671) (xy 53.899836 -43.543662) (xy 53.780167 -43.254756) + (xy 53.71916 -42.948054) (xy 53.71916 -42.635344) (xy 53.780167 -42.328642) (xy 53.899836 -42.039736) (xy 54.073568 -41.779727) + (xy 54.294688 -41.558607) (xy 54.554697 -41.384875) (xy 54.843603 -41.265206) (xy 55.150305 -41.204199) (xy 55.463015 -41.204199) + (xy 55.769717 -41.265206) (xy 56.041309 -41.377703) (xy 56.054674 -41.332219) (xy 56.112673 -41.221394) (xy 56.191179 -41.124014) + (xy 56.287174 -41.043821) (xy 56.39697 -40.983897) (xy 57.225425 -40.632239) (xy 57.344801 -40.594885) (xy 57.469171 -40.581539) + (xy 57.593755 -40.592713) (xy 57.713765 -40.627977) (xy 57.82459 -40.685976) (xy 57.92197 -40.764482) (xy 58.002163 -40.860477) + (xy 58.062087 -40.970273) (xy 58.530964 -42.074879) (xy 58.568318 -42.194255) (xy 58.581664 -42.318625) (xy 58.57049 -42.443209) + (xy 58.535226 -42.563219) (xy 58.477227 -42.674044) (xy 58.398721 -42.771424) (xy 58.302726 -42.851617) (xy 58.19293 -42.911541) + (xy 57.364475 -43.263199) (xy 57.245099 -43.300553) (xy 57.120729 -43.313899) (xy 57.013475 -43.304279) (xy 56.990971 -43.3317) + (xy 56.875246 -43.426673) (xy 56.743217 -43.497245) (xy 56.731201 -43.50089) (xy 56.713484 -43.543662) (xy 56.539752 -43.803671) + (xy 56.318632 -44.024791) (xy 56.058623 -44.198523) (xy 55.769717 -44.318192) (xy 55.675373 -44.336958) (xy 55.675373 -46.458168) + (xy 55.944926 -46.404551) (xy 56.237622 -46.404551) (xy 56.524695 -46.461653) (xy 56.795112 -46.573663) (xy 57.03848 -46.736277) + (xy 57.245448 -46.943245) (xy 57.408062 -47.186613) (xy 57.520072 -47.45703) (xy 57.569297 -47.704503) (xy 57.630017 -47.679352) + (xy 58.042494 -47.597305) (xy 58.463052 -47.597305) (xy 58.810491 -47.666415) (xy 58.725439 -47.581363) (xy 58.437738 -47.150788) + (xy 58.239566 -46.672359) (xy 58.138539 -46.164461) (xy 58.138539 -45.646613) (xy 58.239566 -45.138715) (xy 58.437738 -44.660286) + (xy 58.725439 -44.229711) (xy 59.091613 -43.863537) (xy 59.522188 -43.575836) (xy 60.000617 -43.377664) (xy 60.507858 -43.276768) + (xy 58.847938 -41.616847) (xy 58.81894 -41.593049) (xy 58.795142 -41.564051) (xy 58.795141 -41.56405) (xy 58.723966 -41.477324) + (xy 58.653394 -41.345294) (xy 58.629527 -41.266612) (xy 58.609938 -41.202034) (xy 58.59894 -41.090381) (xy 58.59894 -41.09037) + (xy 58.595264 -41.053048) (xy 58.59894 -41.015726) (xy 58.59894 -40.184531) (xy 58.595264 -40.147209) (xy 58.59894 -40.109887) + (xy 58.59894 -40.109877) (xy 58.609937 -39.998224) (xy 58.647312 -39.875013) (xy 58.653394 -39.854963) (xy 58.723966 -39.722933) + (xy 58.750741 -39.690308) (xy 58.818939 -39.607208) (xy 58.847943 -39.583405) (xy 59.946052 -38.485295) (xy 59.946051 -32.69753) + (xy 59.724446 -32.69753) (xy 59.719497 -32.722409) (xy 59.558556 -33.110955) (xy 59.324907 -33.460636) (xy 59.027527 -33.758016) + (xy 58.677846 -33.991665) (xy 58.2893 -34.152606) (xy 57.876823 -34.234653) (xy 57.456265 -34.234653) (xy 57.043788 -34.152606) + (xy 56.655242 -33.991665) (xy 56.305561 -33.758016) (xy 56.008181 -33.460636) (xy 55.774532 -33.110955) (xy 55.613591 -32.722409) + (xy 55.531544 -32.309932) (xy 55.531544 -31.889374) (xy 55.613591 -31.476897) (xy 55.774532 -31.088351) (xy 56.008181 -30.73867) + (xy 56.305561 -30.44129) (xy 56.655242 -30.207641) (xy 57.043788 -30.0467) (xy 57.293767 -29.996976) (xy 55.972317 -28.675526) + (xy 55.871421 -29.182767) (xy 55.673249 -29.661196) (xy 55.385548 -30.091771) (xy 55.019374 -30.457945) (xy 54.588799 -30.745646) + (xy 54.11037 -30.943818) (xy 53.602472 -31.044845) (xy 53.084624 -31.044845) (xy 52.576726 -30.943818) (xy 52.510364 -30.91633) + (xy 52.720894 -31.231411) (xy 52.881835 -31.619957) (xy 52.963882 -32.032434) (xy 52.963882 -32.452992) (xy 52.881835 -32.865469) + (xy 52.720894 -33.254015) (xy 52.487245 -33.603696) (xy 52.189865 -33.901076) (xy 51.840184 -34.134725) (xy 51.451638 -34.295666) + (xy 51.039161 -34.377713) (xy 50.618603 -34.377713) (xy 50.206126 -34.295666) (xy 49.81758 -34.134725) (xy 49.7273 -34.074402) + (xy 49.7273 -34.772357) (xy 49.71504 -34.896839) (xy 49.67873 -35.016537) (xy 49.619765 -35.126851) (xy 49.540413 -35.223542) + (xy 49.443722 -35.302894) (xy 49.333408 -35.361859) (xy 49.21371 -35.398169) (xy 49.089228 -35.410429) (xy 46.539228 -35.410429) + (xy 46.414746 -35.398169) (xy 46.295048 -35.361859) (xy 46.184734 -35.302894) (xy 46.088043 -35.223542) (xy 46.008691 -35.126851) + (xy 45.949726 -35.016537) (xy 45.913416 -34.896839) (xy 45.901156 -34.772357) (xy 45.901156 -32.272357) (xy 45.913416 -32.147875) + (xy 45.949726 -32.028177) (xy 46.008691 -31.917863) (xy 46.088043 -31.821172) (xy 46.184734 -31.74182) (xy 46.295048 -31.682855) + (xy 46.414746 -31.646545) (xy 46.539228 -31.634285) (xy 47.054229 -31.634285) (xy 47.054229 -31.60284) (xy 46.980485 -31.529096) + (xy 46.951481 -31.505293) (xy 46.898776 -31.441071) (xy 46.856508 -31.389568) (xy 46.802239 -31.288038) (xy 46.785936 -31.257538) + (xy 46.742479 -31.114277) (xy 46.731482 -31.002624) (xy 46.731482 -31.002614) (xy 46.727806 -30.965292) (xy 46.731482 -30.927969) + (xy 46.731483 -26.395885) (xy 46.649677 -26.314079) (xy 46.475945 -26.05407) (xy 46.356276 -25.765164) (xy 46.295269 -25.458462) + (xy 46.295269 -25.145752) (xy 46.356276 -24.83905) (xy 46.475945 -24.550144) (xy 46.649677 -24.290135) (xy 46.870797 -24.069015) + (xy 47.130806 -23.895283) (xy 47.419712 -23.775614) (xy 47.726414 -23.714607) (xy 48.039124 -23.714607) (xy 48.345826 -23.775614) + (xy 48.617418 -23.888111) (xy 48.630783 -23.842627) (xy 48.688782 -23.731802) (xy 48.767288 -23.634422) (xy 48.863283 -23.554229) + (xy 48.973079 -23.494305) (xy 49.801534 -23.142647) (xy 49.92091 -23.105293) (xy 50.04528 -23.091947) (xy 50.169864 -23.103121) + (xy 50.289874 -23.138385) (xy 50.400699 -23.196384) (xy 50.498079 -23.27489) (xy 50.578272 -23.370885) (xy 50.638196 -23.480681) + (xy 51.107073 -24.585287) (xy 51.144427 -24.704663) (xy 51.157773 -24.829033) (xy 51.146599 -24.953617) (xy 51.111335 -25.073627) + (xy 51.053336 -25.184452) (xy 50.97483 -25.281832) (xy 50.878835 -25.362025) (xy 50.769039 -25.421949) (xy 49.940584 -25.773607) + (xy 49.821208 -25.810961) (xy 49.696838 -25.824307) (xy 49.589584 -25.814687) (xy 49.56708 -25.842108) (xy 49.451355 -25.937081) + (xy 49.319326 -26.007653) (xy 49.30731 -26.011298) (xy 49.289593 -26.05407) (xy 49.115861 -26.314079) (xy 48.894741 -26.535199) + (xy 48.634732 -26.708931) (xy 48.345826 -26.8286) (xy 48.251482 -26.847366) (xy 48.251482 -28.968576) (xy 48.521035 -28.914959) + (xy 48.813731 -28.914959) (xy 49.100804 -28.972061) (xy 49.371221 -29.084071) (xy 49.614589 -29.246685) (xy 49.821557 -29.453653) + (xy 49.984171 -29.697021) (xy 50.096181 -29.967438) (xy 50.145406 -30.214911) (xy 50.206126 -30.18976) (xy 50.618603 -30.107713) + (xy 51.039161 -30.107713) (xy 51.3866 -30.176823) (xy 51.301548 -30.091771) (xy 51.013847 -29.661196) (xy 50.815675 -29.182767) + (xy 50.714648 -28.674869) (xy 50.714648 -28.157021) (xy 50.815675 -27.649123) (xy 51.013847 -27.170694) (xy 51.301548 -26.740119) + (xy 51.667722 -26.373945) (xy 52.098297 -26.086244) (xy 52.576726 -25.888072) (xy 53.083967 -25.787176) (xy 51.424047 -24.127255) + (xy 51.395049 -24.103457) (xy 51.371251 -24.074459) (xy 51.37125 -24.074458) (xy 51.300075 -23.987732) (xy 51.229503 -23.855702) + (xy 51.205636 -23.77702) (xy 51.186047 -23.712442) (xy 51.175049 -23.600789) (xy 51.175049 -23.600778) (xy 51.171373 -23.563456) + (xy 51.175049 -23.526134) (xy 51.175049 -22.694939) (xy 51.171373 -22.657617) (xy 51.175049 -22.620295) (xy 51.175049 -22.620285) + (xy 51.186046 -22.508632) (xy 51.225743 -22.377765) (xy 51.229503 -22.365371) (xy 51.300075 -22.233341) (xy 51.326217 -22.201487) + (xy 51.395048 -22.117616) (xy 51.424052 -22.093813) (xy 52.52216 -20.995704) (xy 52.522159 -15.207938) (xy 52.300554 -15.207938) + (xy 52.295605 -15.232817) (xy 52.134664 -15.621363) (xy 51.901015 -15.971044) (xy 51.603635 -16.268424) (xy 51.253954 -16.502073) + (xy 50.865408 -16.663014) (xy 50.452931 -16.745061) (xy 50.032373 -16.745061) (xy 49.619896 -16.663014) (xy 49.23135 -16.502073) + (xy 48.881669 -16.268424) (xy 48.584289 -15.971044) (xy 48.35064 -15.621363) (xy 48.189699 -15.232817) (xy 48.107652 -14.82034) + (xy 48.107652 -14.399782) (xy 48.189699 -13.987305) (xy 48.35064 -13.598759) (xy 48.584289 -13.249078) (xy 48.881669 -12.951698) + (xy 49.23135 -12.718049) (xy 49.619896 -12.557108) (xy 50.032373 -12.475061) (xy 50.452931 -12.475061) (xy 50.865408 -12.557108) + (xy 51.253954 -12.718049) (xy 51.369087 -12.794978) (xy 51.369087 -12.069866) (xy 51.381347 -11.945384) (xy 51.417657 -11.825686) + (xy 51.476622 -11.715372) (xy 51.555974 -11.618681) (xy 51.652665 -11.539329) (xy 51.762979 -11.480364) (xy 51.882677 -11.444054) + (xy 52.007159 -11.431794) (xy 52.52216 -11.431794) (xy 52.522159 -8.26587) (xy 52.478222 -8.221933) (xy 52.364954 -8.052415) + (xy 52.286933 -7.864057) (xy 52.247159 -7.664098) (xy 52.247159 -7.46022) (xy 52.286933 -7.260261) (xy 52.364954 -7.071903) + (xy 52.478222 -6.902385) (xy 52.52216 -6.858447) (xy 52.522159 -3.568967) (xy 46.671539 2.281654) (xy 44.876663 2.281654) + (xy 44.871714 2.256775) (xy 44.710773 1.868229) (xy 44.477124 1.518548) (xy 44.179744 1.221168) (xy 43.830063 0.987519) + (xy 43.441517 0.826578) (xy 43.02904 0.744531) (xy 42.608482 0.744531) (xy 42.196005 0.826578) (xy 41.807459 0.987519) + (xy 41.457778 1.221168) (xy 41.160398 1.518548) (xy 40.926749 1.868229) (xy 40.765808 2.256775) (xy 40.683761 2.669252) + (xy 38.116099 2.669252) (xy 38.116099 2.526192) (xy 38.034052 2.113715) (xy 37.873111 1.725169) (xy 37.639462 1.375488) + (xy 37.342082 1.078108) (xy 36.992401 0.844459) (xy 36.603855 0.683518) (xy 36.191378 0.601471) (xy 35.77082 0.601471) + (xy 35.358343 0.683518) (xy 34.969797 0.844459) (xy 34.879517 0.904782) (xy 34.879517 0.206827) (xy 34.867257 0.082345) + (xy 34.830947 -0.037353) (xy 34.771982 -0.147667) (xy 34.69263 -0.244358) (xy 34.595939 -0.32371) (xy 34.485625 -0.382675) + (xy 34.365927 -0.418985) (xy 34.241445 -0.431245) (xy 31.691445 -0.431245) (xy 31.566963 -0.418985) (xy 31.447265 -0.382675) + (xy 31.336951 -0.32371) (xy 31.24026 -0.244358) (xy 31.160908 -0.147667) (xy 31.101943 -0.037353) (xy 31.065633 0.082345) + (xy 31.053373 0.206827) (xy 28.328092 0.206827) (xy 28.328092 0.098359) (xy 28.315832 -0.026123) (xy 28.279522 -0.145821) + (xy 28.220557 -0.256135) (xy 28.141205 -0.352826) (xy 28.044514 -0.432178) (xy 27.9342 -0.491143) (xy 27.814502 -0.527453) + (xy 27.69002 -0.539713) (xy 27.17502 -0.539713) (xy 27.17502 -5.308217) (xy 44.198119 -5.308217) (xy 44.209293 -5.183633) + (xy 44.244557 -5.063623) (xy 44.302556 -4.952798) (xy 44.381062 -4.855418) (xy 44.477057 -4.775225) (xy 44.586853 -4.715301) + (xy 45.415308 -4.363643) (xy 45.534684 -4.326289) (xy 45.659054 -4.312943) (xy 45.674357 -4.314316) (xy 45.68056 -4.245158) + (xy 45.715824 -4.125148) (xy 45.773823 -4.014323) (xy 45.852329 -3.916943) (xy 45.948324 -3.83675) (xy 46.058119 -3.776826) + (xy 47.694777 -3.082106) (xy 47.814154 -3.044752) (xy 47.938524 -3.031406) (xy 48.063108 -3.04258) (xy 48.183118 -3.077844) + (xy 48.293943 -3.135843) (xy 48.391323 -3.214349) (xy 48.471516 -3.310344) (xy 48.53144 -3.420139) (xy 49.22616 -5.056797) + (xy 49.263514 -5.176174) (xy 49.27686 -5.300544) (xy 49.265686 -5.425128) (xy 49.230422 -5.545138) (xy 49.172423 -5.655963) + (xy 49.093917 -5.753343) (xy 48.997922 -5.833536) (xy 48.888127 -5.89346) (xy 47.251469 -6.58818) (xy 47.132092 -6.625534) + (xy 47.007722 -6.63888) (xy 46.883138 -6.627706) (xy 46.763128 -6.592442) (xy 46.652303 -6.534443) (xy 46.598248 -6.490865) + (xy 46.588604 -6.502828) (xy 46.492609 -6.583021) (xy 46.382813 -6.642945) (xy 45.554358 -6.994603) (xy 45.434982 -7.031957) + (xy 45.310612 -7.045303) (xy 45.186028 -7.034129) (xy 45.066018 -6.998865) (xy 44.955193 -6.940866) (xy 44.857813 -6.86236) + (xy 44.77762 -6.766365) (xy 44.717696 -6.656569) (xy 44.248819 -5.551963) (xy 44.211465 -5.432587) (xy 44.198119 -5.308217) + (xy 27.17502 -5.308217) (xy 27.17502 -6.360424) (xy 28.25153 -5.903473) (xy 28.370907 -5.866119) (xy 28.495277 -5.852773) + (xy 28.619861 -5.863947) (xy 28.739871 -5.899211) (xy 28.850696 -5.95721) (xy 28.948076 -6.035716) (xy 29.028269 -6.131711) + (xy 29.088193 -6.241506) (xy 29.782913 -7.878164) (xy 29.820267 -7.997541) (xy 29.833613 -8.121911) (xy 29.822439 -8.246495) + (xy 29.787175 -8.366505) (xy 29.729176 -8.47733) (xy 29.65067 -8.57471) (xy 29.554675 -8.654903) (xy 29.44488 -8.714827) + (xy 27.808222 -9.409547) (xy 27.688845 -9.446901) (xy 27.564475 -9.460247) (xy 27.439891 -9.449073) (xy 27.319881 -9.413809) + (xy 27.209056 -9.35581) (xy 27.155001 -9.312232) (xy 27.145357 -9.324195) (xy 27.049362 -9.404388) (xy 26.939566 -9.464312) + (xy 26.779665 -9.532186) (xy 29.156633 -11.909154) (xy 29.666673 -11.909154) (xy 29.666673 -11.616458) (xy 29.723775 -11.329385) + (xy 29.835785 -11.058968) (xy 29.998399 -10.8156) (xy 30.205367 -10.608632) (xy 30.448735 -10.446018) (xy 30.719152 -10.334008) + (xy 31.006225 -10.276906) (xy 31.298921 -10.276906) (xy 31.585994 -10.334008) (xy 31.856411 -10.446018) (xy 32.099779 -10.608632) + (xy 32.306747 -10.8156) (xy 32.469361 -11.058968) (xy 32.581371 -11.329385) (xy 32.638473 -11.616458) (xy 32.638473 -11.909154) + (xy 32.581371 -12.196227) (xy 32.469361 -12.466644) (xy 32.306747 -12.710012) (xy 32.099779 -12.91698) (xy 31.856411 -13.079594) + (xy 31.585994 -13.191604) (xy 31.298921 -13.248706) (xy 31.006225 -13.248706) (xy 30.719152 -13.191604) (xy 30.448735 -13.079594) + (xy 30.205367 -12.91698) (xy 29.998399 -12.710012) (xy 29.835785 -12.466644) (xy 29.723775 -12.196227) (xy 29.666673 -11.909154) + (xy 29.156633 -11.909154) (xy 31.955818 -14.708338) (xy 31.974409 -14.647053) (xy 32.033374 -14.536739) (xy 32.112726 -14.440048) + (xy 32.209417 -14.360696) (xy 32.319731 -14.301731) (xy 32.439429 -14.265421) (xy 32.563911 -14.253161) (xy 35.113911 -14.253161) + (xy 35.238393 -14.265421) (xy 35.358091 -14.301731) (xy 35.468405 -14.360696) (xy 35.565096 -14.440048) (xy 35.644448 -14.536739) + (xy 35.703413 -14.647053) (xy 35.739723 -14.766751) (xy 35.751983 -14.891233) (xy 35.751983 -17.282765) (xy 38.477264 -17.282765) + (xy 38.477264 -14.782765) (xy 38.489524 -14.658283) (xy 38.525834 -14.538585) (xy 38.584799 -14.428271) (xy 38.664151 -14.33158) + (xy 38.760842 -14.252228) (xy 38.871156 -14.193263) (xy 38.990854 -14.156953) (xy 39.115336 -14.144693) (xy 39.30759 -14.144693) + (xy 39.307591 -8.906293) (xy 39.225785 -8.824487) (xy 39.052053 -8.564478) (xy 38.932384 -8.275572) (xy 38.871377 -7.96887) + (xy 38.871377 -7.65616) (xy 38.932384 -7.349458) (xy 39.052053 -7.060552) (xy 39.225785 -6.800543) (xy 39.446905 -6.579423) + (xy 39.706914 -6.405691) (xy 39.99582 -6.286022) (xy 40.302522 -6.225015) (xy 40.615232 -6.225015) (xy 40.921934 -6.286022) + (xy 41.193526 -6.398519) (xy 41.206891 -6.353035) (xy 41.26489 -6.24221) (xy 41.343396 -6.14483) (xy 41.439391 -6.064637) + (xy 41.549187 -6.004713) (xy 42.377642 -5.653055) (xy 42.497018 -5.615701) (xy 42.621388 -5.602355) (xy 42.745972 -5.613529) + (xy 42.865982 -5.648793) (xy 42.976807 -5.706792) (xy 43.074187 -5.785298) (xy 43.15438 -5.881293) (xy 43.214304 -5.991089) + (xy 43.683181 -7.095695) (xy 43.720535 -7.215071) (xy 43.733881 -7.339441) (xy 43.722707 -7.464025) (xy 43.687443 -7.584035) + (xy 43.629444 -7.69486) (xy 43.550938 -7.79224) (xy 43.454943 -7.872433) (xy 43.345147 -7.932357) (xy 42.516692 -8.284015) + (xy 42.397316 -8.321369) (xy 42.272946 -8.334715) (xy 42.165692 -8.325095) (xy 42.143188 -8.352516) (xy 42.027463 -8.447489) + (xy 41.895434 -8.518061) (xy 41.883418 -8.521706) (xy 41.865701 -8.564478) (xy 41.691969 -8.824487) (xy 41.470849 -9.045607) + (xy 41.21084 -9.219339) (xy 40.921934 -9.339008) (xy 40.82759 -9.357774) (xy 40.82759 -11.478984) (xy 41.097143 -11.425367) + (xy 41.389839 -11.425367) (xy 41.676912 -11.482469) (xy 41.947329 -11.594479) (xy 42.190697 -11.757093) (xy 42.397665 -11.964061) + (xy 42.560279 -12.207429) (xy 42.672289 -12.477846) (xy 42.721514 -12.725319) (xy 42.782234 -12.700168) (xy 43.194711 -12.618121) + (xy 43.615269 -12.618121) (xy 43.962708 -12.687231) (xy 43.877656 -12.602179) (xy 43.589955 -12.171604) (xy 43.391783 -11.693175) + (xy 43.290756 -11.185277) (xy 43.290756 -10.667429) (xy 43.391783 -10.159531) (xy 43.589955 -9.681102) (xy 43.877656 -9.250527) + (xy 44.24383 -8.884353) (xy 44.674405 -8.596652) (xy 45.152834 -8.39848) (xy 45.660732 -8.297453) (xy 46.17858 -8.297453) + (xy 46.686478 -8.39848) (xy 47.164907 -8.596652) (xy 47.595482 -8.884353) (xy 47.798916 -9.087787) (xy 49.109921 -9.087787) + (xy 49.109921 -8.795091) (xy 49.167023 -8.508018) (xy 49.279033 -8.237601) (xy 49.441647 -7.994233) (xy 49.648615 -7.787265) + (xy 49.891983 -7.624651) (xy 50.1624 -7.512641) (xy 50.449473 -7.455539) (xy 50.742169 -7.455539) (xy 51.029242 -7.512641) + (xy 51.299659 -7.624651) (xy 51.543027 -7.787265) (xy 51.749995 -7.994233) (xy 51.912609 -8.237601) (xy 52.024619 -8.508018) + (xy 52.081721 -8.795091) (xy 52.081721 -9.087787) (xy 52.024619 -9.37486) (xy 51.912609 -9.645277) (xy 51.749995 -9.888645) + (xy 51.543027 -10.095613) (xy 51.299659 -10.258227) (xy 51.029242 -10.370237) (xy 50.742169 -10.427339) (xy 50.449473 -10.427339) + (xy 50.1624 -10.370237) (xy 49.891983 -10.258227) (xy 49.648615 -10.095613) (xy 49.441647 -9.888645) (xy 49.279033 -9.645277) + (xy 49.167023 -9.37486) (xy 49.109921 -9.087787) (xy 47.798916 -9.087787) (xy 47.961656 -9.250527) (xy 48.249357 -9.681102) + (xy 48.447529 -10.159531) (xy 48.548556 -10.667429) (xy 48.548556 -11.185277) (xy 48.447529 -11.693175) (xy 48.249357 -12.171604) + (xy 47.961656 -12.602179) (xy 47.595482 -12.968353) (xy 47.164907 -13.256054) (xy 46.686478 -13.454226) (xy 46.17858 -13.555253) + (xy 45.660732 -13.555253) (xy 45.152834 -13.454226) (xy 45.086472 -13.426738) (xy 45.297002 -13.741819) (xy 45.457943 -14.130365) + (xy 45.53999 -14.542842) (xy 45.53999 -14.9634) (xy 45.457943 -15.375877) (xy 45.297002 -15.764423) (xy 45.063353 -16.114104) + (xy 44.765973 -16.411484) (xy 44.416292 -16.645133) (xy 44.027746 -16.806074) (xy 43.615269 -16.888121) (xy 43.194711 -16.888121) + (xy 42.782234 -16.806074) (xy 42.393688 -16.645133) (xy 42.303408 -16.58481) (xy 42.303408 -17.282765) (xy 42.291148 -17.407247) + (xy 42.254838 -17.526945) (xy 42.195873 -17.637259) (xy 42.116521 -17.73395) (xy 42.01983 -17.813302) (xy 41.909516 -17.872267) + (xy 41.789818 -17.908577) (xy 41.665336 -17.920837) (xy 39.115336 -17.920837) (xy 38.990854 -17.908577) (xy 38.871156 -17.872267) + (xy 38.760842 -17.813302) (xy 38.664151 -17.73395) (xy 38.584799 -17.637259) (xy 38.525834 -17.526945) (xy 38.489524 -17.407247) + (xy 38.477264 -17.282765) (xy 35.751983 -17.282765) (xy 35.751983 -17.391233) (xy 35.739723 -17.515715) (xy 35.703413 -17.635413) + (xy 35.644448 -17.745727) (xy 35.565096 -17.842418) (xy 35.468405 -17.92177) (xy 35.358091 -17.980735) (xy 35.238393 -18.017045) + (xy 35.113911 -18.029305) (xy 34.598911 -18.029305) (xy 34.598911 -23.850016) (xy 35.675421 -23.393065) (xy 35.794798 -23.355711) + (xy 35.919168 -23.342365) (xy 36.043752 -23.353539) (xy 36.163762 -23.388803) (xy 36.274587 -23.446802) (xy 36.371967 -23.525308) + (xy 36.45216 -23.621303) (xy 36.512084 -23.731098) (xy 37.206804 -25.367756) (xy 37.244158 -25.487133) (xy 37.257504 -25.611503) + (xy 37.24633 -25.736087) (xy 37.211066 -25.856097) (xy 37.153067 -25.966922) (xy 37.074561 -26.064302) (xy 36.978566 -26.144495) + (xy 36.868771 -26.204419) (xy 35.232113 -26.899139) (xy 35.112736 -26.936493) (xy 34.988366 -26.949839) (xy 34.863782 -26.938665) + (xy 34.743772 -26.903401) (xy 34.632947 -26.845402) (xy 34.578892 -26.801824) (xy 34.569248 -26.813787) (xy 34.473253 -26.89398) + (xy 34.363457 -26.953904) (xy 34.203557 -27.021778) (xy 36.580525 -29.398746) (xy 37.090565 -29.398746) (xy 37.090565 -29.10605) + (xy 37.147667 -28.818977) (xy 37.259677 -28.54856) (xy 37.422291 -28.305192) (xy 37.629259 -28.098224) (xy 37.872627 -27.93561) + (xy 38.143044 -27.8236) (xy 38.430117 -27.766498) (xy 38.722813 -27.766498) (xy 39.009886 -27.8236) (xy 39.280303 -27.93561) + (xy 39.523671 -28.098224) (xy 39.730639 -28.305192) (xy 39.893253 -28.54856) (xy 40.005263 -28.818977) (xy 40.062365 -29.10605) + (xy 40.062365 -29.398746) (xy 40.005263 -29.685819) (xy 39.893253 -29.956236) (xy 39.730639 -30.199604) (xy 39.523671 -30.406572) + (xy 39.280303 -30.569186) (xy 39.009886 -30.681196) (xy 38.722813 -30.738298) (xy 38.430117 -30.738298) (xy 38.143044 -30.681196) + (xy 37.872627 -30.569186) (xy 37.629259 -30.406572) (xy 37.422291 -30.199604) (xy 37.259677 -29.956236) (xy 37.147667 -29.685819) + (xy 37.090565 -29.398746) (xy 36.580525 -29.398746) (xy 39.37971 -32.19793) (xy 39.398301 -32.136645) (xy 39.457266 -32.026331) + (xy 39.536618 -31.92964) (xy 39.633309 -31.850288) (xy 39.743623 -31.791323) (xy 39.863321 -31.755013) (xy 39.987803 -31.742753) + (xy 42.537803 -31.742753) (xy 42.662285 -31.755013) (xy 42.781983 -31.791323) (xy 42.892297 -31.850288) (xy 42.988988 -31.92964) + (xy 43.06834 -32.026331) (xy 43.127305 -32.136645) (xy 43.163615 -32.256343) (xy 43.175875 -32.380825) (xy 43.175875 -34.469096) + (xy 47.035792 -38.329011) (xy 47.097928 -38.329011) (xy 47.297887 -38.368785) (xy 47.486245 -38.446806) (xy 47.655763 -38.560074) + (xy 47.799926 -38.704237) (xy 47.913194 -38.873755) (xy 47.991215 -39.062113) (xy 48.030989 -39.262072) (xy 48.030989 -39.32421) + (xy 49.197698 -40.490918) (xy 49.226695 -40.514715) (xy 49.259677 -40.554904) (xy 49.321668 -40.630439) (xy 49.39224 -40.762469) + (xy 49.39822 -40.782183) (xy 49.435697 -40.90573) (xy 49.446694 -41.017383) (xy 49.446694 -41.017393) (xy 49.45037 -41.054716) + (xy 49.446694 -41.092039) (xy 49.446694 -49.232346) (xy 49.961694 -49.232346) (xy 50.086176 -49.244606) (xy 50.205874 -49.280916) + (xy 50.316188 -49.339881) (xy 50.412879 -49.419233) (xy 50.492231 -49.515924) (xy 50.551196 -49.626238) (xy 50.587506 -49.745936) + (xy 50.599766 -49.870418) (xy 50.599766 -52.370418) (xy 50.587506 -52.4949) (xy 50.551196 -52.614598) (xy 50.492231 -52.724912) + (xy 50.412879 -52.821603) (xy 50.316188 -52.900955) (xy 50.205874 -52.95992) (xy 50.086176 -52.99623) (xy 49.961694 -53.00849) + (xy 47.705089 -53.00849) (xy 47.70014 -53.033369) (xy 47.539199 -53.421915) (xy 47.30555 -53.771596) (xy 47.00817 -54.068976) + (xy 46.658489 -54.302625) (xy 46.269943 -54.463566) (xy 45.857466 -54.545613) (xy 45.436908 -54.545613) (xy 45.024431 -54.463566) + (xy 44.635885 -54.302625) (xy 44.286204 -54.068976) (xy 43.988824 -53.771596) (xy 43.755175 -53.421915) (xy 43.594234 -53.033369) + (xy 43.512187 -52.620892) (xy 43.512187 -52.200334) (xy 43.594234 -51.787857) (xy 43.755175 -51.399311) (xy 43.988824 -51.04963) + (xy 44.286204 -50.75225) (xy 44.635885 -50.518601) (xy 45.024431 -50.35766) (xy 45.436908 -50.275613) (xy 45.857466 -50.275613) + (xy 46.269943 -50.35766) (xy 46.658489 -50.518601) (xy 46.773622 -50.59553) (xy 46.773622 -49.870418) (xy 46.785882 -49.745936) + (xy 46.822192 -49.626238) (xy 46.881157 -49.515924) (xy 46.960509 -49.419233) (xy 47.0572 -49.339881) (xy 47.167514 -49.280916) + (xy 47.287212 -49.244606) (xy 47.411694 -49.232346) (xy 47.926695 -49.232346) (xy 47.926694 -41.369518) (xy 46.956188 -40.399011) + (xy 46.89405 -40.399011) (xy 46.694091 -40.359237) (xy 46.505733 -40.281216) (xy 46.336215 -40.167948) (xy 46.192052 -40.023785) + (xy 46.078784 -39.854267) (xy 46.000763 -39.665909) (xy 45.960989 -39.46595) (xy 45.960989 -39.403814) (xy 42.076074 -35.518897) + (xy 40.281198 -35.518897) (xy 40.276249 -35.543776) (xy 40.115308 -35.932322) (xy 39.881659 -36.282003) (xy 39.584279 -36.579383) + (xy 39.234598 -36.813032) (xy 38.846052 -36.973973) (xy 38.433575 -37.05602) (xy 38.013017 -37.05602) (xy 37.60054 -36.973973) + (xy 37.211994 -36.813032) (xy 36.862313 -36.579383) (xy 36.564933 -36.282003) (xy 36.331284 -35.932322) (xy 36.170343 -35.543776) + (xy 36.088296 -35.131299) (xy 36.088296 -34.710741) (xy 36.170343 -34.298264) (xy 36.331284 -33.909718) (xy 36.564933 -33.560037) + (xy 36.862313 -33.262657) (xy 37.211994 -33.029008) (xy 37.60054 -32.868067) (xy 37.850519 -32.818343) (xy 36.529069 -31.496893) + (xy 36.428173 -32.004134) (xy 36.230001 -32.482563) (xy 35.9423 -32.913138) (xy 35.576126 -33.279312) (xy 35.145551 -33.567013) + (xy 34.667122 -33.765185) (xy 34.159224 -33.866212) (xy 33.641376 -33.866212) (xy 33.133478 -33.765185) (xy 33.067116 -33.737697) + (xy 33.277646 -34.052778) (xy 33.438587 -34.441324) (xy 33.520634 -34.853801) (xy 33.520634 -35.274359) (xy 33.438587 -35.686836) + (xy 33.277646 -36.075382) (xy 33.043997 -36.425063) (xy 32.746617 -36.722443) (xy 32.396936 -36.956092) (xy 32.00839 -37.117033) + (xy 31.595913 -37.19908) (xy 31.175355 -37.19908) (xy 30.762878 -37.117033) (xy 30.374332 -36.956092) (xy 30.284052 -36.895769) + (xy 30.284052 -37.593724) (xy 30.271792 -37.718206) (xy 30.235482 -37.837904) (xy 30.176517 -37.948218) (xy 30.097165 -38.044909) + (xy 30.000474 -38.124261) (xy 29.89016 -38.183226) (xy 29.770462 -38.219536) (xy 29.64598 -38.231796) (xy 27.09598 -38.231796) + (xy 26.971498 -38.219536) (xy 26.8518 -38.183226) (xy 26.741486 -38.124261) (xy 26.644795 -38.044909) (xy 26.565443 -37.948218) + (xy 26.506478 -37.837904) (xy 26.470168 -37.718206) (xy 26.457908 -37.593724) (xy 26.457908 -35.093724) (xy 26.470168 -34.969242) + (xy 26.506478 -34.849544) (xy 26.565443 -34.73923) (xy 26.644795 -34.642539) (xy 26.741486 -34.563187) (xy 26.8518 -34.504222) + (xy 26.971498 -34.467912) (xy 27.09598 -34.455652) (xy 28.395537 -34.455652) (xy 28.276929 -34.3764) (xy 28.069961 -34.169432) + (xy 27.907347 -33.926064) (xy 27.795337 -33.655647) (xy 27.738235 -33.368574) (xy 27.738235 -33.075878) (xy 27.795337 -32.788805) + (xy 27.907347 -32.518388) (xy 28.069961 -32.27502) (xy 28.276929 -32.068052) (xy 28.520297 -31.905438) (xy 28.790714 -31.793428) + (xy 29.077787 -31.736326) (xy 29.370483 -31.736326) (xy 29.657556 -31.793428) (xy 29.927973 -31.905438) (xy 30.171341 -32.068052) + (xy 30.378309 -32.27502) (xy 30.540923 -32.518388) (xy 30.652933 -32.788805) (xy 30.702158 -33.036278) (xy 30.762878 -33.011127) + (xy 31.175355 -32.92908) (xy 31.595913 -32.92908) (xy 31.943352 -32.99819) (xy 31.8583 -32.913138) (xy 31.570599 -32.482563) + (xy 31.372427 -32.004134) (xy 31.2714 -31.496236) (xy 31.2714 -30.978388) (xy 31.372427 -30.47049) (xy 31.570599 -29.992061) + (xy 31.8583 -29.561486) (xy 32.224474 -29.195312) (xy 32.655049 -28.907611) (xy 33.133478 -28.709439) (xy 33.640719 -28.608543) + (xy 31.980799 -26.948622) (xy 31.951801 -26.924824) (xy 31.928003 -26.895826) (xy 31.928002 -26.895825) (xy 31.856827 -26.809099) + (xy 31.786255 -26.677069) (xy 31.761962 -26.596981) (xy 31.742799 -26.533809) (xy 31.731801 -26.422156) (xy 31.731801 -26.422145) + (xy 31.728125 -26.384823) (xy 31.731801 -26.347501) (xy 31.731801 -25.516306) (xy 31.728125 -25.478984) (xy 31.731801 -25.441662) + (xy 31.731801 -25.441652) (xy 31.742798 -25.329999) (xy 31.77805 -25.213786) (xy 31.786255 -25.186738) (xy 31.856827 -25.054708) + (xy 31.87965 -25.026899) (xy 31.9518 -24.938983) (xy 31.980804 -24.91518) (xy 33.078912 -23.817071) (xy 33.078911 -18.029305) + (xy 32.857306 -18.029305) (xy 32.852357 -18.054184) (xy 32.691416 -18.44273) (xy 32.457767 -18.792411) (xy 32.160387 -19.089791) + (xy 31.810706 -19.32344) (xy 31.42216 -19.484381) (xy 31.009683 -19.566428) (xy 30.589125 -19.566428) (xy 30.176648 -19.484381) + (xy 29.788102 -19.32344) (xy 29.438421 -19.089791) (xy 29.141041 -18.792411) (xy 28.907392 -18.44273) (xy 28.746451 -18.054184) + (xy 28.664404 -17.641707) (xy 28.664404 -17.221149) (xy 28.746451 -16.808672) (xy 28.907392 -16.420126) (xy 29.141041 -16.070445) + (xy 29.438421 -15.773065) (xy 29.788102 -15.539416) (xy 30.176648 -15.378475) (xy 30.426627 -15.328751) (xy 29.105177 -14.007301) + (xy 29.004281 -14.514542) (xy 28.806109 -14.992971) (xy 28.518408 -15.423546) (xy 28.152234 -15.78972) (xy 27.721659 -16.077421) + (xy 27.24323 -16.275593) (xy 26.735332 -16.37662) (xy 26.217484 -16.37662) (xy 25.709586 -16.275593) (xy 25.643224 -16.248105) + (xy 25.853754 -16.563186) (xy 26.014695 -16.951732) (xy 26.096742 -17.364209) (xy 26.096742 -17.784767) (xy 26.014695 -18.197244) + (xy 25.853754 -18.58579) (xy 25.620105 -18.935471) (xy 25.322725 -19.232851) (xy 24.973044 -19.4665) (xy 24.584498 -19.627441) + (xy 24.172021 -19.709488) (xy 23.751463 -19.709488) (xy 23.338986 -19.627441) (xy 22.95044 -19.4665) (xy 22.86016 -19.406177) + (xy 22.86016 -20.104132) (xy 22.8479 -20.228614) (xy 22.81159 -20.348312) (xy 22.752625 -20.458626) (xy 22.673273 -20.555317) + (xy 22.576582 -20.634669) (xy 22.466268 -20.693634) (xy 22.34657 -20.729944) (xy 22.222088 -20.742204) (xy 19.672088 -20.742204) + (xy 19.547606 -20.729944) (xy 19.427908 -20.693634) (xy 19.317594 -20.634669) (xy 19.220903 -20.555317) (xy 19.141551 -20.458626) + (xy 19.082586 -20.348312) (xy 19.046276 -20.228614) (xy 19.034016 -20.104132) (xy 16.699466 -20.104132) (xy 16.699466 -21.133105) + (xy 16.687206 -21.257587) (xy 16.650896 -21.377285) (xy 16.591931 -21.487599) (xy 16.512579 -21.58429) (xy 16.415888 -21.663642) + (xy 16.305574 -21.722607) (xy 16.185876 -21.758917) (xy 16.061394 -21.771177) (xy 15.546394 -21.771177) (xy 15.546394 -27.591888) + (xy 16.622904 -27.134937) (xy 16.742281 -27.097583) (xy 16.866651 -27.084237) (xy 16.991235 -27.095411) (xy 17.111245 -27.130675) + (xy 17.22207 -27.188674) (xy 17.31945 -27.26718) (xy 17.399643 -27.363175) (xy 17.459567 -27.47297) (xy 17.802058 -28.279829) + (xy 26.852021 -28.279829) (xy 26.852021 -27.967119) (xy 26.913028 -27.660417) (xy 27.032697 -27.371511) (xy 27.206429 -27.111502) + (xy 27.427549 -26.890382) (xy 27.687558 -26.71665) (xy 27.976464 -26.596981) (xy 28.283166 -26.535974) (xy 28.595876 -26.535974) + (xy 28.902578 -26.596981) (xy 29.17417 -26.709478) (xy 29.187535 -26.663994) (xy 29.245534 -26.553169) (xy 29.32404 -26.455789) + (xy 29.420035 -26.375596) (xy 29.529831 -26.315672) (xy 30.358286 -25.964014) (xy 30.477662 -25.92666) (xy 30.602032 -25.913314) + (xy 30.726616 -25.924488) (xy 30.846626 -25.959752) (xy 30.957451 -26.017751) (xy 31.054831 -26.096257) (xy 31.135024 -26.192252) + (xy 31.194948 -26.302048) (xy 31.663825 -27.406654) (xy 31.701179 -27.52603) (xy 31.714525 -27.6504) (xy 31.703351 -27.774984) + (xy 31.668087 -27.894994) (xy 31.610088 -28.005819) (xy 31.531582 -28.103199) (xy 31.435587 -28.183392) (xy 31.325791 -28.243316) + (xy 30.497336 -28.594974) (xy 30.37796 -28.632328) (xy 30.25359 -28.645674) (xy 30.129006 -28.6345) (xy 30.008996 -28.599236) + (xy 29.967778 -28.577665) (xy 29.966014 -28.586531) (xy 29.846345 -28.875437) (xy 29.672613 -29.135446) (xy 29.451493 -29.356566) + (xy 29.191484 -29.530298) (xy 28.902578 -29.649967) (xy 28.595876 -29.710974) (xy 28.283166 -29.710974) (xy 27.976464 -29.649967) + (xy 27.687558 -29.530298) (xy 27.427549 -29.356566) (xy 27.206429 -29.135446) (xy 27.032697 -28.875437) (xy 26.913028 -28.586531) + (xy 26.852021 -28.279829) (xy 17.802058 -28.279829) (xy 18.154287 -29.109628) (xy 18.191641 -29.229005) (xy 18.204987 -29.353375) + (xy 18.193813 -29.477959) (xy 18.158549 -29.597969) (xy 18.10055 -29.708794) (xy 18.022044 -29.806174) (xy 17.926049 -29.886367) + (xy 17.816254 -29.946291) (xy 16.179596 -30.641011) (xy 16.060219 -30.678365) (xy 15.935849 -30.691711) (xy 15.811265 -30.680537) + (xy 15.691255 -30.645273) (xy 15.58043 -30.587274) (xy 15.526375 -30.543696) (xy 15.516731 -30.555659) (xy 15.420736 -30.635852) + (xy 15.31094 -30.695776) (xy 15.15104 -30.76365) (xy 17.528008 -33.140618) (xy 18.038048 -33.140618) (xy 18.038048 -32.847922) + (xy 18.09515 -32.560849) (xy 18.20716 -32.290432) (xy 18.369774 -32.047064) (xy 18.576742 -31.840096) (xy 18.82011 -31.677482) + (xy 19.090527 -31.565472) (xy 19.3776 -31.50837) (xy 19.670296 -31.50837) (xy 19.957369 -31.565472) (xy 20.227786 -31.677482) + (xy 20.471154 -31.840096) (xy 20.678122 -32.047064) (xy 20.840736 -32.290432) (xy 20.952746 -32.560849) (xy 21.009848 -32.847922) + (xy 21.009848 -33.140618) (xy 20.952746 -33.427691) (xy 20.840736 -33.698108) (xy 20.678122 -33.941476) (xy 20.471154 -34.148444) + (xy 20.227786 -34.311058) (xy 19.957369 -34.423068) (xy 19.670296 -34.48017) (xy 19.3776 -34.48017) (xy 19.090527 -34.423068) + (xy 18.82011 -34.311058) (xy 18.576742 -34.148444) (xy 18.369774 -33.941476) (xy 18.20716 -33.698108) (xy 18.09515 -33.427691) + (xy 18.038048 -33.140618) (xy 17.528008 -33.140618) (xy 20.327193 -35.939802) (xy 20.345784 -35.878517) (xy 20.404749 -35.768203) + (xy 20.484101 -35.671512) (xy 20.580792 -35.59216) (xy 20.691106 -35.533195) (xy 20.810804 -35.496885) (xy 20.935286 -35.484625) + (xy 23.485286 -35.484625) (xy 23.609768 -35.496885) (xy 23.729466 -35.533195) (xy 23.83978 -35.59216) (xy 23.936471 -35.671512) + (xy 24.015823 -35.768203) (xy 24.074788 -35.878517) (xy 24.111098 -35.998215) (xy 24.123358 -36.122697) (xy 24.123358 -38.622697) + (xy 24.111098 -38.747179) (xy 24.074788 -38.866877) (xy 24.015823 -38.977191) (xy 23.936471 -39.073882) (xy 23.83978 -39.153234) + (xy 23.729466 -39.212199) (xy 23.609768 -39.248509) (xy 23.485286 -39.260769) (xy 22.970286 -39.260769) (xy 22.970286 -39.316003) + (xy 23.014223 -39.35994) (xy 23.127491 -39.529458) (xy 23.205512 -39.717816) (xy 23.245286 -39.917775) (xy 23.245286 -40.121653) + (xy 23.205512 -40.321612) (xy 23.127491 -40.50997) (xy 23.014223 -40.679488) (xy 22.970286 -40.723425) (xy 22.970286 -42.215485) + (xy 23.863569 -43.108768) (xy 39.602655 -43.108768) (xy 39.613829 -42.984184) (xy 39.649093 -42.864174) (xy 39.707092 -42.753349) + (xy 39.785598 -42.655969) (xy 39.881593 -42.575776) (xy 39.991389 -42.515852) (xy 40.819844 -42.164194) (xy 40.93922 -42.12684) + (xy 41.06359 -42.113494) (xy 41.078893 -42.114867) (xy 41.085096 -42.045709) (xy 41.12036 -41.925699) (xy 41.178359 -41.814874) + (xy 41.256865 -41.717494) (xy 41.35286 -41.637301) (xy 41.462655 -41.577377) (xy 43.099313 -40.882657) (xy 43.21869 -40.845303) + (xy 43.34306 -40.831957) (xy 43.467644 -40.843131) (xy 43.587654 -40.878395) (xy 43.698479 -40.936394) (xy 43.795859 -41.0149) + (xy 43.876052 -41.110895) (xy 43.935976 -41.22069) (xy 44.630696 -42.857348) (xy 44.66805 -42.976725) (xy 44.681396 -43.101095) + (xy 44.670222 -43.225679) (xy 44.634958 -43.345689) (xy 44.576959 -43.456514) (xy 44.498453 -43.553894) (xy 44.402458 -43.634087) + (xy 44.292663 -43.694011) (xy 42.656005 -44.388731) (xy 42.536628 -44.426085) (xy 42.412258 -44.439431) (xy 42.287674 -44.428257) + (xy 42.167664 -44.392993) (xy 42.056839 -44.334994) (xy 42.002784 -44.291416) (xy 41.99314 -44.303379) (xy 41.897145 -44.383572) + (xy 41.787349 -44.443496) (xy 40.958894 -44.795154) (xy 40.839518 -44.832508) (xy 40.715148 -44.845854) (xy 40.590564 -44.83468) + (xy 40.470554 -44.799416) (xy 40.359729 -44.741417) (xy 40.262349 -44.662911) (xy 40.182156 -44.566916) (xy 40.122232 -44.45712) + (xy 39.653355 -43.352514) (xy 39.616001 -43.233138) (xy 39.602655 -43.108768) (xy 23.863569 -43.108768) (xy 26.524222 -45.769421) + (xy 34.275913 -45.769421) (xy 34.275913 -45.456711) (xy 34.33692 -45.150009) (xy 34.456589 -44.861103) (xy 34.630321 -44.601094) + (xy 34.851441 -44.379974) (xy 35.11145 -44.206242) (xy 35.400356 -44.086573) (xy 35.707058 -44.025566) (xy 36.019768 -44.025566) + (xy 36.32647 -44.086573) (xy 36.598062 -44.19907) (xy 36.611427 -44.153586) (xy 36.669426 -44.042761) (xy 36.747932 -43.945381) + (xy 36.843927 -43.865188) (xy 36.953723 -43.805264) (xy 37.782178 -43.453606) (xy 37.901554 -43.416252) (xy 38.025924 -43.402906) + (xy 38.150508 -43.41408) (xy 38.270518 -43.449344) (xy 38.381343 -43.507343) (xy 38.478723 -43.585849) (xy 38.558916 -43.681844) + (xy 38.61884 -43.79164) (xy 39.087717 -44.896246) (xy 39.125071 -45.015622) (xy 39.138417 -45.139992) (xy 39.127243 -45.264576) + (xy 39.091979 -45.384586) (xy 39.03398 -45.495411) (xy 38.955474 -45.592791) (xy 38.859479 -45.672984) (xy 38.749683 -45.732908) + (xy 37.921228 -46.084566) (xy 37.801852 -46.12192) (xy 37.677482 -46.135266) (xy 37.552898 -46.124092) (xy 37.432888 -46.088828) + (xy 37.39167 -46.067257) (xy 37.389906 -46.076123) (xy 37.270237 -46.365029) (xy 37.096505 -46.625038) (xy 36.875385 -46.846158) + (xy 36.615376 -47.01989) (xy 36.32647 -47.139559) (xy 36.019768 -47.200566) (xy 35.707058 -47.200566) (xy 35.400356 -47.139559) + (xy 35.11145 -47.01989) (xy 34.851441 -46.846158) (xy 34.630321 -46.625038) (xy 34.456589 -46.365029) (xy 34.33692 -46.076123) + (xy 34.275913 -45.769421) (xy 26.524222 -45.769421) (xy 30.145181 -49.390379) (xy 30.174178 -49.414176) (xy 30.269151 -49.529901) + (xy 30.339723 -49.66193) (xy 30.38318 -49.805191) (xy 30.394177 -49.916844) (xy 30.394177 -49.916853) (xy 30.397853 -49.954176) + (xy 30.394177 -49.991499) (xy 30.394177 -52.974218) (xy 30.909177 -52.974218) (xy 31.033659 -52.986478) (xy 31.153357 -53.022788) + (xy 31.263671 -53.081753) (xy 31.360362 -53.161105) (xy 31.439714 -53.257796) (xy 31.498679 -53.36811) (xy 31.534989 -53.487808) + (xy 31.547249 -53.61229) (xy 31.547249 -55.083317) (xy 33.881799 -55.083317) (xy 33.881799 -52.583317) (xy 33.894059 -52.458835) + (xy 33.930369 -52.339137) (xy 33.989334 -52.228823) (xy 34.068686 -52.132132) (xy 34.165377 -52.05278) (xy 34.275691 -51.993815) + (xy 34.395389 -51.957505) (xy 34.519871 -51.945245) (xy 35.819428 -51.945245) (xy 35.70082 -51.865993) (xy 35.493852 -51.659025) + (xy 35.331238 -51.415657) (xy 35.219228 -51.14524) (xy 35.162126 -50.858167) (xy 35.162126 -50.565471) (xy 35.219228 -50.278398) + (xy 35.331238 -50.007981) (xy 35.493852 -49.764613) (xy 35.70082 -49.557645) (xy 35.944188 -49.395031) (xy 36.214605 -49.283021) + (xy 36.501678 -49.225919) (xy 36.794374 -49.225919) (xy 37.081447 -49.283021) (xy 37.351864 -49.395031) (xy 37.595232 -49.557645) + (xy 37.8022 -49.764613) (xy 37.964814 -50.007981) (xy 38.076824 -50.278398) (xy 38.126049 -50.525871) (xy 38.186769 -50.50072) + (xy 38.599246 -50.418673) (xy 39.019804 -50.418673) (xy 39.367243 -50.487783) (xy 39.282191 -50.402731) (xy 38.99449 -49.972156) + (xy 38.796318 -49.493727) (xy 38.695291 -48.985829) (xy 38.695291 -48.467981) (xy 38.796318 -47.960083) (xy 38.99449 -47.481654) + (xy 39.282191 -47.051079) (xy 39.648365 -46.684905) (xy 40.07894 -46.397204) (xy 40.557369 -46.199032) (xy 41.065267 -46.098005) + (xy 41.583115 -46.098005) (xy 42.091013 -46.199032) (xy 42.569442 -46.397204) (xy 43.000017 -46.684905) (xy 43.203451 -46.888339) + (xy 44.514456 -46.888339) (xy 44.514456 -46.595643) (xy 44.571558 -46.30857) (xy 44.683568 -46.038153) (xy 44.846182 -45.794785) + (xy 45.05315 -45.587817) (xy 45.296518 -45.425203) (xy 45.566935 -45.313193) (xy 45.854008 -45.256091) (xy 46.146704 -45.256091) + (xy 46.433777 -45.313193) (xy 46.704194 -45.425203) (xy 46.947562 -45.587817) (xy 47.15453 -45.794785) (xy 47.317144 -46.038153) + (xy 47.429154 -46.30857) (xy 47.486256 -46.595643) (xy 47.486256 -46.888339) (xy 47.429154 -47.175412) (xy 47.317144 -47.445829) + (xy 47.15453 -47.689197) (xy 46.947562 -47.896165) (xy 46.704194 -48.058779) (xy 46.433777 -48.170789) (xy 46.146704 -48.227891) + (xy 45.854008 -48.227891) (xy 45.566935 -48.170789) (xy 45.296518 -48.058779) (xy 45.05315 -47.896165) (xy 44.846182 -47.689197) + (xy 44.683568 -47.445829) (xy 44.571558 -47.175412) (xy 44.514456 -46.888339) (xy 43.203451 -46.888339) (xy 43.366191 -47.051079) + (xy 43.653892 -47.481654) (xy 43.852064 -47.960083) (xy 43.953091 -48.467981) (xy 43.953091 -48.985829) (xy 43.852064 -49.493727) + (xy 43.653892 -49.972156) (xy 43.366191 -50.402731) (xy 43.000017 -50.768905) (xy 42.569442 -51.056606) (xy 42.091013 -51.254778) + (xy 41.583115 -51.355805) (xy 41.065267 -51.355805) (xy 40.557369 -51.254778) (xy 40.491007 -51.22729) (xy 40.701537 -51.542371) + (xy 40.862478 -51.930917) (xy 40.944525 -52.343394) (xy 40.944525 -52.763952) (xy 40.862478 -53.176429) (xy 40.701537 -53.564975) + (xy 40.467888 -53.914656) (xy 40.170508 -54.212036) (xy 39.820827 -54.445685) (xy 39.432281 -54.606626) (xy 39.019804 -54.688673) + (xy 38.599246 -54.688673) (xy 38.186769 -54.606626) (xy 37.798223 -54.445685) (xy 37.707943 -54.385362) (xy 37.707943 -55.083317) + (xy 37.695683 -55.207799) (xy 37.659373 -55.327497) (xy 37.600408 -55.437811) (xy 37.521056 -55.534502) (xy 37.424365 -55.613854) + (xy 37.314051 -55.672819) (xy 37.194353 -55.709129) (xy 37.069871 -55.721389) (xy 34.519871 -55.721389) (xy 34.395389 -55.709129) + (xy 34.275691 -55.672819) (xy 34.165377 -55.613854) (xy 34.068686 -55.534502) (xy 33.989334 -55.437811) (xy 33.930369 -55.327497) + (xy 33.894059 -55.207799) (xy 33.881799 -55.083317) (xy 31.547249 -55.083317) (xy 31.547249 -56.11229) (xy 31.534989 -56.236772) + (xy 31.498679 -56.35647) (xy 31.439714 -56.466784) (xy 31.360362 -56.563475) (xy 31.263671 -56.642827) (xy 31.153357 -56.701792) + (xy 31.033659 -56.738102) (xy 30.909177 -56.750362) (xy 28.652572 -56.750362) (xy 28.647623 -56.775241) (xy 28.486682 -57.163787) + (xy 28.253033 -57.513468) (xy 27.955653 -57.810848) (xy 27.605972 -58.044497) (xy 27.217426 -58.205438) (xy 26.804949 -58.287485) + (xy 26.384391 -58.287485) (xy 25.971914 -58.205438) (xy 25.583368 -58.044497) (xy 25.233687 -57.810848) (xy 24.936307 -57.513468) + (xy 24.702658 -57.163787) (xy 24.541717 -56.775241) (xy 24.45967 -56.362764) (xy 24.45967 -55.942206) (xy 24.541717 -55.529729) + (xy 24.702658 -55.141183) (xy 24.936307 -54.791502) (xy 25.233687 -54.494122) (xy 25.583368 -54.260473) (xy 25.971914 -54.099532) + (xy 26.384391 -54.017485) (xy 26.804949 -54.017485) (xy 27.217426 -54.099532) (xy 27.605972 -54.260473) (xy 27.721105 -54.337402) + (xy 27.721105 -53.61229) (xy 27.733365 -53.487808) (xy 27.769675 -53.36811) (xy 27.82864 -53.257796) (xy 27.907992 -53.161105) + (xy 28.004683 -53.081753) (xy 28.114997 -53.022788) (xy 28.234695 -52.986478) (xy 28.359177 -52.974218) (xy 28.874178 -52.974218) + (xy 28.874177 -50.268979) (xy 25.607495 -47.002297) (xy 25.582441 -47.087561) (xy 25.524442 -47.198386) (xy 25.445936 -47.295766) + (xy 25.349941 -47.375959) (xy 25.240146 -47.435883) (xy 23.603488 -48.130603) (xy 23.484111 -48.167957) (xy 23.359741 -48.181303) + (xy 23.235157 -48.170129) (xy 23.115147 -48.134865) (xy 23.004322 -48.076866) (xy 22.950267 -48.033288) (xy 22.940623 -48.045251) + (xy 22.844628 -48.125444) (xy 22.734832 -48.185368) (xy 21.906377 -48.537026) (xy 21.787001 -48.57438) (xy 21.662631 -48.587726) + (xy 21.538047 -48.576552) (xy 21.418037 -48.541288) (xy 21.307212 -48.483289) (xy 21.209832 -48.404783) (xy 21.129639 -48.308788) + (xy 21.069715 -48.198992) (xy 20.600838 -47.094386) (xy 20.563484 -46.97501) (xy 20.550138 -46.85064) (xy 20.561312 -46.726056) + (xy 20.596576 -46.606046) (xy 20.654575 -46.495221) (xy 20.733081 -46.397841) (xy 20.829076 -46.317648) (xy 20.938872 -46.257724) + (xy 21.767327 -45.906066) (xy 21.886703 -45.868712) (xy 22.011073 -45.855366) (xy 22.026376 -45.856739) (xy 22.032579 -45.787581) + (xy 22.067843 -45.667571) (xy 22.125842 -45.556746) (xy 22.204348 -45.459366) (xy 22.300343 -45.379173) (xy 22.410138 -45.319249) + (xy 23.473203 -44.868005) (xy 21.699284 -43.094085) (xy 21.670286 -43.070287) (xy 21.646488 -43.041289) (xy 21.646487 -43.041288) + (xy 21.575312 -42.954562) (xy 21.50474 -42.822532) (xy 21.475462 -42.72601) (xy 21.461284 -42.679272) (xy 21.453854 -42.603835) + (xy 21.44661 -42.530286) (xy 21.450287 -42.492954) (xy 21.450286 -40.723425) (xy 21.406349 -40.679488) (xy 21.293081 -40.50997) + (xy 21.21506 -40.321612) (xy 21.175286 -40.121653) (xy 21.175286 -39.917775) (xy 21.21506 -39.717816) (xy 21.293081 -39.529458) + (xy 21.406349 -39.35994) (xy 21.450287 -39.316002) (xy 21.450287 -39.260769) (xy 21.228681 -39.260769) (xy 21.223732 -39.285648) + (xy 21.062791 -39.674194) (xy 20.829142 -40.023875) (xy 20.531762 -40.321255) (xy 20.182081 -40.554904) (xy 19.793535 -40.715845) + (xy 19.381058 -40.797892) (xy 18.9605 -40.797892) (xy 18.548023 -40.715845) (xy 18.159477 -40.554904) (xy 17.809796 -40.321255) + (xy 17.512416 -40.023875) (xy 17.278767 -39.674194) (xy 17.117826 -39.285648) (xy 17.035779 -38.873171) (xy 17.035779 -38.452613) + (xy 17.117826 -38.040136) (xy 17.278767 -37.65159) (xy 17.512416 -37.301909) (xy 17.809796 -37.004529) (xy 18.159477 -36.77088) + (xy 18.548023 -36.609939) (xy 18.798002 -36.560215) (xy 17.476552 -35.238765) (xy 17.375656 -35.746006) (xy 17.177484 -36.224435) + (xy 16.889783 -36.65501) (xy 16.523609 -37.021184) (xy 16.093034 -37.308885) (xy 15.614605 -37.507057) (xy 15.106707 -37.608084) + (xy 14.588859 -37.608084) (xy 14.080961 -37.507057) (xy 14.014599 -37.479569) (xy 14.225129 -37.79465) (xy 14.38607 -38.183196) + (xy 14.468117 -38.595673) (xy 14.468117 -39.016231) (xy 14.38607 -39.428708) (xy 14.225129 -39.817254) (xy 13.99148 -40.166935) + (xy 13.6941 -40.464315) (xy 13.344419 -40.697964) (xy 12.955873 -40.858905) (xy 12.543396 -40.940952) (xy 12.122838 -40.940952) + (xy 11.710361 -40.858905) (xy 11.321815 -40.697964) (xy 11.231535 -40.637641) (xy 11.231535 -41.335596) (xy 11.219275 -41.460078) + (xy 11.182965 -41.579776) (xy 11.124 -41.69009) (xy 11.044648 -41.786781) (xy 10.947957 -41.866133) (xy 10.837643 -41.925098) + (xy 10.717945 -41.961408) (xy 10.593463 -41.973668) (xy 8.043463 -41.973668) (xy 7.918981 -41.961408) (xy 7.799283 -41.925098) + (xy 7.688969 -41.866133) (xy 7.673411 -41.853365) (xy 14.829282 -58.71154) (xy 14.829282 -56.325189) (xy 14.841542 -56.200707) + (xy 14.877852 -56.081009) (xy 14.936817 -55.970695) (xy 15.016169 -55.874004) (xy 15.11286 -55.794652) (xy 15.223174 -55.735687) + (xy 15.342872 -55.699377) (xy 15.467354 -55.687117) (xy 15.659608 -55.687117) (xy 15.659609 -50.448715) (xy 15.577804 -50.36691) + (xy 15.404072 -50.106901) (xy 15.284403 -49.817995) (xy 15.223396 -49.511293) (xy 15.223396 -49.198583) (xy 15.284403 -48.891881) + (xy 15.404072 -48.602975) (xy 15.577804 -48.342966) (xy 15.798924 -48.121846) (xy 16.058933 -47.948114) (xy 16.347839 -47.828445) + (xy 16.654541 -47.767438) (xy 16.967251 -47.767438) (xy 17.273953 -47.828445) (xy 17.545545 -47.940942) (xy 17.55891 -47.895458) + (xy 17.616909 -47.784633) (xy 17.695415 -47.687253) (xy 17.79141 -47.60706) (xy 17.901206 -47.547136) (xy 18.729661 -47.195478) + (xy 18.849037 -47.158124) (xy 18.973407 -47.144778) (xy 19.097991 -47.155952) (xy 19.218001 -47.191216) (xy 19.328826 -47.249215) + (xy 19.426206 -47.327721) (xy 19.506399 -47.423716) (xy 19.566323 -47.533512) (xy 20.0352 -48.638118) (xy 20.072554 -48.757494) + (xy 20.0859 -48.881864) (xy 20.074726 -49.006448) (xy 20.039462 -49.126458) (xy 19.981463 -49.237283) (xy 19.902957 -49.334663) + (xy 19.806962 -49.414856) (xy 19.697166 -49.47478) (xy 18.868711 -49.826438) (xy 18.749335 -49.863792) (xy 18.624965 -49.877138) + (xy 18.517711 -49.867518) (xy 18.495207 -49.894939) (xy 18.379482 -49.989912) (xy 18.247453 -50.060484) (xy 18.235437 -50.064129) + (xy 18.21772 -50.106901) (xy 18.043988 -50.36691) (xy 17.822868 -50.58803) (xy 17.562859 -50.761762) (xy 17.273953 -50.881431) + (xy 17.179608 -50.900197) (xy 17.179608 -53.021408) (xy 17.449161 -52.967791) (xy 17.741857 -52.967791) (xy 18.02893 -53.024893) + (xy 18.299347 -53.136903) (xy 18.542715 -53.299517) (xy 18.749683 -53.506485) (xy 18.912297 -53.749853) (xy 19.024307 -54.02027) + (xy 19.073532 -54.267743) (xy 19.134252 -54.242592) (xy 19.546729 -54.160545) (xy 19.967287 -54.160545) (xy 20.314726 -54.229655) + (xy 20.229674 -54.144603) (xy 19.941973 -53.714028) (xy 19.743801 -53.235599) (xy 19.642774 -52.727701) (xy 19.642774 -52.209853) + (xy 19.743801 -51.701955) (xy 19.941973 -51.223526) (xy 20.229674 -50.792951) (xy 20.595848 -50.426777) (xy 21.026423 -50.139076) + (xy 21.504852 -49.940904) (xy 22.01275 -49.839877) (xy 22.530598 -49.839877) (xy 23.038496 -49.940904) (xy 23.516925 -50.139076) + (xy 23.9475 -50.426777) (xy 24.150934 -50.630211) (xy 25.461939 -50.630211) (xy 25.461939 -50.337515) (xy 25.519041 -50.050442) + (xy 25.631051 -49.780025) (xy 25.793665 -49.536657) (xy 26.000633 -49.329689) (xy 26.244001 -49.167075) (xy 26.514418 -49.055065) + (xy 26.801491 -48.997963) (xy 27.094187 -48.997963) (xy 27.38126 -49.055065) (xy 27.651677 -49.167075) (xy 27.895045 -49.329689) + (xy 28.102013 -49.536657) (xy 28.264627 -49.780025) (xy 28.376637 -50.050442) (xy 28.433739 -50.337515) (xy 28.433739 -50.630211) + (xy 28.376637 -50.917284) (xy 28.264627 -51.187701) (xy 28.102013 -51.431069) (xy 27.895045 -51.638037) (xy 27.651677 -51.800651) + (xy 27.38126 -51.912661) (xy 27.094187 -51.969763) (xy 26.801491 -51.969763) (xy 26.514418 -51.912661) (xy 26.244001 -51.800651) + (xy 26.000633 -51.638037) (xy 25.793665 -51.431069) (xy 25.631051 -51.187701) (xy 25.519041 -50.917284) (xy 25.461939 -50.630211) + (xy 24.150934 -50.630211) (xy 24.313674 -50.792951) (xy 24.601375 -51.223526) (xy 24.799547 -51.701955) (xy 24.900574 -52.209853) + (xy 24.900574 -52.727701) (xy 24.799547 -53.235599) (xy 24.601375 -53.714028) (xy 24.313674 -54.144603) (xy 23.9475 -54.510777) + (xy 23.516925 -54.798478) (xy 23.038496 -54.99665) (xy 22.530598 -55.097677) (xy 22.01275 -55.097677) (xy 21.504852 -54.99665) + (xy 21.43849 -54.969162) (xy 21.64902 -55.284243) (xy 21.809961 -55.672789) (xy 21.892008 -56.085266) (xy 21.892008 -56.505824) + (xy 21.809961 -56.918301) (xy 21.64902 -57.306847) (xy 21.415371 -57.656528) (xy 21.117991 -57.953908) (xy 20.76831 -58.187557) + (xy 20.379764 -58.348498) (xy 19.967287 -58.430545) (xy 19.546729 -58.430545) (xy 19.134252 -58.348498) (xy 18.745706 -58.187557) + (xy 18.655426 -58.127234) (xy 18.655426 -58.825189) (xy 18.643166 -58.949671) (xy 18.606856 -59.069369) (xy 18.547891 -59.179683) + (xy 18.468539 -59.276374) (xy 18.371848 -59.355726) (xy 18.261534 -59.414691) (xy 18.141836 -59.451001) (xy 18.017354 -59.463261) + (xy 15.467354 -59.463261) (xy 15.342872 -59.451001) (xy 15.223174 -59.414691) (xy 15.11286 -59.355726) (xy 15.097303 -59.342959) + (xy 17.408106 -64.786869) (xy 55.268625 -58.331934) (xy 73.50969 -50.589061) (xy 104.11173 -25.68011) (xy 104.164578 -25.636738) + (xy 104.196751 -25.619541) (xy 104.227165 -25.599396) (xy 104.258272 -25.586658) (xy 104.287921 -25.57081) (xy 104.322837 -25.560218) + (xy 104.356591 -25.546396) (xy 104.38958 -25.539972) (xy 104.421757 -25.530211) (xy 104.458069 -25.526635) (xy 104.49387 -25.519663) + (xy 104.562184 -25.519938) (xy 118.585437 -25.519938) (xy 118.65375 -25.519663) (xy 118.689552 -25.526635) (xy 118.725864 -25.530211) + (xy 118.758037 -25.539971) (xy 118.791028 -25.546395) (xy 118.824784 -25.560218) (xy 118.8597 -25.57081) (xy 118.889351 -25.586659) + (xy 118.920455 -25.599396) (xy 118.950863 -25.619537) (xy 118.983043 -25.636738) (xy 119.036134 -25.680308) (xy 120.425377 -26.811102) + (xy 129.917207 -26.811102) (xy 129.917207 -26.390544) (xy 129.999254 -25.978067) (xy 130.160195 -25.589521) (xy 130.393844 -25.23984) + (xy 130.691224 -24.94246) (xy 131.040905 -24.708811) (xy 131.429451 -24.54787) (xy 131.841928 -24.465823) (xy 132.262486 -24.465823) + (xy 132.674963 -24.54787) (xy 133.063509 -24.708811) (xy 133.41319 -24.94246) (xy 133.71057 -25.23984) (xy 133.944219 -25.589521) + (xy 134.10516 -25.978067) (xy 134.110109 -26.002945) (xy 136.366714 -26.002945) (xy 136.491196 -26.015205) (xy 136.610894 -26.051515) + (xy 136.721208 -26.11048) (xy 136.817899 -26.189832) (xy 136.897251 -26.286523) (xy 136.956216 -26.396837) (xy 136.974807 -26.458123) + (xy 141.755606 -21.677323) (xy 141.755607 -12.289497) (xy 141.240606 -12.289497) (xy 141.116124 -12.277237) (xy 140.996426 -12.240927) + (xy 140.886112 -12.181962) (xy 140.789421 -12.10261) (xy 140.710069 -12.005919) (xy 140.651104 -11.895605) (xy 140.614794 -11.775907) + (xy 140.602534 -11.651425) (xy 140.602534 -10.926314) (xy 140.487401 -11.003243) (xy 140.098855 -11.164184) (xy 139.686378 -11.246231) + (xy 139.26582 -11.246231) (xy 138.853343 -11.164184) (xy 138.464797 -11.003243) (xy 138.115116 -10.769594) (xy 137.817736 -10.472214) + (xy 137.584087 -10.122533) (xy 137.423146 -9.733987) (xy 137.341099 -9.32151) (xy 137.341099 -8.900952) (xy 137.423146 -8.488475) + (xy 137.584087 -8.099929) (xy 137.817736 -7.750248) (xy 138.115116 -7.452868) (xy 138.464797 -7.219219) (xy 138.853343 -7.058278) + (xy 139.26582 -6.976231) (xy 139.686378 -6.976231) (xy 140.098855 -7.058278) (xy 140.487401 -7.219219) (xy 140.837082 -7.452868) + (xy 141.134462 -7.750248) (xy 141.368111 -8.099929) (xy 141.529052 -8.488475) (xy 141.534001 -8.513353) (xy 143.790606 -8.513353) + (xy 143.915088 -8.525613) (xy 144.034786 -8.561923) (xy 144.1451 -8.620888) (xy 144.241791 -8.70024) (xy 144.321143 -8.796931) + (xy 144.380108 -8.907245) (xy 144.398699 -8.968531) (xy 149.179497 -4.187732) (xy 149.179498 5.200095) (xy 148.664497 5.200095) + (xy 148.540015 5.212355) (xy 148.420317 5.248665) (xy 148.310003 5.30763) (xy 148.213312 5.386982) (xy 148.13396 5.483673) + (xy 148.074995 5.593987) (xy 148.038685 5.713685) (xy 148.026425 5.838167) (xy 148.026425 6.563278) (xy 147.911292 6.486349) + (xy 147.522746 6.325408) (xy 147.110269 6.243361) (xy 146.689711 6.243361) (xy 146.277234 6.325408) (xy 145.888688 6.486349) + (xy 145.539007 6.719998) (xy 145.241627 7.017378) (xy 145.007978 7.367059) (xy 144.847037 7.755605) (xy 144.76499 8.168082) + (xy 144.76499 8.58864) (xy 144.847037 9.001117) (xy 145.007978 9.389663) (xy 145.241627 9.739344) (xy 145.539007 10.036724) + (xy 145.888688 10.270373) (xy 146.277234 10.431314) (xy 146.689711 10.513361) (xy 147.110269 10.513361) (xy 147.522746 10.431314) + (xy 147.911292 10.270373) (xy 148.260973 10.036724) (xy 148.558353 9.739344) (xy 148.792002 9.389663) (xy 148.952943 9.001117) + (xy 148.957892 8.976239) (xy 151.214497 8.976239) (xy 151.338979 8.963979) (xy 151.458677 8.927669) (xy 151.568991 8.868704) + (xy 151.665682 8.789352) (xy 151.745034 8.692661) (xy 151.803999 8.582347) (xy 151.82259 8.521062) (xy 152.433165 9.131637) + (xy 152.433165 9.193774) (xy 152.472939 9.393733) (xy 152.55096 9.582091) (xy 152.664228 9.751609) (xy 152.808391 9.895772) + (xy 152.977909 10.00904) (xy 153.166267 10.087061) (xy 153.366226 10.126835) (xy 153.428364 10.126835) (xy 156.603389 13.301861) + (xy 156.60339 22.689688) (xy 156.088389 22.689688) (xy 155.963907 22.701948) (xy 155.844209 22.738258) (xy 155.733895 22.797223) + (xy 155.637204 22.876575) (xy 155.557852 22.973266) (xy 155.498887 23.08358) (xy 155.462577 23.203278) (xy 155.450317 23.32776) + (xy 155.450317 24.052871) (xy 155.335184 23.975942) (xy 154.946638 23.815001) (xy 154.534161 23.732954) (xy 154.113603 23.732954) + (xy 153.701126 23.815001) (xy 153.31258 23.975942) (xy 152.962899 24.209591) (xy 152.665519 24.506971) (xy 152.43187 24.856652) + (xy 152.270929 25.245198) (xy 152.188882 25.657675) (xy 152.188882 26.078233) (xy 152.270929 26.49071) (xy 152.43187 26.879256) + (xy 152.665519 27.228937) (xy 152.962899 27.526317) (xy 153.31258 27.759966) (xy 153.701126 27.920907) (xy 154.113603 28.002954) + (xy 154.534161 28.002954) (xy 154.946638 27.920907) (xy 155.335184 27.759966) (xy 155.684865 27.526317) (xy 155.982245 27.228937) + (xy 156.215894 26.879256) (xy 156.376835 26.49071) (xy 156.381784 26.465832) (xy 158.638389 26.465832) (xy 158.762871 26.453572) + (xy 158.882569 26.417262) (xy 158.992883 26.358297) (xy 159.089574 26.278945) (xy 159.168926 26.182254) (xy 159.227891 26.07194) + (xy 159.264201 25.952242) (xy 159.276461 25.82776) (xy 159.276461 23.32776) (xy 159.264201 23.203278) (xy 159.227891 23.08358) + (xy 159.168926 22.973266) (xy 159.089574 22.876575) (xy 158.992883 22.797223) (xy 158.882569 22.738258) (xy 158.762871 22.701948) + (xy 158.638389 22.689688) (xy 158.123389 22.689688) (xy 158.123389 17.769903) (xy 159.688613 17.769903) (xy 159.688613 20.269903) + (xy 159.700873 20.394385) (xy 159.737183 20.514083) (xy 159.796148 20.624397) (xy 159.8755 20.721088) (xy 159.972191 20.80044) + (xy 160.082505 20.859405) (xy 160.202203 20.895715) (xy 160.326685 20.907975) (xy 160.947359 20.907975) (xy 160.966711 20.944179) + (xy 161.037886 21.030905) (xy 161.061685 21.059904) (xy 161.090683 21.083702) (xy 165.198848 25.191868) (xy 165.222646 25.220866) + (xy 165.251644 25.244664) (xy 165.33837 25.315839) (xy 165.4704 25.386411) (xy 165.613661 25.429868) (xy 165.725314 25.440865) + (xy 165.725324 25.440865) (xy 165.762647 25.444541) (xy 165.79997 25.440865) (xy 166.160998 25.440865) (xy 166.32936 25.692837) + (xy 166.55048 25.913957) (xy 166.810489 26.087689) (xy 167.099395 26.207358) (xy 167.406097 26.268365) (xy 167.718807 26.268365) + (xy 168.025509 26.207358) (xy 168.314415 26.087689) (xy 168.574424 25.913957) (xy 168.795544 25.692837) (xy 168.969276 25.432828) + (xy 168.986993 25.390056) (xy 168.999009 25.386411) (xy 169.131038 25.315839) (xy 169.246763 25.220866) (xy 169.269267 25.193445) + (xy 169.376521 25.203065) (xy 169.500891 25.189719) (xy 169.620267 25.152365) (xy 170.448722 24.800707) (xy 170.558518 24.740783) + (xy 170.654513 24.66059) (xy 170.733019 24.56321) (xy 170.791018 24.452385) (xy 170.826282 24.332375) (xy 170.837456 24.207791) + (xy 170.82411 24.083421) (xy 170.786756 23.964045) (xy 170.317879 22.859439) (xy 170.257955 22.749643) (xy 170.177762 22.653648) + (xy 170.080382 22.575142) (xy 169.969557 22.517143) (xy 169.849547 22.481879) (xy 169.724963 22.470705) (xy 169.600593 22.484051) + (xy 169.481217 22.521405) (xy 168.652762 22.873063) (xy 168.542966 22.932987) (xy 168.446971 23.01318) (xy 168.368465 23.11056) + (xy 168.310466 23.221385) (xy 168.297101 23.266869) (xy 168.025509 23.154372) (xy 167.718807 23.093365) (xy 167.406097 23.093365) + (xy 167.099395 23.154372) (xy 166.810489 23.274041) (xy 166.55048 23.447773) (xy 166.32936 23.668893) (xy 166.160998 23.920865) + (xy 166.077449 23.920865) (xy 164.333151 22.176567) (xy 171.301694 22.176567) (xy 171.31504 22.300937) (xy 171.352394 22.420313) + (xy 171.821271 23.524919) (xy 171.881195 23.634715) (xy 171.961388 23.73071) (xy 172.058768 23.809216) (xy 172.169593 23.867215) + (xy 172.289603 23.902479) (xy 172.414187 23.913653) (xy 172.538557 23.900307) (xy 172.657933 23.862953) (xy 173.486388 23.511295) + (xy 173.596184 23.451371) (xy 173.692179 23.371178) (xy 173.701823 23.359215) (xy 173.755878 23.402793) (xy 173.866703 23.460792) + (xy 173.986713 23.496056) (xy 174.111297 23.50723) (xy 174.235667 23.493884) (xy 174.355044 23.45653) (xy 175.991702 22.76181) + (xy 176.101497 22.701886) (xy 176.197492 22.621693) (xy 176.275998 22.524313) (xy 176.333997 22.413488) (xy 176.369261 22.293478) + (xy 176.380435 22.168894) (xy 176.367089 22.044524) (xy 176.329735 21.925147) (xy 175.635015 20.288489) (xy 175.575091 20.178694) + (xy 175.494898 20.082699) (xy 175.397518 20.004193) (xy 175.286693 19.946194) (xy 175.166683 19.91093) (xy 175.042099 19.899756) + (xy 174.917729 19.913102) (xy 174.798352 19.950456) (xy 173.161694 20.645176) (xy 173.051899 20.7051) (xy 172.955904 20.785293) + (xy 172.877398 20.882673) (xy 172.819399 20.993498) (xy 172.784135 21.113508) (xy 172.777932 21.182666) (xy 172.762629 21.181293) + (xy 172.638259 21.194639) (xy 172.518883 21.231993) (xy 171.690428 21.583651) (xy 171.580632 21.643575) (xy 171.484637 21.723768) + (xy 171.406131 21.821148) (xy 171.348132 21.931973) (xy 171.312868 22.051983) (xy 171.301694 22.176567) (xy 164.333151 22.176567) + (xy 164.198094 22.04151) (xy 164.293406 22.060469) (xy 164.586102 22.060469) (xy 164.873175 22.003367) (xy 165.143592 21.891357) + (xy 165.38696 21.728743) (xy 165.593928 21.521775) (xy 165.756542 21.278407) (xy 165.868552 21.00799) (xy 165.925654 20.720917) + (xy 165.925654 20.428221) (xy 165.868552 20.141148) (xy 165.756542 19.870731) (xy 165.603804 19.642143) (xy 165.62764 19.63227) + (xy 165.977321 19.398621) (xy 166.274701 19.101241) (xy 166.487019 18.783484) (xy 166.487019 18.848579) (xy 166.588046 19.356477) + (xy 166.786218 19.834906) (xy 167.073919 20.265481) (xy 167.440093 20.631655) (xy 167.870668 20.919356) (xy 168.349097 21.117528) + (xy 168.856995 21.218555) (xy 169.374843 21.218555) (xy 169.882741 21.117528) (xy 170.36117 20.919356) (xy 170.791745 20.631655) + (xy 171.157919 20.265481) (xy 171.44562 19.834906) (xy 171.643792 19.356477) (xy 171.744819 18.848579) (xy 171.744819 18.330731) + (xy 171.643792 17.822833) (xy 171.44562 17.344404) (xy 171.157919 16.913829) (xy 170.791745 16.547655) (xy 170.658155 16.458393) + (xy 172.306184 16.458393) (xy 172.306184 16.751089) (xy 172.363286 17.038162) (xy 172.475296 17.308579) (xy 172.63791 17.551947) + (xy 172.844878 17.758915) (xy 173.088246 17.921529) (xy 173.358663 18.033539) (xy 173.645736 18.090641) (xy 173.938432 18.090641) + (xy 174.225505 18.033539) (xy 174.495922 17.921529) (xy 174.73929 17.758915) (xy 174.946258 17.551947) (xy 175.108872 17.308579) + (xy 175.220882 17.038162) (xy 175.277984 16.751089) (xy 175.277984 16.458393) (xy 175.220882 16.17132) (xy 175.108872 15.900903) + (xy 174.946258 15.657535) (xy 174.73929 15.450567) (xy 174.495922 15.287953) (xy 174.225505 15.175943) (xy 173.938432 15.118841) + (xy 173.645736 15.118841) (xy 173.358663 15.175943) (xy 173.088246 15.287953) (xy 172.844878 15.450567) (xy 172.63791 15.657535) + (xy 172.475296 15.900903) (xy 172.363286 16.17132) (xy 172.306184 16.458393) (xy 170.658155 16.458393) (xy 170.36117 16.259954) + (xy 169.882741 16.061782) (xy 169.374843 15.960755) (xy 168.856995 15.960755) (xy 168.349097 16.061782) (xy 167.870668 16.259954) + (xy 167.440093 16.547655) (xy 167.073919 16.913829) (xy 166.786218 17.344404) (xy 166.737716 17.461498) (xy 166.669291 17.117502) + (xy 166.50835 16.728956) (xy 166.274701 16.379275) (xy 165.977321 16.081895) (xy 165.62764 15.848246) (xy 165.239094 15.687305) + (xy 164.826617 15.605258) (xy 164.406059 15.605258) (xy 163.993582 15.687305) (xy 163.605036 15.848246) (xy 163.255355 16.081895) + (xy 162.957975 16.379275) (xy 162.724326 16.728956) (xy 162.563385 17.117502) (xy 162.560535 17.131831) (xy 160.326685 17.131831) + (xy 160.202203 17.144091) (xy 160.082505 17.180401) (xy 159.972191 17.239366) (xy 159.8755 17.318718) (xy 159.796148 17.415409) + (xy 159.737183 17.525723) (xy 159.700873 17.645421) (xy 159.688613 17.769903) (xy 158.123389 17.769903) (xy 158.123389 13.024392) + (xy 158.127066 12.987059) (xy 158.112392 12.838073) (xy 158.068935 12.694812) (xy 157.998363 12.562783) (xy 157.927188 12.476056) + (xy 157.90339 12.447058) (xy 157.874393 12.423261) (xy 154.503165 9.052034) (xy 154.503165 8.989896) (xy 154.463391 8.789937) + (xy 154.38537 8.601579) (xy 154.272102 8.432061) (xy 154.127939 8.287898) (xy 153.958421 8.17463) (xy 153.770063 8.096609) + (xy 153.570104 8.056835) (xy 153.507967 8.056835) (xy 152.028301 6.577169) (xy 152.004498 6.548166) (xy 151.888773 6.453193) + (xy 151.852569 6.433841) (xy 151.852569 5.838167) (xy 151.840309 5.713685) (xy 151.803999 5.593987) (xy 151.745034 5.483673) + (xy 151.665682 5.386982) (xy 151.568991 5.30763) (xy 151.458677 5.248665) (xy 151.338979 5.212355) (xy 151.214497 5.200095) + (xy 150.699497 5.200095) (xy 150.699497 0.280311) (xy 152.264722 0.280311) (xy 152.264722 2.780311) (xy 152.276982 2.904793) + (xy 152.313292 3.024491) (xy 152.372257 3.134805) (xy 152.451609 3.231496) (xy 152.5483 3.310848) (xy 152.658614 3.369813) + (xy 152.778312 3.406123) (xy 152.902794 3.418383) (xy 153.523468 3.418383) (xy 153.54282 3.454587) (xy 153.581967 3.502287) + (xy 153.637794 3.570312) (xy 153.666792 3.59411) (xy 157.774957 7.702276) (xy 157.798755 7.731274) (xy 157.827753 7.755072) + (xy 157.914479 7.826247) (xy 158.043007 7.894947) (xy 158.046509 7.896819) (xy 158.18977 7.940276) (xy 158.301423 7.951273) + (xy 158.301433 7.951273) (xy 158.338756 7.954949) (xy 158.376079 7.951273) (xy 158.737106 7.951273) (xy 158.905468 8.203245) + (xy 159.126588 8.424365) (xy 159.386597 8.598097) (xy 159.675503 8.717766) (xy 159.982205 8.778773) (xy 160.294915 8.778773) + (xy 160.601617 8.717766) (xy 160.890523 8.598097) (xy 161.150532 8.424365) (xy 161.371652 8.203245) (xy 161.545384 7.943236) + (xy 161.563101 7.900464) (xy 161.575117 7.896819) (xy 161.707146 7.826247) (xy 161.822871 7.731274) (xy 161.845375 7.703853) + (xy 161.952629 7.713473) (xy 162.076999 7.700127) (xy 162.196375 7.662773) (xy 163.02483 7.311115) (xy 163.134626 7.251191) + (xy 163.230621 7.170998) (xy 163.309127 7.073618) (xy 163.367126 6.962793) (xy 163.40239 6.842783) (xy 163.413564 6.718199) + (xy 163.400218 6.593829) (xy 163.362864 6.474453) (xy 162.893987 5.369847) (xy 162.834063 5.260051) (xy 162.75387 5.164056) + (xy 162.65649 5.08555) (xy 162.545665 5.027551) (xy 162.425655 4.992287) (xy 162.301071 4.981113) (xy 162.176701 4.994459) + (xy 162.057325 5.031813) (xy 161.22887 5.383471) (xy 161.119074 5.443395) (xy 161.023079 5.523588) (xy 160.944573 5.620968) + (xy 160.886574 5.731793) (xy 160.873209 5.777277) (xy 160.601617 5.66478) (xy 160.294915 5.603773) (xy 159.982205 5.603773) + (xy 159.675503 5.66478) (xy 159.386597 5.784449) (xy 159.126588 5.958181) (xy 158.905468 6.179301) (xy 158.737106 6.431273) + (xy 158.653558 6.431273) (xy 156.90926 4.686975) (xy 163.877802 4.686975) (xy 163.891148 4.811345) (xy 163.928502 4.930721) + (xy 164.397379 6.035327) (xy 164.457303 6.145123) (xy 164.537496 6.241118) (xy 164.634876 6.319624) (xy 164.745701 6.377623) + (xy 164.865711 6.412887) (xy 164.990295 6.424061) (xy 165.114665 6.410715) (xy 165.234041 6.373361) (xy 166.062496 6.021703) + (xy 166.172292 5.961779) (xy 166.268287 5.881586) (xy 166.277931 5.869623) (xy 166.331986 5.913201) (xy 166.442811 5.9712) + (xy 166.562821 6.006464) (xy 166.687405 6.017638) (xy 166.811775 6.004292) (xy 166.931152 5.966938) (xy 168.56781 5.272218) + (xy 168.677605 5.212294) (xy 168.7736 5.132101) (xy 168.852106 5.034721) (xy 168.910105 4.923896) (xy 168.945369 4.803886) + (xy 168.956543 4.679302) (xy 168.943197 4.554932) (xy 168.905843 4.435555) (xy 168.211123 2.798897) (xy 168.151199 2.689102) + (xy 168.071006 2.593107) (xy 167.973626 2.514601) (xy 167.862801 2.456602) (xy 167.742791 2.421338) (xy 167.618207 2.410164) + (xy 167.493837 2.42351) (xy 167.37446 2.460864) (xy 165.737802 3.155584) (xy 165.628007 3.215508) (xy 165.532012 3.295701) + (xy 165.453506 3.393081) (xy 165.395507 3.503906) (xy 165.360243 3.623916) (xy 165.35404 3.693074) (xy 165.338737 3.691701) + (xy 165.214367 3.705047) (xy 165.094991 3.742401) (xy 164.266536 4.094059) (xy 164.15674 4.153983) (xy 164.060745 4.234176) + (xy 163.982239 4.331556) (xy 163.92424 4.442381) (xy 163.888976 4.562391) (xy 163.877802 4.686975) (xy 156.90926 4.686975) + (xy 156.774203 4.551918) (xy 156.869515 4.570877) (xy 157.162211 4.570877) (xy 157.449284 4.513775) (xy 157.719701 4.401765) + (xy 157.963069 4.239151) (xy 158.170037 4.032183) (xy 158.332651 3.788815) (xy 158.444661 3.518398) (xy 158.501763 3.231325) + (xy 158.501763 2.938629) (xy 158.444661 2.651556) (xy 158.332651 2.381139) (xy 158.179913 2.152551) (xy 158.203749 2.142678) + (xy 158.55343 1.909029) (xy 158.85081 1.611649) (xy 159.063128 1.293892) (xy 159.063128 1.358987) (xy 159.164155 1.866885) + (xy 159.362327 2.345314) (xy 159.650028 2.775889) (xy 160.016202 3.142063) (xy 160.446777 3.429764) (xy 160.925206 3.627936) + (xy 161.433104 3.728963) (xy 161.950952 3.728963) (xy 162.45885 3.627936) (xy 162.937279 3.429764) (xy 163.367854 3.142063) + (xy 163.734028 2.775889) (xy 164.021729 2.345314) (xy 164.219901 1.866885) (xy 164.320928 1.358987) (xy 164.320928 0.841139) + (xy 164.219901 0.333241) (xy 164.021729 -0.145188) (xy 163.734028 -0.575763) (xy 163.367854 -0.941937) (xy 162.937279 -1.229638) + (xy 162.45885 -1.42781) (xy 161.950952 -1.528837) (xy 161.433104 -1.528837) (xy 160.925206 -1.42781) (xy 160.446777 -1.229638) + (xy 160.016202 -0.941937) (xy 159.650028 -0.575763) (xy 159.362327 -0.145188) (xy 159.313825 -0.028094) (xy 159.2454 -0.37209) + (xy 159.084459 -0.760636) (xy 158.85081 -1.110317) (xy 158.55343 -1.407697) (xy 158.203749 -1.641346) (xy 157.815203 -1.802287) + (xy 157.402726 -1.884334) (xy 156.982168 -1.884334) (xy 156.569691 -1.802287) (xy 156.181145 -1.641346) (xy 155.831464 -1.407697) + (xy 155.534084 -1.110317) (xy 155.300435 -0.760636) (xy 155.139494 -0.37209) (xy 155.136644 -0.357761) (xy 152.902794 -0.357761) + (xy 152.778312 -0.345501) (xy 152.658614 -0.309191) (xy 152.5483 -0.250226) (xy 152.451609 -0.170874) (xy 152.372257 -0.074183) + (xy 152.313292 0.036131) (xy 152.276982 0.155829) (xy 152.264722 0.280311) (xy 150.699497 0.280311) (xy 150.699497 -4.465209) + (xy 150.703173 -4.502534) (xy 150.699497 -4.539859) (xy 150.699497 -4.539867) (xy 150.6885 -4.65152) (xy 150.645043 -4.794781) + (xy 150.574471 -4.92681) (xy 150.479498 -5.042535) (xy 150.450501 -5.066332) (xy 144.60441 -10.912422) (xy 144.580607 -10.941426) + (xy 144.464882 -11.036399) (xy 144.428678 -11.055751) (xy 144.428678 -11.651425) (xy 144.416418 -11.775907) (xy 144.380108 -11.895605) + (xy 144.321143 -12.005919) (xy 144.241791 -12.10261) (xy 144.1451 -12.181962) (xy 144.034786 -12.240927) (xy 143.915088 -12.277237) + (xy 143.790606 -12.289497) (xy 143.275606 -12.289497) (xy 143.275606 -17.209281) (xy 144.84083 -17.209281) (xy 144.84083 -14.709281) + (xy 144.85309 -14.584799) (xy 144.8894 -14.465101) (xy 144.948365 -14.354787) (xy 145.027717 -14.258096) (xy 145.124408 -14.178744) + (xy 145.234722 -14.119779) (xy 145.35442 -14.083469) (xy 145.478902 -14.071209) (xy 146.099576 -14.071209) (xy 146.118928 -14.035005) + (xy 146.186683 -13.952446) (xy 146.213902 -13.91928) (xy 146.2429 -13.895482) (xy 150.351065 -9.787316) (xy 150.374863 -9.758318) + (xy 150.403861 -9.73452) (xy 150.490587 -9.663345) (xy 150.59821 -9.605819) (xy 150.622617 -9.592773) (xy 150.765878 -9.549316) + (xy 150.877531 -9.538319) (xy 150.877541 -9.538319) (xy 150.914864 -9.534643) (xy 150.952187 -9.538319) (xy 151.313215 -9.538319) + (xy 151.481577 -9.286347) (xy 151.702697 -9.065227) (xy 151.962706 -8.891495) (xy 152.251612 -8.771826) (xy 152.558314 -8.710819) + (xy 152.871024 -8.710819) (xy 153.177726 -8.771826) (xy 153.466632 -8.891495) (xy 153.726641 -9.065227) (xy 153.947761 -9.286347) + (xy 154.121493 -9.546356) (xy 154.13921 -9.589128) (xy 154.151226 -9.592773) (xy 154.283255 -9.663345) (xy 154.39898 -9.758318) + (xy 154.421484 -9.785739) (xy 154.528738 -9.776119) (xy 154.653108 -9.789465) (xy 154.772484 -9.826819) (xy 155.600939 -10.178477) + (xy 155.710735 -10.238401) (xy 155.80673 -10.318594) (xy 155.885236 -10.415974) (xy 155.943235 -10.526799) (xy 155.978499 -10.646809) + (xy 155.989673 -10.771393) (xy 155.976327 -10.895763) (xy 155.938973 -11.015139) (xy 155.470096 -12.119745) (xy 155.410172 -12.229541) + (xy 155.329979 -12.325536) (xy 155.232599 -12.404042) (xy 155.121774 -12.462041) (xy 155.001764 -12.497305) (xy 154.87718 -12.508479) + (xy 154.75281 -12.495133) (xy 154.633434 -12.457779) (xy 153.804979 -12.106121) (xy 153.695183 -12.046197) (xy 153.599188 -11.966004) + (xy 153.520682 -11.868624) (xy 153.462683 -11.757799) (xy 153.449318 -11.712315) (xy 153.177726 -11.824812) (xy 152.871024 -11.885819) + (xy 152.558314 -11.885819) (xy 152.251612 -11.824812) (xy 151.962706 -11.705143) (xy 151.702697 -11.531411) (xy 151.481577 -11.310291) + (xy 151.313215 -11.058319) (xy 151.229666 -11.058319) (xy 149.485368 -12.802617) (xy 156.453911 -12.802617) (xy 156.467257 -12.678247) + (xy 156.504611 -12.558871) (xy 156.973488 -11.454265) (xy 157.033412 -11.344469) (xy 157.113605 -11.248474) (xy 157.210985 -11.169968) + (xy 157.32181 -11.111969) (xy 157.44182 -11.076705) (xy 157.566404 -11.065531) (xy 157.690774 -11.078877) (xy 157.81015 -11.116231) + (xy 158.638605 -11.467889) (xy 158.748401 -11.527813) (xy 158.844396 -11.608006) (xy 158.85404 -11.619969) (xy 158.908095 -11.576391) + (xy 159.01892 -11.518392) (xy 159.13893 -11.483128) (xy 159.263514 -11.471954) (xy 159.387884 -11.4853) (xy 159.507261 -11.522654) + (xy 161.143919 -12.217374) (xy 161.253714 -12.277298) (xy 161.349709 -12.357491) (xy 161.428215 -12.454871) (xy 161.486214 -12.565696) + (xy 161.521478 -12.685706) (xy 161.532652 -12.81029) (xy 161.519306 -12.93466) (xy 161.481952 -13.054037) (xy 160.787232 -14.690695) + (xy 160.727308 -14.80049) (xy 160.647115 -14.896485) (xy 160.549735 -14.974991) (xy 160.43891 -15.03299) (xy 160.3189 -15.068254) + (xy 160.194316 -15.079428) (xy 160.069946 -15.066082) (xy 159.950569 -15.028728) (xy 158.313911 -14.334008) (xy 158.204116 -14.274084) + (xy 158.108121 -14.193891) (xy 158.029615 -14.096511) (xy 157.971616 -13.985686) (xy 157.936352 -13.865676) (xy 157.930149 -13.796518) + (xy 157.914846 -13.797891) (xy 157.790476 -13.784545) (xy 157.6711 -13.747191) (xy 156.842645 -13.395533) (xy 156.732849 -13.335609) + (xy 156.636854 -13.255416) (xy 156.558348 -13.158036) (xy 156.500349 -13.047211) (xy 156.465085 -12.927201) (xy 156.453911 -12.802617) + (xy 149.485368 -12.802617) (xy 149.350311 -12.937674) (xy 149.445623 -12.918715) (xy 149.738319 -12.918715) (xy 150.025392 -12.975817) + (xy 150.295809 -13.087827) (xy 150.539177 -13.250441) (xy 150.746145 -13.457409) (xy 150.908759 -13.700777) (xy 151.020769 -13.971194) + (xy 151.077871 -14.258267) (xy 151.077871 -14.550963) (xy 151.020769 -14.838036) (xy 150.908759 -15.108453) (xy 150.756021 -15.337041) + (xy 150.779857 -15.346914) (xy 151.129538 -15.580563) (xy 151.426918 -15.877943) (xy 151.639236 -16.1957) (xy 151.639236 -16.130605) + (xy 151.740263 -15.622707) (xy 151.938435 -15.144278) (xy 152.226136 -14.713703) (xy 152.59231 -14.347529) (xy 153.022885 -14.059828) + (xy 153.501314 -13.861656) (xy 154.009212 -13.760629) (xy 154.52706 -13.760629) (xy 155.034958 -13.861656) (xy 155.513387 -14.059828) + (xy 155.943962 -14.347529) (xy 156.310136 -14.713703) (xy 156.597837 -15.144278) (xy 156.796009 -15.622707) (xy 156.897036 -16.130605) + (xy 156.897036 -16.648453) (xy 156.796009 -17.156351) (xy 156.597837 -17.63478) (xy 156.310136 -18.065355) (xy 155.943962 -18.431529) + (xy 155.810372 -18.520791) (xy 157.458401 -18.520791) (xy 157.458401 -18.228095) (xy 157.515503 -17.941022) (xy 157.627513 -17.670605) + (xy 157.790127 -17.427237) (xy 157.997095 -17.220269) (xy 158.240463 -17.057655) (xy 158.51088 -16.945645) (xy 158.797953 -16.888543) + (xy 159.090649 -16.888543) (xy 159.377722 -16.945645) (xy 159.648139 -17.057655) (xy 159.891507 -17.220269) (xy 160.098475 -17.427237) + (xy 160.261089 -17.670605) (xy 160.373099 -17.941022) (xy 160.430201 -18.228095) (xy 160.430201 -18.520791) (xy 160.373099 -18.807864) + (xy 160.261089 -19.078281) (xy 160.098475 -19.321649) (xy 159.891507 -19.528617) (xy 159.648139 -19.691231) (xy 159.377722 -19.803241) + (xy 159.090649 -19.860343) (xy 158.797953 -19.860343) (xy 158.51088 -19.803241) (xy 158.240463 -19.691231) (xy 157.997095 -19.528617) + (xy 157.790127 -19.321649) (xy 157.627513 -19.078281) (xy 157.515503 -18.807864) (xy 157.458401 -18.520791) (xy 155.810372 -18.520791) + (xy 155.513387 -18.71923) (xy 155.034958 -18.917402) (xy 154.52706 -19.018429) (xy 154.009212 -19.018429) (xy 153.501314 -18.917402) + (xy 153.022885 -18.71923) (xy 152.59231 -18.431529) (xy 152.226136 -18.065355) (xy 151.938435 -17.63478) (xy 151.889933 -17.517686) + (xy 151.821508 -17.861682) (xy 151.660567 -18.250228) (xy 151.426918 -18.599909) (xy 151.129538 -18.897289) (xy 150.779857 -19.130938) + (xy 150.391311 -19.291879) (xy 149.978834 -19.373926) (xy 149.558276 -19.373926) (xy 149.145799 -19.291879) (xy 148.757253 -19.130938) + (xy 148.407572 -18.897289) (xy 148.110192 -18.599909) (xy 147.876543 -18.250228) (xy 147.715602 -17.861682) (xy 147.712752 -17.847353) + (xy 145.478902 -17.847353) (xy 145.35442 -17.835093) (xy 145.234722 -17.798783) (xy 145.124408 -17.739818) (xy 145.027717 -17.660466) + (xy 144.948365 -17.563775) (xy 144.8894 -17.453461) (xy 144.85309 -17.333763) (xy 144.84083 -17.209281) (xy 143.275606 -17.209281) + (xy 143.275606 -21.954803) (xy 143.279282 -21.992126) (xy 143.275606 -22.029449) (xy 143.275606 -22.029458) (xy 143.264609 -22.141111) + (xy 143.221152 -22.284372) (xy 143.186876 -22.348497) (xy 143.15058 -22.416402) (xy 143.079405 -22.503128) (xy 143.055607 -22.532126) + (xy 143.02661 -22.555923) (xy 137.180518 -28.402014) (xy 137.156715 -28.431018) (xy 137.04099 -28.525991) (xy 137.004786 -28.545343) + (xy 137.004786 -29.141017) (xy 136.992526 -29.265499) (xy 136.956216 -29.385197) (xy 136.897251 -29.495511) (xy 136.817899 -29.592202) + (xy 136.721208 -29.671554) (xy 136.610894 -29.730519) (xy 136.491196 -29.766829) (xy 136.366714 -29.779089) (xy 133.816714 -29.779089) + (xy 133.692232 -29.766829) (xy 133.572534 -29.730519) (xy 133.46222 -29.671554) (xy 133.365529 -29.592202) (xy 133.286177 -29.495511) + (xy 133.227212 -29.385197) (xy 133.190902 -29.265499) (xy 133.178642 -29.141017) (xy 133.178642 -28.415906) (xy 133.063509 -28.492835) + (xy 132.674963 -28.653776) (xy 132.262486 -28.735823) (xy 131.841928 -28.735823) (xy 131.429451 -28.653776) (xy 131.040905 -28.492835) + (xy 130.691224 -28.259186) (xy 130.393844 -27.961806) (xy 130.160195 -27.612125) (xy 129.999254 -27.223579) (xy 129.917207 -26.811102) + (xy 120.425377 -26.811102) (xy 130.115946 -34.698874) (xy 137.416939 -34.698874) (xy 137.416939 -32.198874) (xy 137.429199 -32.074392) + (xy 137.465509 -31.954694) (xy 137.524474 -31.84438) (xy 137.603826 -31.747689) (xy 137.700517 -31.668337) (xy 137.810831 -31.609372) + (xy 137.930529 -31.573062) (xy 138.055011 -31.560802) (xy 138.675685 -31.560802) (xy 138.695037 -31.524598) (xy 138.766212 -31.437872) + (xy 138.790011 -31.408873) (xy 138.819009 -31.385075) (xy 142.927175 -27.276908) (xy 142.950973 -27.24791) (xy 143.066698 -27.152937) + (xy 143.198727 -27.082365) (xy 143.341988 -27.038908) (xy 143.453641 -27.027911) (xy 143.45365 -27.027911) (xy 143.490973 -27.024235) + (xy 143.528296 -27.027911) (xy 143.889323 -27.027911) (xy 144.057685 -26.775939) (xy 144.278805 -26.554819) (xy 144.538814 -26.381087) + (xy 144.82772 -26.261418) (xy 145.134422 -26.200411) (xy 145.447132 -26.200411) (xy 145.753834 -26.261418) (xy 146.04274 -26.381087) + (xy 146.302749 -26.554819) (xy 146.523869 -26.775939) (xy 146.697601 -27.035948) (xy 146.715318 -27.07872) (xy 146.727334 -27.082365) + (xy 146.859363 -27.152937) (xy 146.975088 -27.24791) (xy 146.997592 -27.275331) (xy 147.104846 -27.265711) (xy 147.229216 -27.279057) + (xy 147.348592 -27.316411) (xy 148.177047 -27.668069) (xy 148.286843 -27.727993) (xy 148.382838 -27.808186) (xy 148.461344 -27.905566) + (xy 148.519343 -28.016391) (xy 148.554607 -28.136401) (xy 148.565781 -28.260985) (xy 148.552435 -28.385355) (xy 148.515081 -28.504731) + (xy 148.046204 -29.609337) (xy 147.98628 -29.719133) (xy 147.906087 -29.815128) (xy 147.808707 -29.893634) (xy 147.697882 -29.951633) + (xy 147.577872 -29.986897) (xy 147.453288 -29.998071) (xy 147.328918 -29.984725) (xy 147.209542 -29.947371) (xy 146.381087 -29.595713) + (xy 146.271291 -29.535789) (xy 146.175296 -29.455596) (xy 146.09679 -29.358216) (xy 146.038791 -29.247391) (xy 146.025426 -29.201907) + (xy 145.753834 -29.314404) (xy 145.447132 -29.375411) (xy 145.134422 -29.375411) (xy 144.82772 -29.314404) (xy 144.538814 -29.194735) + (xy 144.278805 -29.021003) (xy 144.057685 -28.799883) (xy 143.889323 -28.547911) (xy 143.805776 -28.547911) (xy 142.061478 -30.292209) + (xy 149.030019 -30.292209) (xy 149.043365 -30.167839) (xy 149.080719 -30.048463) (xy 149.549596 -28.943857) (xy 149.60952 -28.834061) + (xy 149.689713 -28.738066) (xy 149.787093 -28.65956) (xy 149.897918 -28.601561) (xy 150.017928 -28.566297) (xy 150.142512 -28.555123) + (xy 150.266882 -28.568469) (xy 150.386258 -28.605823) (xy 151.214713 -28.957481) (xy 151.324509 -29.017405) (xy 151.420504 -29.097598) + (xy 151.430148 -29.109561) (xy 151.484203 -29.065983) (xy 151.595028 -29.007984) (xy 151.715038 -28.97272) (xy 151.839622 -28.961546) + (xy 151.963992 -28.974892) (xy 152.083369 -29.012246) (xy 153.720027 -29.706966) (xy 153.829822 -29.76689) (xy 153.925817 -29.847083) + (xy 154.004323 -29.944463) (xy 154.062322 -30.055288) (xy 154.097586 -30.175298) (xy 154.10876 -30.299882) (xy 154.095414 -30.424252) + (xy 154.05806 -30.543629) (xy 153.36334 -32.180287) (xy 153.303416 -32.290082) (xy 153.223223 -32.386077) (xy 153.125843 -32.464583) + (xy 153.015018 -32.522582) (xy 152.895008 -32.557846) (xy 152.770424 -32.56902) (xy 152.646054 -32.555674) (xy 152.526677 -32.51832) + (xy 150.890019 -31.8236) (xy 150.780224 -31.763676) (xy 150.684229 -31.683483) (xy 150.605723 -31.586103) (xy 150.547724 -31.475278) + (xy 150.51246 -31.355268) (xy 150.506257 -31.28611) (xy 150.490954 -31.287483) (xy 150.366584 -31.274137) (xy 150.247208 -31.236783) + (xy 149.418753 -30.885125) (xy 149.308957 -30.825201) (xy 149.212962 -30.745008) (xy 149.134456 -30.647628) (xy 149.076457 -30.536803) + (xy 149.041193 -30.416793) (xy 149.030019 -30.292209) (xy 142.061478 -30.292209) (xy 141.92642 -30.427267) (xy 142.021732 -30.408308) + (xy 142.314428 -30.408308) (xy 142.601501 -30.46541) (xy 142.871918 -30.57742) (xy 143.115286 -30.740034) (xy 143.322254 -30.947002) + (xy 143.484868 -31.19037) (xy 143.596878 -31.460787) (xy 143.65398 -31.74786) (xy 143.65398 -32.040556) (xy 143.596878 -32.327629) + (xy 143.484868 -32.598046) (xy 143.33213 -32.826634) (xy 143.355966 -32.836507) (xy 143.705647 -33.070156) (xy 144.003027 -33.367536) + (xy 144.215345 -33.685293) (xy 144.215345 -33.620198) (xy 144.316372 -33.1123) (xy 144.514544 -32.633871) (xy 144.802245 -32.203296) + (xy 145.168419 -31.837122) (xy 145.598994 -31.549421) (xy 146.077423 -31.351249) (xy 146.585321 -31.250222) (xy 147.103169 -31.250222) + (xy 147.611067 -31.351249) (xy 148.089496 -31.549421) (xy 148.520071 -31.837122) (xy 148.886245 -32.203296) (xy 149.173946 -32.633871) + (xy 149.372118 -33.1123) (xy 149.473145 -33.620198) (xy 149.473145 -34.138046) (xy 149.372118 -34.645944) (xy 149.173946 -35.124373) + (xy 148.886245 -35.554948) (xy 148.520071 -35.921122) (xy 148.386481 -36.010384) (xy 150.03451 -36.010384) (xy 150.03451 -35.717688) + (xy 150.091612 -35.430615) (xy 150.203622 -35.160198) (xy 150.366236 -34.91683) (xy 150.573204 -34.709862) (xy 150.816572 -34.547248) + (xy 151.086989 -34.435238) (xy 151.374062 -34.378136) (xy 151.666758 -34.378136) (xy 151.953831 -34.435238) (xy 152.224248 -34.547248) + (xy 152.467616 -34.709862) (xy 152.674584 -34.91683) (xy 152.837198 -35.160198) (xy 152.949208 -35.430615) (xy 153.00631 -35.717688) + (xy 153.00631 -36.010384) (xy 152.949208 -36.297457) (xy 152.837198 -36.567874) (xy 152.674584 -36.811242) (xy 152.467616 -37.01821) + (xy 152.224248 -37.180824) (xy 151.953831 -37.292834) (xy 151.666758 -37.349936) (xy 151.374062 -37.349936) (xy 151.086989 -37.292834) + (xy 150.816572 -37.180824) (xy 150.573204 -37.01821) (xy 150.366236 -36.811242) (xy 150.203622 -36.567874) (xy 150.091612 -36.297457) + (xy 150.03451 -36.010384) (xy 148.386481 -36.010384) (xy 148.089496 -36.208823) (xy 147.611067 -36.406995) (xy 147.103169 -36.508022) + (xy 146.585321 -36.508022) (xy 146.077423 -36.406995) (xy 145.598994 -36.208823) (xy 145.168419 -35.921122) (xy 144.802245 -35.554948) + (xy 144.514544 -35.124373) (xy 144.466042 -35.007279) (xy 144.397617 -35.351275) (xy 144.236676 -35.739821) (xy 144.003027 -36.089502) + (xy 143.705647 -36.386882) (xy 143.355966 -36.620531) (xy 142.96742 -36.781472) (xy 142.554943 -36.863519) (xy 142.134385 -36.863519) + (xy 141.721908 -36.781472) (xy 141.333362 -36.620531) (xy 140.983681 -36.386882) (xy 140.686301 -36.089502) (xy 140.452652 -35.739821) + (xy 140.291711 -35.351275) (xy 140.288861 -35.336946) (xy 138.055011 -35.336946) (xy 137.930529 -35.324686) (xy 137.810831 -35.288376) + (xy 137.700517 -35.229411) (xy 137.603826 -35.150059) (xy 137.524474 -35.053368) (xy 137.465509 -34.943054) (xy 137.429199 -34.823356) + (xy 137.416939 -34.698874) (xy 130.115946 -34.698874) (xy 136.331394 -39.758023) (xy 145.062413 -39.758023) (xy 145.062413 -39.337465) + (xy 145.14446 -38.924988) (xy 145.305401 -38.536442) (xy 145.53905 -38.186761) (xy 145.83643 -37.889381) (xy 146.186111 -37.655732) + (xy 146.574657 -37.494791) (xy 146.987134 -37.412744) (xy 147.407692 -37.412744) (xy 147.820169 -37.494791) (xy 148.208715 -37.655732) + (xy 148.558396 -37.889381) (xy 148.855776 -38.186761) (xy 149.089425 -38.536442) (xy 149.250366 -38.924988) (xy 149.255315 -38.949866) + (xy 151.050191 -38.949866) (xy 156.900812 -33.099244) (xy 156.900811 -25.236417) (xy 156.385811 -25.236417) (xy 156.261329 -25.224157) + (xy 156.141631 -25.187847) (xy 156.031317 -25.128882) (xy 155.934626 -25.04953) (xy 155.855274 -24.952839) (xy 155.796309 -24.842525) + (xy 155.759999 -24.722827) (xy 155.747739 -24.598345) (xy 155.747739 -23.873234) (xy 155.632606 -23.950163) (xy 155.24406 -24.111104) + (xy 154.831583 -24.193151) (xy 154.411025 -24.193151) (xy 153.998548 -24.111104) (xy 153.610002 -23.950163) (xy 153.260321 -23.716514) + (xy 152.962941 -23.419134) (xy 152.729292 -23.069453) (xy 152.568351 -22.680907) (xy 152.486304 -22.26843) (xy 152.486304 -21.847872) + (xy 152.568351 -21.435395) (xy 152.729292 -21.046849) (xy 152.962941 -20.697168) (xy 153.260321 -20.399788) (xy 153.610002 -20.166139) + (xy 153.998548 -20.005198) (xy 154.411025 -19.923151) (xy 154.831583 -19.923151) (xy 155.24406 -20.005198) (xy 155.632606 -20.166139) + (xy 155.982287 -20.399788) (xy 156.279667 -20.697168) (xy 156.513316 -21.046849) (xy 156.674257 -21.435395) (xy 156.679206 -21.460273) + (xy 158.474082 -21.460273) (xy 164.324704 -15.60965) (xy 164.324703 -10.879008) (xy 164.280766 -10.835071) (xy 164.167498 -10.665553) + (xy 164.089477 -10.477195) (xy 164.049703 -10.277236) (xy 164.049703 -10.073358) (xy 164.089477 -9.873399) (xy 164.167498 -9.685041) + (xy 164.280766 -9.515523) (xy 164.324704 -9.471585) (xy 164.324703 -7.746825) (xy 163.809703 -7.746825) (xy 163.685221 -7.734565) + (xy 163.565523 -7.698255) (xy 163.455209 -7.63929) (xy 163.358518 -7.559938) (xy 163.279166 -7.463247) (xy 163.220201 -7.352933) + (xy 163.183891 -7.233235) (xy 163.171631 -7.108753) (xy 163.171631 -6.383642) (xy 163.056498 -6.460571) (xy 162.667952 -6.621512) + (xy 162.255475 -6.703559) (xy 161.834917 -6.703559) (xy 161.42244 -6.621512) (xy 161.033894 -6.460571) (xy 160.684213 -6.226922) + (xy 160.386833 -5.929542) (xy 160.153184 -5.579861) (xy 159.992243 -5.191315) (xy 159.910196 -4.778838) (xy 159.910196 -4.35828) + (xy 159.992243 -3.945803) (xy 160.153184 -3.557257) (xy 160.386833 -3.207576) (xy 160.684213 -2.910196) (xy 161.033894 -2.676547) + (xy 161.42244 -2.515606) (xy 161.834917 -2.433559) (xy 162.255475 -2.433559) (xy 162.667952 -2.515606) (xy 163.056498 -2.676547) + (xy 163.406179 -2.910196) (xy 163.703559 -3.207576) (xy 163.937208 -3.557257) (xy 164.098149 -3.945803) (xy 164.103098 -3.970681) + (xy 164.324703 -3.970681) (xy 164.324703 -3.945998) (xy 164.321027 -3.908675) (xy 164.324703 -3.871353) (xy 164.324703 -3.871343) + (xy 164.3357 -3.75969) (xy 164.369782 -3.647335) (xy 164.379157 -3.616429) (xy 164.449729 -3.484399) (xy 164.488927 -3.436637) + (xy 164.544702 -3.368674) (xy 164.573706 -3.344871) (xy 165.701537 -2.21704) (xy 165.664355 -2.201639) (xy 165.420987 -2.039025) + (xy 165.214019 -1.832057) (xy 165.051405 -1.588689) (xy 164.939395 -1.318272) (xy 164.882293 -1.031199) (xy 164.882293 -0.738503) + (xy 164.939395 -0.45143) (xy 165.051405 -0.181013) (xy 165.214019 0.062355) (xy 165.420987 0.269323) (xy 165.664355 0.431937) + (xy 165.934772 0.543947) (xy 166.221845 0.601049) (xy 166.514541 0.601049) (xy 166.801614 0.543947) (xy 167.072031 0.431937) + (xy 167.315399 0.269323) (xy 167.522367 0.062355) (xy 167.684981 -0.181013) (xy 167.700382 -0.218195) (xy 171.748595 3.830019) + (xy 171.748594 9.742767) (xy 171.233594 9.742767) (xy 171.109112 9.755027) (xy 170.989414 9.791337) (xy 170.8791 9.850302) + (xy 170.782409 9.929654) (xy 170.703057 10.026345) (xy 170.644092 10.136659) (xy 170.607782 10.256357) (xy 170.595522 10.380839) + (xy 170.595522 11.10595) (xy 170.480389 11.029021) (xy 170.091843 10.86808) (xy 169.679366 10.786033) (xy 169.258808 10.786033) + (xy 168.846331 10.86808) (xy 168.457785 11.029021) (xy 168.108104 11.26267) (xy 167.810724 11.56005) (xy 167.577075 11.909731) + (xy 167.416134 12.298277) (xy 167.334087 12.710754) (xy 167.334087 13.131312) (xy 167.416134 13.543789) (xy 167.577075 13.932335) + (xy 167.810724 14.282016) (xy 168.108104 14.579396) (xy 168.457785 14.813045) (xy 168.846331 14.973986) (xy 169.258808 15.056033) + (xy 169.679366 15.056033) (xy 170.091843 14.973986) (xy 170.480389 14.813045) (xy 170.83007 14.579396) (xy 171.12745 14.282016) + (xy 171.361099 13.932335) (xy 171.52204 13.543789) (xy 171.526989 13.518911) (xy 173.783594 13.518911) (xy 173.908076 13.506651) + (xy 174.027774 13.470341) (xy 174.138088 13.411376) (xy 174.234779 13.332024) (xy 174.314131 13.235333) (xy 174.373096 13.125019) + (xy 174.409406 13.005321) (xy 174.421666 12.880839) (xy 174.421666 10.380839) (xy 174.409406 10.256357) (xy 174.373096 10.136659) + (xy 174.314131 10.026345) (xy 174.234779 9.929654) (xy 174.138088 9.850302) (xy 174.027774 9.791337) (xy 173.908076 9.755027) + (xy 173.783594 9.742767) (xy 173.268594 9.742767) (xy 173.268594 5.743487) (xy 175.22455 5.743487) (xy 175.22455 8.243487) + (xy 175.23681 8.367969) (xy 175.27312 8.487667) (xy 175.332085 8.597981) (xy 175.411437 8.694672) (xy 175.508128 8.774024) + (xy 175.618442 8.832989) (xy 175.73814 8.869299) (xy 175.862622 8.881559) (xy 176.483296 8.881559) (xy 176.502648 8.917763) + (xy 176.566044 8.99501) (xy 176.597622 9.033488) (xy 176.62662 9.057286) (xy 180.734786 13.165453) (xy 180.758584 13.194451) + (xy 180.874309 13.289424) (xy 181.006338 13.359996) (xy 181.149599 13.403453) (xy 181.261252 13.41445) (xy 181.261261 13.41445) + (xy 181.298584 13.418126) (xy 181.335907 13.41445) (xy 181.696934 13.41445) (xy 181.865296 13.666422) (xy 182.086416 13.887542) + (xy 182.346425 14.061274) (xy 182.635331 14.180943) (xy 182.942033 14.24195) (xy 183.254743 14.24195) (xy 183.561445 14.180943) + (xy 183.850351 14.061274) (xy 184.11036 13.887542) (xy 184.33148 13.666422) (xy 184.505212 13.406413) (xy 184.522929 13.363641) + (xy 184.534945 13.359996) (xy 184.666974 13.289424) (xy 184.782699 13.194451) (xy 184.805203 13.16703) (xy 184.912457 13.17665) + (xy 185.036827 13.163304) (xy 185.156203 13.12595) (xy 185.984658 12.774292) (xy 186.094454 12.714368) (xy 186.190449 12.634175) + (xy 186.268955 12.536795) (xy 186.326954 12.42597) (xy 186.362218 12.30596) (xy 186.373392 12.181376) (xy 186.360046 12.057006) + (xy 186.322692 11.93763) (xy 185.853815 10.833024) (xy 185.793891 10.723228) (xy 185.713698 10.627233) (xy 185.616318 10.548727) + (xy 185.505493 10.490728) (xy 185.385483 10.455464) (xy 185.260899 10.44429) (xy 185.136529 10.457636) (xy 185.017153 10.49499) + (xy 184.188698 10.846648) (xy 184.078902 10.906572) (xy 183.982907 10.986765) (xy 183.904401 11.084145) (xy 183.846402 11.19497) + (xy 183.833037 11.240454) (xy 183.561445 11.127957) (xy 183.254743 11.06695) (xy 182.942033 11.06695) (xy 182.635331 11.127957) + (xy 182.346425 11.247626) (xy 182.086416 11.421358) (xy 181.865296 11.642478) (xy 181.696934 11.89445) (xy 181.613387 11.89445) + (xy 179.869089 10.150152) (xy 186.83763 10.150152) (xy 186.850976 10.274522) (xy 186.88833 10.393898) (xy 187.357207 11.498504) + (xy 187.417131 11.6083) (xy 187.497324 11.704295) (xy 187.594704 11.782801) (xy 187.705529 11.8408) (xy 187.825539 11.876064) + (xy 187.950123 11.887238) (xy 188.074493 11.873892) (xy 188.193869 11.836538) (xy 189.022324 11.48488) (xy 189.13212 11.424956) + (xy 189.228115 11.344763) (xy 189.237759 11.3328) (xy 189.291814 11.376378) (xy 189.402639 11.434377) (xy 189.522649 11.469641) + (xy 189.647233 11.480815) (xy 189.771603 11.467469) (xy 189.89098 11.430115) (xy 191.527638 10.735395) (xy 191.637433 10.675471) + (xy 191.733428 10.595278) (xy 191.811934 10.497898) (xy 191.869933 10.387073) (xy 191.905197 10.267063) (xy 191.916371 10.142479) + (xy 191.903025 10.018109) (xy 191.865671 9.898732) (xy 191.170951 8.262074) (xy 191.111027 8.152279) (xy 191.030834 8.056284) + (xy 190.933454 7.977778) (xy 190.822629 7.919779) (xy 190.702619 7.884515) (xy 190.578035 7.873341) (xy 190.453665 7.886687) + (xy 190.334288 7.924041) (xy 188.69763 8.618761) (xy 188.587835 8.678685) (xy 188.49184 8.758878) (xy 188.413334 8.856258) + (xy 188.355335 8.967083) (xy 188.320071 9.087093) (xy 188.313868 9.156251) (xy 188.298565 9.154878) (xy 188.174195 9.168224) + (xy 188.054819 9.205578) (xy 187.226364 9.557236) (xy 187.116568 9.61716) (xy 187.020573 9.697353) (xy 186.942067 9.794733) + (xy 186.884068 9.905558) (xy 186.848804 10.025568) (xy 186.83763 10.150152) (xy 179.869089 10.150152) (xy 179.734031 10.015094) + (xy 179.829343 10.034053) (xy 180.122039 10.034053) (xy 180.409112 9.976951) (xy 180.679529 9.864941) (xy 180.922897 9.702327) + (xy 181.129865 9.495359) (xy 181.292479 9.251991) (xy 181.404489 8.981574) (xy 181.461591 8.694501) (xy 181.461591 8.401805) + (xy 181.404489 8.114732) (xy 181.292479 7.844315) (xy 181.139741 7.615727) (xy 181.163577 7.605854) (xy 181.513258 7.372205) + (xy 181.810638 7.074825) (xy 182.022956 6.757068) (xy 182.022956 6.822163) (xy 182.123983 7.330061) (xy 182.322155 7.80849) + (xy 182.609856 8.239065) (xy 182.97603 8.605239) (xy 183.406605 8.89294) (xy 183.885034 9.091112) (xy 184.392932 9.192139) + (xy 184.91078 9.192139) (xy 185.418678 9.091112) (xy 185.897107 8.89294) (xy 186.327682 8.605239) (xy 186.693856 8.239065) + (xy 186.981557 7.80849) (xy 187.179729 7.330061) (xy 187.280756 6.822163) (xy 187.280756 6.304315) (xy 187.179729 5.796417) + (xy 186.981557 5.317988) (xy 186.693856 4.887413) (xy 186.327682 4.521239) (xy 186.194092 4.431977) (xy 187.842121 4.431977) + (xy 187.842121 4.724673) (xy 187.899223 5.011746) (xy 188.011233 5.282163) (xy 188.173847 5.525531) (xy 188.380815 5.732499) + (xy 188.624183 5.895113) (xy 188.8946 6.007123) (xy 189.181673 6.064225) (xy 189.474369 6.064225) (xy 189.761442 6.007123) + (xy 190.031859 5.895113) (xy 190.275227 5.732499) (xy 190.482195 5.525531) (xy 190.644809 5.282163) (xy 190.756819 5.011746) + (xy 190.813921 4.724673) (xy 190.813921 4.431977) (xy 190.756819 4.144904) (xy 190.644809 3.874487) (xy 190.482195 3.631119) + (xy 190.275227 3.424151) (xy 190.031859 3.261537) (xy 189.761442 3.149527) (xy 189.474369 3.092425) (xy 189.181673 3.092425) + (xy 188.8946 3.149527) (xy 188.624183 3.261537) (xy 188.380815 3.424151) (xy 188.173847 3.631119) (xy 188.011233 3.874487) + (xy 187.899223 4.144904) (xy 187.842121 4.431977) (xy 186.194092 4.431977) (xy 185.897107 4.233538) (xy 185.418678 4.035366) + (xy 184.91078 3.934339) (xy 184.392932 3.934339) (xy 183.885034 4.035366) (xy 183.406605 4.233538) (xy 182.97603 4.521239) + (xy 182.609856 4.887413) (xy 182.322155 5.317988) (xy 182.273653 5.435082) (xy 182.205228 5.091086) (xy 182.044287 4.70254) + (xy 181.810638 4.352859) (xy 181.513258 4.055479) (xy 181.163577 3.82183) (xy 180.775031 3.660889) (xy 180.362554 3.578842) + (xy 179.941996 3.578842) (xy 179.529519 3.660889) (xy 179.140973 3.82183) (xy 178.791292 4.055479) (xy 178.493912 4.352859) + (xy 178.260263 4.70254) (xy 178.099322 5.091086) (xy 178.096472 5.105415) (xy 175.862622 5.105415) (xy 175.73814 5.117675) + (xy 175.618442 5.153985) (xy 175.508128 5.21295) (xy 175.411437 5.292302) (xy 175.332085 5.388993) (xy 175.27312 5.499307) + (xy 175.23681 5.619005) (xy 175.22455 5.743487) (xy 173.268594 5.743487) (xy 173.268594 3.552538) (xy 173.27227 3.515215) + (xy 173.268594 3.477892) (xy 173.268594 3.477883) (xy 173.257597 3.36623) (xy 173.21414 3.222969) (xy 173.143568 3.09094) + (xy 173.048595 2.975215) (xy 173.019597 2.951417) (xy 166.097498 -3.970681) (xy 166.359703 -3.970681) (xy 166.484185 -3.982941) + (xy 166.603883 -4.019251) (xy 166.714197 -4.078216) (xy 166.810888 -4.157568) (xy 166.89024 -4.254259) (xy 166.949205 -4.364573) + (xy 166.985515 -4.484271) (xy 166.997775 -4.608753) (xy 166.997775 -7.108753) (xy 166.985515 -7.233235) (xy 166.949205 -7.352933) + (xy 166.89024 -7.463247) (xy 166.810888 -7.559938) (xy 166.714197 -7.63929) (xy 166.603883 -7.698255) (xy 166.484185 -7.734565) + (xy 166.359703 -7.746825) (xy 165.844703 -7.746825) (xy 165.844703 -9.471586) (xy 165.88864 -9.515523) (xy 166.001908 -9.685041) + (xy 166.079929 -9.873399) (xy 166.119703 -10.073358) (xy 166.119703 -10.277236) (xy 166.079929 -10.477195) (xy 166.001908 -10.665553) + (xy 165.88864 -10.835071) (xy 165.844703 -10.879008) (xy 165.844703 -11.746105) (xy 167.800658 -11.746105) (xy 167.800658 -9.246105) + (xy 167.812918 -9.121623) (xy 167.849228 -9.001925) (xy 167.908193 -8.891611) (xy 167.987545 -8.79492) (xy 168.084236 -8.715568) + (xy 168.19455 -8.656603) (xy 168.314248 -8.620293) (xy 168.43873 -8.608033) (xy 169.059404 -8.608033) (xy 169.078756 -8.571829) + (xy 169.137303 -8.50049) (xy 169.17373 -8.456104) (xy 169.202728 -8.432306) (xy 173.310893 -4.32414) (xy 173.334691 -4.295142) + (xy 173.363689 -4.271344) (xy 173.450415 -4.200169) (xy 173.534293 -4.155335) (xy 173.582445 -4.129597) (xy 173.725706 -4.08614) + (xy 173.837359 -4.075143) (xy 173.837369 -4.075143) (xy 173.874692 -4.071467) (xy 173.912015 -4.075143) (xy 174.273043 -4.075143) + (xy 174.441405 -3.823171) (xy 174.662525 -3.602051) (xy 174.922534 -3.428319) (xy 175.21144 -3.30865) (xy 175.518142 -3.247643) + (xy 175.830852 -3.247643) (xy 176.137554 -3.30865) (xy 176.42646 -3.428319) (xy 176.686469 -3.602051) (xy 176.907589 -3.823171) + (xy 177.081321 -4.08318) (xy 177.099038 -4.125952) (xy 177.111054 -4.129597) (xy 177.243083 -4.200169) (xy 177.358808 -4.295142) + (xy 177.381312 -4.322563) (xy 177.488566 -4.312943) (xy 177.612936 -4.326289) (xy 177.732312 -4.363643) (xy 178.560767 -4.715301) + (xy 178.670563 -4.775225) (xy 178.766558 -4.855418) (xy 178.845064 -4.952798) (xy 178.903063 -5.063623) (xy 178.938327 -5.183633) + (xy 178.949501 -5.308217) (xy 178.936155 -5.432587) (xy 178.898801 -5.551963) (xy 178.429924 -6.656569) (xy 178.37 -6.766365) + (xy 178.289807 -6.86236) (xy 178.192427 -6.940866) (xy 178.081602 -6.998865) (xy 177.961592 -7.034129) (xy 177.837008 -7.045303) + (xy 177.712638 -7.031957) (xy 177.593262 -6.994603) (xy 176.764807 -6.642945) (xy 176.655011 -6.583021) (xy 176.559016 -6.502828) + (xy 176.48051 -6.405448) (xy 176.422511 -6.294623) (xy 176.409146 -6.249139) (xy 176.137554 -6.361636) (xy 175.830852 -6.422643) + (xy 175.518142 -6.422643) (xy 175.21144 -6.361636) (xy 174.922534 -6.241967) (xy 174.662525 -6.068235) (xy 174.441405 -5.847115) + (xy 174.273043 -5.595143) (xy 174.189494 -5.595143) (xy 172.445196 -7.339441) (xy 179.413739 -7.339441) (xy 179.427085 -7.215071) + (xy 179.464439 -7.095695) (xy 179.933316 -5.991089) (xy 179.99324 -5.881293) (xy 180.073433 -5.785298) (xy 180.170813 -5.706792) + (xy 180.281638 -5.648793) (xy 180.401648 -5.613529) (xy 180.526232 -5.602355) (xy 180.650602 -5.615701) (xy 180.769978 -5.653055) + (xy 181.598433 -6.004713) (xy 181.708229 -6.064637) (xy 181.804224 -6.14483) (xy 181.813868 -6.156793) (xy 181.867923 -6.113215) + (xy 181.978748 -6.055216) (xy 182.098758 -6.019952) (xy 182.223342 -6.008778) (xy 182.347712 -6.022124) (xy 182.467089 -6.059478) + (xy 184.103747 -6.754198) (xy 184.213542 -6.814122) (xy 184.309537 -6.894315) (xy 184.388043 -6.991695) (xy 184.446042 -7.10252) + (xy 184.481306 -7.22253) (xy 184.49248 -7.347114) (xy 184.479134 -7.471484) (xy 184.44178 -7.590861) (xy 183.74706 -9.227519) + (xy 183.687136 -9.337314) (xy 183.606943 -9.433309) (xy 183.509563 -9.511815) (xy 183.398738 -9.569814) (xy 183.278728 -9.605078) + (xy 183.154144 -9.616252) (xy 183.029774 -9.602906) (xy 182.910397 -9.565552) (xy 181.273739 -8.870832) (xy 181.163944 -8.810908) + (xy 181.067949 -8.730715) (xy 180.989443 -8.633335) (xy 180.931444 -8.52251) (xy 180.89618 -8.4025) (xy 180.889977 -8.333342) + (xy 180.874674 -8.334715) (xy 180.750304 -8.321369) (xy 180.630928 -8.284015) (xy 179.802473 -7.932357) (xy 179.692677 -7.872433) + (xy 179.596682 -7.79224) (xy 179.518176 -7.69486) (xy 179.460177 -7.584035) (xy 179.424913 -7.464025) (xy 179.413739 -7.339441) + (xy 172.445196 -7.339441) (xy 172.310139 -7.474498) (xy 172.405451 -7.455539) (xy 172.698147 -7.455539) (xy 172.98522 -7.512641) + (xy 173.255637 -7.624651) (xy 173.499005 -7.787265) (xy 173.705973 -7.994233) (xy 173.868587 -8.237601) (xy 173.980597 -8.508018) + (xy 174.037699 -8.795091) (xy 174.037699 -9.087787) (xy 173.980597 -9.37486) (xy 173.868587 -9.645277) (xy 173.715849 -9.873865) + (xy 173.739685 -9.883738) (xy 174.089366 -10.117387) (xy 174.386746 -10.414767) (xy 174.599064 -10.732524) (xy 174.599064 -10.667429) + (xy 174.700091 -10.159531) (xy 174.898263 -9.681102) (xy 175.185964 -9.250527) (xy 175.552138 -8.884353) (xy 175.982713 -8.596652) + (xy 176.461142 -8.39848) (xy 176.96904 -8.297453) (xy 177.486888 -8.297453) (xy 177.994786 -8.39848) (xy 178.473215 -8.596652) + (xy 178.90379 -8.884353) (xy 179.269964 -9.250527) (xy 179.557665 -9.681102) (xy 179.755837 -10.159531) (xy 179.856864 -10.667429) + (xy 179.856864 -11.185277) (xy 179.755837 -11.693175) (xy 179.557665 -12.171604) (xy 179.269964 -12.602179) (xy 178.90379 -12.968353) + (xy 178.7702 -13.057615) (xy 180.418229 -13.057615) (xy 180.418229 -12.764919) (xy 180.475331 -12.477846) (xy 180.587341 -12.207429) + (xy 180.749955 -11.964061) (xy 180.956923 -11.757093) (xy 181.200291 -11.594479) (xy 181.470708 -11.482469) (xy 181.757781 -11.425367) + (xy 182.050477 -11.425367) (xy 182.33755 -11.482469) (xy 182.607967 -11.594479) (xy 182.851335 -11.757093) (xy 183.058303 -11.964061) + (xy 183.220917 -12.207429) (xy 183.332927 -12.477846) (xy 183.390029 -12.764919) (xy 183.390029 -13.057615) (xy 183.332927 -13.344688) + (xy 183.220917 -13.615105) (xy 183.058303 -13.858473) (xy 182.851335 -14.065441) (xy 182.607967 -14.228055) (xy 182.33755 -14.340065) + (xy 182.050477 -14.397167) (xy 181.757781 -14.397167) (xy 181.470708 -14.340065) (xy 181.200291 -14.228055) (xy 180.956923 -14.065441) + (xy 180.749955 -13.858473) (xy 180.587341 -13.615105) (xy 180.475331 -13.344688) (xy 180.418229 -13.057615) (xy 178.7702 -13.057615) + (xy 178.473215 -13.256054) (xy 177.994786 -13.454226) (xy 177.486888 -13.555253) (xy 176.96904 -13.555253) (xy 176.461142 -13.454226) + (xy 175.982713 -13.256054) (xy 175.552138 -12.968353) (xy 175.185964 -12.602179) (xy 174.898263 -12.171604) (xy 174.849761 -12.05451) + (xy 174.781336 -12.398506) (xy 174.620395 -12.787052) (xy 174.386746 -13.136733) (xy 174.089366 -13.434113) (xy 173.739685 -13.667762) + (xy 173.351139 -13.828703) (xy 172.938662 -13.91075) (xy 172.518104 -13.91075) (xy 172.105627 -13.828703) (xy 171.717081 -13.667762) + (xy 171.3674 -13.434113) (xy 171.07002 -13.136733) (xy 170.836371 -12.787052) (xy 170.67543 -12.398506) (xy 170.67258 -12.384177) + (xy 168.43873 -12.384177) (xy 168.314248 -12.371917) (xy 168.19455 -12.335607) (xy 168.084236 -12.276642) (xy 167.987545 -12.19729) + (xy 167.908193 -12.100599) (xy 167.849228 -11.990285) (xy 167.812918 -11.870587) (xy 167.800658 -11.746105) (xy 165.844703 -11.746105) + (xy 165.844703 -15.887128) (xy 165.848379 -15.924453) (xy 165.844703 -15.961778) (xy 165.844703 -15.961786) (xy 165.833706 -16.073439) + (xy 165.790249 -16.2167) (xy 165.719677 -16.348729) (xy 165.624704 -16.464454) (xy 165.595706 -16.488252) (xy 159.573883 -22.510074) + (xy 159.573883 -24.598345) (xy 159.561623 -24.722827) (xy 159.525313 -24.842525) (xy 159.466348 -24.952839) (xy 159.386996 -25.04953) + (xy 159.290305 -25.128882) (xy 159.179991 -25.187847) (xy 159.060293 -25.224157) (xy 158.935811 -25.236417) (xy 158.420811 -25.236417) + (xy 158.420811 -29.235697) (xy 160.376767 -29.235697) (xy 160.376767 -26.735697) (xy 160.389027 -26.611215) (xy 160.425337 -26.491517) + (xy 160.484302 -26.381203) (xy 160.563654 -26.284512) (xy 160.660345 -26.20516) (xy 160.770659 -26.146195) (xy 160.890357 -26.109885) + (xy 161.014839 -26.097625) (xy 161.635513 -26.097625) (xy 161.654865 -26.061421) (xy 161.713412 -25.990082) (xy 161.749839 -25.945696) + (xy 161.778837 -25.921898) (xy 165.887002 -21.813732) (xy 165.9108 -21.784734) (xy 165.939798 -21.760936) (xy 166.026524 -21.689761) + (xy 166.110402 -21.644927) (xy 166.158554 -21.619189) (xy 166.301815 -21.575732) (xy 166.413468 -21.564735) (xy 166.413478 -21.564735) + (xy 166.450801 -21.561059) (xy 166.488124 -21.564735) (xy 166.849151 -21.564735) (xy 167.017513 -21.312763) (xy 167.238633 -21.091643) + (xy 167.498642 -20.917911) (xy 167.787548 -20.798242) (xy 168.09425 -20.737235) (xy 168.40696 -20.737235) (xy 168.713662 -20.798242) + (xy 169.002568 -20.917911) (xy 169.262577 -21.091643) (xy 169.483697 -21.312763) (xy 169.657429 -21.572772) (xy 169.675146 -21.615544) + (xy 169.687162 -21.619189) (xy 169.819191 -21.689761) (xy 169.934916 -21.784734) (xy 169.95742 -21.812155) (xy 170.064674 -21.802535) + (xy 170.189044 -21.815881) (xy 170.30842 -21.853235) (xy 171.136875 -22.204893) (xy 171.246671 -22.264817) (xy 171.342666 -22.34501) + (xy 171.421172 -22.44239) (xy 171.479171 -22.553215) (xy 171.514435 -22.673225) (xy 171.525609 -22.797809) (xy 171.512263 -22.922179) + (xy 171.474909 -23.041555) (xy 171.006032 -24.146161) (xy 170.946108 -24.255957) (xy 170.865915 -24.351952) (xy 170.768535 -24.430458) + (xy 170.65771 -24.488457) (xy 170.5377 -24.523721) (xy 170.413116 -24.534895) (xy 170.288746 -24.521549) (xy 170.16937 -24.484195) + (xy 169.340915 -24.132537) (xy 169.231119 -24.072613) (xy 169.135124 -23.99242) (xy 169.056618 -23.89504) (xy 168.998619 -23.784215) + (xy 168.985254 -23.738731) (xy 168.713662 -23.851228) (xy 168.40696 -23.912235) (xy 168.09425 -23.912235) (xy 167.787548 -23.851228) + (xy 167.498642 -23.731559) (xy 167.238633 -23.557827) (xy 167.017513 -23.336707) (xy 166.849151 -23.084735) (xy 166.765603 -23.084735) + (xy 165.021305 -24.829033) (xy 171.989847 -24.829033) (xy 172.003193 -24.704663) (xy 172.040547 -24.585287) (xy 172.509424 -23.480681) + (xy 172.569348 -23.370885) (xy 172.649541 -23.27489) (xy 172.746921 -23.196384) (xy 172.857746 -23.138385) (xy 172.977756 -23.103121) + (xy 173.10234 -23.091947) (xy 173.22671 -23.105293) (xy 173.346086 -23.142647) (xy 174.174541 -23.494305) (xy 174.284337 -23.554229) + (xy 174.380332 -23.634422) (xy 174.389976 -23.646385) (xy 174.444031 -23.602807) (xy 174.554856 -23.544808) (xy 174.674866 -23.509544) + (xy 174.79945 -23.49837) (xy 174.92382 -23.511716) (xy 175.043197 -23.54907) (xy 176.679855 -24.24379) (xy 176.78965 -24.303714) + (xy 176.885645 -24.383907) (xy 176.964151 -24.481287) (xy 177.02215 -24.592112) (xy 177.057414 -24.712122) (xy 177.068588 -24.836706) + (xy 177.055242 -24.961076) (xy 177.017888 -25.080453) (xy 176.323168 -26.717111) (xy 176.263244 -26.826906) (xy 176.183051 -26.922901) + (xy 176.085671 -27.001407) (xy 175.974846 -27.059406) (xy 175.854836 -27.09467) (xy 175.730252 -27.105844) (xy 175.605882 -27.092498) + (xy 175.486505 -27.055144) (xy 173.849847 -26.360424) (xy 173.740052 -26.3005) (xy 173.644057 -26.220307) (xy 173.565551 -26.122927) + (xy 173.507552 -26.012102) (xy 173.472288 -25.892092) (xy 173.466085 -25.822934) (xy 173.450782 -25.824307) (xy 173.326412 -25.810961) + (xy 173.207036 -25.773607) (xy 172.378581 -25.421949) (xy 172.268785 -25.362025) (xy 172.17279 -25.281832) (xy 172.094284 -25.184452) + (xy 172.036285 -25.073627) (xy 172.001021 -24.953617) (xy 171.989847 -24.829033) (xy 165.021305 -24.829033) (xy 164.886248 -24.96409) + (xy 164.98156 -24.945131) (xy 165.274256 -24.945131) (xy 165.561329 -25.002233) (xy 165.831746 -25.114243) (xy 166.075114 -25.276857) + (xy 166.282082 -25.483825) (xy 166.444696 -25.727193) (xy 166.556706 -25.99761) (xy 166.613808 -26.284683) (xy 166.613808 -26.577379) + (xy 166.556706 -26.864452) (xy 166.444696 -27.134869) (xy 166.291958 -27.363457) (xy 166.315794 -27.37333) (xy 166.665475 -27.606979) + (xy 166.962855 -27.904359) (xy 167.175173 -28.222116) (xy 167.175173 -28.157021) (xy 167.2762 -27.649123) (xy 167.474372 -27.170694) + (xy 167.762073 -26.740119) (xy 168.128247 -26.373945) (xy 168.558822 -26.086244) (xy 169.037251 -25.888072) (xy 169.545149 -25.787045) + (xy 170.062997 -25.787045) (xy 170.570895 -25.888072) (xy 171.049324 -26.086244) (xy 171.479899 -26.373945) (xy 171.846073 -26.740119) + (xy 172.133774 -27.170694) (xy 172.331946 -27.649123) (xy 172.432973 -28.157021) (xy 172.432973 -28.674869) (xy 172.331946 -29.182767) + (xy 172.133774 -29.661196) (xy 171.846073 -30.091771) (xy 171.479899 -30.457945) (xy 171.049324 -30.745646) (xy 170.570895 -30.943818) + (xy 170.062997 -31.044845) (xy 169.545149 -31.044845) (xy 169.037251 -30.943818) (xy 168.558822 -30.745646) (xy 168.128247 -30.457945) + (xy 167.762073 -30.091771) (xy 167.474372 -29.661196) (xy 167.42587 -29.544102) (xy 167.357445 -29.888098) (xy 167.196504 -30.276644) + (xy 166.962855 -30.626325) (xy 166.665475 -30.923705) (xy 166.315794 -31.157354) (xy 165.927248 -31.318295) (xy 165.514771 -31.400342) + (xy 165.094213 -31.400342) (xy 164.681736 -31.318295) (xy 164.29319 -31.157354) (xy 163.943509 -30.923705) (xy 163.646129 -30.626325) + (xy 163.41248 -30.276644) (xy 163.251539 -29.888098) (xy 163.248689 -29.873769) (xy 161.014839 -29.873769) (xy 160.890357 -29.861509) + (xy 160.770659 -29.825199) (xy 160.660345 -29.766234) (xy 160.563654 -29.686882) (xy 160.484302 -29.590191) (xy 160.425337 -29.479877) + (xy 160.389027 -29.360179) (xy 160.376767 -29.235697) (xy 158.420811 -29.235697) (xy 158.420811 -33.376725) (xy 158.424487 -33.414048) + (xy 158.420811 -33.451371) (xy 158.420811 -33.45138) (xy 158.409814 -33.563033) (xy 158.366357 -33.706294) (xy 158.295785 -33.838323) + (xy 158.200812 -33.954048) (xy 158.171814 -33.977846) (xy 152.149992 -39.999667) (xy 152.149992 -42.087938) (xy 152.137732 -42.21242) + (xy 152.101422 -42.332118) (xy 152.042457 -42.442432) (xy 151.963105 -42.539123) (xy 151.866414 -42.618475) (xy 151.7561 -42.67744) + (xy 151.636402 -42.71375) (xy 151.51192 -42.72601) (xy 148.96192 -42.72601) (xy 148.837438 -42.71375) (xy 148.71774 -42.67744) + (xy 148.607426 -42.618475) (xy 148.510735 -42.539123) (xy 148.431383 -42.442432) (xy 148.372418 -42.332118) (xy 148.336108 -42.21242) + (xy 148.323848 -42.087938) (xy 148.323848 -41.362827) (xy 148.208715 -41.439756) (xy 147.820169 -41.600697) (xy 147.407692 -41.682744) + (xy 146.987134 -41.682744) (xy 146.574657 -41.600697) (xy 146.186111 -41.439756) (xy 145.83643 -41.206107) (xy 145.53905 -40.908727) + (xy 145.305401 -40.559046) (xy 145.14446 -40.1705) (xy 145.062413 -39.758023) (xy 136.331394 -39.758023) (xy 144.89107 -46.725289) + (xy 152.952875 -46.725289) (xy 152.952875 -44.225289) (xy 152.965135 -44.100807) (xy 153.001445 -43.981109) (xy 153.06041 -43.870795) + (xy 153.139762 -43.774104) (xy 153.236453 -43.694752) (xy 153.346767 -43.635787) (xy 153.466465 -43.599477) (xy 153.590947 -43.587217) + (xy 154.211621 -43.587217) (xy 154.230973 -43.551013) (xy 154.271449 -43.501694) (xy 154.325947 -43.435288) (xy 154.354945 -43.41149) + (xy 158.46311 -39.303324) (xy 158.486908 -39.274326) (xy 158.515906 -39.250528) (xy 158.602632 -39.179353) (xy 158.686508 -39.13452) + (xy 158.734662 -39.108781) (xy 158.877923 -39.065324) (xy 158.989576 -39.054327) (xy 158.989586 -39.054327) (xy 159.026909 -39.050651) + (xy 159.064232 -39.054327) (xy 159.42526 -39.054327) (xy 159.593622 -38.802355) (xy 159.814742 -38.581235) (xy 160.074751 -38.407503) + (xy 160.363657 -38.287834) (xy 160.670359 -38.226827) (xy 160.983069 -38.226827) (xy 161.289771 -38.287834) (xy 161.578677 -38.407503) + (xy 161.838686 -38.581235) (xy 162.059806 -38.802355) (xy 162.233538 -39.062364) (xy 162.251255 -39.105136) (xy 162.263271 -39.108781) + (xy 162.3953 -39.179353) (xy 162.511025 -39.274326) (xy 162.533529 -39.301747) (xy 162.640783 -39.292127) (xy 162.765153 -39.305473) + (xy 162.884529 -39.342827) (xy 163.712984 -39.694485) (xy 163.82278 -39.754409) (xy 163.918775 -39.834602) (xy 163.997281 -39.931982) + (xy 164.05528 -40.042807) (xy 164.090544 -40.162817) (xy 164.101718 -40.287401) (xy 164.088372 -40.411771) (xy 164.051018 -40.531147) + (xy 163.582141 -41.635753) (xy 163.522217 -41.745549) (xy 163.442024 -41.841544) (xy 163.344644 -41.92005) (xy 163.233819 -41.978049) + (xy 163.113809 -42.013313) (xy 162.989225 -42.024487) (xy 162.864855 -42.011141) (xy 162.745479 -41.973787) (xy 161.917024 -41.622129) + (xy 161.807228 -41.562205) (xy 161.711233 -41.482012) (xy 161.632727 -41.384632) (xy 161.574728 -41.273807) (xy 161.561363 -41.228323) + (xy 161.289771 -41.34082) (xy 160.983069 -41.401827) (xy 160.670359 -41.401827) (xy 160.363657 -41.34082) (xy 160.074751 -41.221151) + (xy 159.814742 -41.047419) (xy 159.593622 -40.826299) (xy 159.42526 -40.574327) (xy 159.341711 -40.574327) (xy 157.597413 -42.318625) + (xy 164.565956 -42.318625) (xy 164.579302 -42.194255) (xy 164.616656 -42.074879) (xy 165.085533 -40.970273) (xy 165.145457 -40.860477) + (xy 165.22565 -40.764482) (xy 165.32303 -40.685976) (xy 165.433855 -40.627977) (xy 165.553865 -40.592713) (xy 165.678449 -40.581539) + (xy 165.802819 -40.594885) (xy 165.922195 -40.632239) (xy 166.75065 -40.983897) (xy 166.860446 -41.043821) (xy 166.956441 -41.124014) + (xy 166.966085 -41.135977) (xy 167.02014 -41.092399) (xy 167.130965 -41.0344) (xy 167.250975 -40.999136) (xy 167.375559 -40.987962) + (xy 167.499929 -41.001308) (xy 167.619306 -41.038662) (xy 169.255964 -41.733382) (xy 169.365759 -41.793306) (xy 169.461754 -41.873499) + (xy 169.54026 -41.970879) (xy 169.598259 -42.081704) (xy 169.633523 -42.201714) (xy 169.644697 -42.326298) (xy 169.631351 -42.450668) + (xy 169.593997 -42.570045) (xy 168.899277 -44.206703) (xy 168.839353 -44.316498) (xy 168.75916 -44.412493) (xy 168.66178 -44.490999) + (xy 168.550955 -44.548998) (xy 168.430945 -44.584262) (xy 168.306361 -44.595436) (xy 168.181991 -44.58209) (xy 168.062614 -44.544736) + (xy 166.425956 -43.850016) (xy 166.316161 -43.790092) (xy 166.220166 -43.709899) (xy 166.14166 -43.612519) (xy 166.083661 -43.501694) + (xy 166.048397 -43.381684) (xy 166.042194 -43.312526) (xy 166.026891 -43.313899) (xy 165.902521 -43.300553) (xy 165.783145 -43.263199) + (xy 164.95469 -42.911541) (xy 164.844894 -42.851617) (xy 164.748899 -42.771424) (xy 164.670393 -42.674044) (xy 164.612394 -42.563219) + (xy 164.57713 -42.443209) (xy 164.565956 -42.318625) (xy 157.597413 -42.318625) (xy 157.462356 -42.453682) (xy 157.557668 -42.434723) + (xy 157.850364 -42.434723) (xy 158.137437 -42.491825) (xy 158.407854 -42.603835) (xy 158.651222 -42.766449) (xy 158.85819 -42.973417) + (xy 159.020804 -43.216785) (xy 159.132814 -43.487202) (xy 159.189916 -43.774275) (xy 159.189916 -44.066971) (xy 159.132814 -44.354044) + (xy 159.020804 -44.624461) (xy 158.868066 -44.853049) (xy 158.891902 -44.862922) (xy 159.241583 -45.096571) (xy 159.538963 -45.393951) + (xy 159.751281 -45.711708) (xy 159.751281 -45.646613) (xy 159.852308 -45.138715) (xy 160.05048 -44.660286) (xy 160.338181 -44.229711) + (xy 160.704355 -43.863537) (xy 161.13493 -43.575836) (xy 161.613359 -43.377664) (xy 162.121257 -43.276637) (xy 162.639105 -43.276637) + (xy 163.147003 -43.377664) (xy 163.625432 -43.575836) (xy 164.056007 -43.863537) (xy 164.422181 -44.229711) (xy 164.709882 -44.660286) + (xy 164.908054 -45.138715) (xy 165.009081 -45.646613) (xy 165.009081 -46.164461) (xy 164.908054 -46.672359) (xy 164.709882 -47.150788) + (xy 164.422181 -47.581363) (xy 164.056007 -47.947537) (xy 163.922417 -48.036799) (xy 165.570446 -48.036799) (xy 165.570446 -47.744103) + (xy 165.627548 -47.45703) (xy 165.739558 -47.186613) (xy 165.902172 -46.943245) (xy 166.10914 -46.736277) (xy 166.352508 -46.573663) + (xy 166.622925 -46.461653) (xy 166.909998 -46.404551) (xy 167.202694 -46.404551) (xy 167.489767 -46.461653) (xy 167.760184 -46.573663) + (xy 168.003552 -46.736277) (xy 168.21052 -46.943245) (xy 168.373134 -47.186613) (xy 168.485144 -47.45703) (xy 168.542246 -47.744103) + (xy 168.542246 -48.036799) (xy 168.485144 -48.323872) (xy 168.373134 -48.594289) (xy 168.21052 -48.837657) (xy 168.003552 -49.044625) + (xy 167.760184 -49.207239) (xy 167.489767 -49.319249) (xy 167.202694 -49.376351) (xy 166.909998 -49.376351) (xy 166.622925 -49.319249) + (xy 166.352508 -49.207239) (xy 166.10914 -49.044625) (xy 165.902172 -48.837657) (xy 165.739558 -48.594289) (xy 165.627548 -48.323872) + (xy 165.570446 -48.036799) (xy 163.922417 -48.036799) (xy 163.625432 -48.235238) (xy 163.147003 -48.43341) (xy 162.639105 -48.534437) + (xy 162.121257 -48.534437) (xy 161.613359 -48.43341) (xy 161.13493 -48.235238) (xy 160.704355 -47.947537) (xy 160.338181 -47.581363) + (xy 160.05048 -47.150788) (xy 160.001978 -47.033694) (xy 159.933553 -47.37769) (xy 159.772612 -47.766236) (xy 159.538963 -48.115917) + (xy 159.241583 -48.413297) (xy 158.891902 -48.646946) (xy 158.503356 -48.807887) (xy 158.090879 -48.889934) (xy 157.670321 -48.889934) + (xy 157.257844 -48.807887) (xy 156.869298 -48.646946) (xy 156.519617 -48.413297) (xy 156.222237 -48.115917) (xy 155.988588 -47.766236) + (xy 155.827647 -47.37769) (xy 155.824797 -47.363361) (xy 153.590947 -47.363361) (xy 153.466465 -47.351101) (xy 153.346767 -47.314791) + (xy 153.236453 -47.255826) (xy 153.139762 -47.176474) (xy 153.06041 -47.079783) (xy 153.001445 -46.969469) (xy 152.965135 -46.849771) + (xy 152.952875 -46.725289) (xy 144.89107 -46.725289) (xy 149.637935 -50.589064) (xy 152.45406 -51.784438) (xy 160.598349 -51.784438) + (xy 160.598349 -51.36388) (xy 160.680396 -50.951403) (xy 160.841337 -50.562857) (xy 161.074986 -50.213176) (xy 161.372366 -49.915796) + (xy 161.722047 -49.682147) (xy 162.110593 -49.521206) (xy 162.52307 -49.439159) (xy 162.943628 -49.439159) (xy 163.356105 -49.521206) + (xy 163.744651 -49.682147) (xy 164.094332 -49.915796) (xy 164.391712 -50.213176) (xy 164.625361 -50.562857) (xy 164.786302 -50.951403) + (xy 164.791251 -50.976281) (xy 166.586127 -50.976281) (xy 171.949195 -45.613212) (xy 171.949194 -38.814517) (xy 171.905257 -38.77058) + (xy 171.791989 -38.601062) (xy 171.713968 -38.412704) (xy 171.674194 -38.212745) (xy 171.674194 -38.008867) (xy 171.713968 -37.808908) + (xy 171.791989 -37.62055) (xy 171.905257 -37.451032) (xy 171.949195 -37.407094) (xy 171.949195 -37.262833) (xy 171.921748 -37.262833) + (xy 171.797266 -37.250573) (xy 171.677568 -37.214263) (xy 171.567254 -37.155298) (xy 171.470563 -37.075946) (xy 171.391211 -36.979255) + (xy 171.332246 -36.868941) (xy 171.295936 -36.749243) (xy 171.283676 -36.624761) (xy 171.283676 -35.89965) (xy 171.168543 -35.976579) + (xy 170.779997 -36.13752) (xy 170.36752 -36.219567) (xy 169.946962 -36.219567) (xy 169.534485 -36.13752) (xy 169.145939 -35.976579) + (xy 168.796258 -35.74293) (xy 168.498878 -35.44555) (xy 168.265229 -35.095869) (xy 168.104288 -34.707323) (xy 168.022241 -34.294846) + (xy 168.022241 -33.874288) (xy 168.104288 -33.461811) (xy 168.265229 -33.073265) (xy 168.498878 -32.723584) (xy 168.796258 -32.426204) + (xy 169.145939 -32.192555) (xy 169.534485 -32.031614) (xy 169.946962 -31.949567) (xy 170.36752 -31.949567) (xy 170.779997 -32.031614) + (xy 171.168543 -32.192555) (xy 171.518224 -32.426204) (xy 171.815604 -32.723584) (xy 172.049253 -33.073265) (xy 172.210194 -33.461811) + (xy 172.215143 -33.486689) (xy 172.436748 -33.486689) (xy 172.436748 -33.462006) (xy 172.433072 -33.424683) (xy 172.436748 -33.387361) + (xy 172.436748 -33.387351) (xy 172.447745 -33.275698) (xy 172.48872 -33.140618) (xy 172.491202 -33.132437) (xy 172.561774 -33.000407) + (xy 172.593147 -32.962179) (xy 172.656747 -32.884682) (xy 172.685751 -32.860879) (xy 173.813582 -31.733048) (xy 173.7764 -31.717647) + (xy 173.533032 -31.555033) (xy 173.326064 -31.348065) (xy 173.16345 -31.104697) (xy 173.05144 -30.83428) (xy 172.994338 -30.547207) + (xy 172.994338 -30.254511) (xy 173.05144 -29.967438) (xy 173.16345 -29.697021) (xy 173.326064 -29.453653) (xy 173.533032 -29.246685) + (xy 173.7764 -29.084071) (xy 174.046817 -28.972061) (xy 174.33389 -28.914959) (xy 174.626586 -28.914959) (xy 174.913659 -28.972061) + (xy 175.184076 -29.084071) (xy 175.427444 -29.246685) (xy 175.634412 -29.453653) (xy 175.797026 -29.697021) (xy 175.812427 -29.734203) + (xy 179.86064 -25.685989) (xy 179.860639 -19.773241) (xy 179.345639 -19.773241) (xy 179.221157 -19.760981) (xy 179.101459 -19.724671) + (xy 178.991145 -19.665706) (xy 178.894454 -19.586354) (xy 178.815102 -19.489663) (xy 178.756137 -19.379349) (xy 178.719827 -19.259651) + (xy 178.707567 -19.135169) (xy 178.707567 -18.410058) (xy 178.592434 -18.486987) (xy 178.203888 -18.647928) (xy 177.791411 -18.729975) + (xy 177.370853 -18.729975) (xy 176.958376 -18.647928) (xy 176.56983 -18.486987) (xy 176.220149 -18.253338) (xy 175.922769 -17.955958) + (xy 175.68912 -17.606277) (xy 175.528179 -17.217731) (xy 175.446132 -16.805254) (xy 175.446132 -16.384696) (xy 175.528179 -15.972219) + (xy 175.68912 -15.583673) (xy 175.922769 -15.233992) (xy 176.220149 -14.936612) (xy 176.56983 -14.702963) (xy 176.958376 -14.542022) + (xy 177.370853 -14.459975) (xy 177.791411 -14.459975) (xy 178.203888 -14.542022) (xy 178.592434 -14.702963) (xy 178.942115 -14.936612) + (xy 179.239495 -15.233992) (xy 179.473144 -15.583673) (xy 179.634085 -15.972219) (xy 179.639034 -15.997097) (xy 181.43391 -15.997097) + (xy 186.796978 -10.634028) (xy 186.796977 -2.283649) (xy 186.769531 -2.283649) (xy 186.645049 -2.271389) (xy 186.525351 -2.235079) + (xy 186.415037 -2.176114) (xy 186.318346 -2.096762) (xy 186.238994 -2.000071) (xy 186.180029 -1.889757) (xy 186.143719 -1.770059) + (xy 186.131459 -1.645577) (xy 186.131459 -0.920466) (xy 186.016326 -0.997395) (xy 185.62778 -1.158336) (xy 185.215303 -1.240383) + (xy 184.794745 -1.240383) (xy 184.382268 -1.158336) (xy 183.993722 -0.997395) (xy 183.644041 -0.763746) (xy 183.346661 -0.466366) + (xy 183.113012 -0.116685) (xy 182.952071 0.271861) (xy 182.870024 0.684338) (xy 182.870024 1.104896) (xy 182.952071 1.517373) + (xy 183.113012 1.905919) (xy 183.346661 2.2556) (xy 183.644041 2.55298) (xy 183.993722 2.786629) (xy 184.382268 2.94757) + (xy 184.794745 3.029617) (xy 185.215303 3.029617) (xy 185.62778 2.94757) (xy 185.689221 2.92212) (xy 194.667798 2.92212) + (xy 194.667798 5.42212) (xy 194.680058 5.546602) (xy 194.716368 5.6663) (xy 194.775333 5.776614) (xy 194.854685 5.873305) + (xy 194.951376 5.952657) (xy 195.06169 6.011622) (xy 195.181388 6.047932) (xy 195.30587 6.060192) (xy 195.926544 6.060192) + (xy 195.945896 6.096396) (xy 195.989262 6.149237) (xy 196.04087 6.212121) (xy 196.069868 6.235919) (xy 200.178033 10.344085) + (xy 200.201831 10.373083) (xy 200.230829 10.396881) (xy 200.317555 10.468056) (xy 200.402314 10.513361) (xy 200.449585 10.538628) + (xy 200.592846 10.582085) (xy 200.704499 10.593082) (xy 200.704509 10.593082) (xy 200.741832 10.596758) (xy 200.779155 10.593082) + (xy 201.140182 10.593082) (xy 201.308544 10.845054) (xy 201.529664 11.066174) (xy 201.789673 11.239906) (xy 202.078579 11.359575) + (xy 202.385281 11.420582) (xy 202.697991 11.420582) (xy 203.004693 11.359575) (xy 203.293599 11.239906) (xy 203.553608 11.066174) + (xy 203.774728 10.845054) (xy 203.94846 10.585045) (xy 203.966177 10.542273) (xy 203.978193 10.538628) (xy 204.110222 10.468056) + (xy 204.225947 10.373083) (xy 204.248451 10.345662) (xy 204.355705 10.355282) (xy 204.480075 10.341936) (xy 204.599451 10.304582) + (xy 205.427906 9.952924) (xy 205.537702 9.893) (xy 205.633697 9.812807) (xy 205.712203 9.715427) (xy 205.770202 9.604602) + (xy 205.805466 9.484592) (xy 205.81664 9.360008) (xy 205.803294 9.235638) (xy 205.76594 9.116262) (xy 205.297063 8.011656) + (xy 205.237139 7.90186) (xy 205.156946 7.805865) (xy 205.059566 7.727359) (xy 204.948741 7.66936) (xy 204.828731 7.634096) + (xy 204.704147 7.622922) (xy 204.579777 7.636268) (xy 204.460401 7.673622) (xy 203.631946 8.02528) (xy 203.52215 8.085204) + (xy 203.426155 8.165397) (xy 203.347649 8.262777) (xy 203.28965 8.373602) (xy 203.276285 8.419086) (xy 203.004693 8.306589) + (xy 202.697991 8.245582) (xy 202.385281 8.245582) (xy 202.078579 8.306589) (xy 201.789673 8.426258) (xy 201.529664 8.59999) + (xy 201.308544 8.82111) (xy 201.140182 9.073082) (xy 201.056634 9.073082) (xy 199.312336 7.328784) (xy 206.280878 7.328784) + (xy 206.294224 7.453154) (xy 206.331578 7.57253) (xy 206.800455 8.677136) (xy 206.860379 8.786932) (xy 206.940572 8.882927) + (xy 207.037952 8.961433) (xy 207.148777 9.019432) (xy 207.268787 9.054696) (xy 207.393371 9.06587) (xy 207.517741 9.052524) + (xy 207.637117 9.01517) (xy 208.465572 8.663512) (xy 208.575368 8.603588) (xy 208.671363 8.523395) (xy 208.681007 8.511432) + (xy 208.735062 8.55501) (xy 208.845887 8.613009) (xy 208.965897 8.648273) (xy 209.090481 8.659447) (xy 209.214851 8.646101) + (xy 209.334228 8.608747) (xy 210.970886 7.914027) (xy 211.080681 7.854103) (xy 211.176676 7.77391) (xy 211.255182 7.67653) + (xy 211.313181 7.565705) (xy 211.348445 7.445695) (xy 211.359619 7.321111) (xy 211.346273 7.196741) (xy 211.308919 7.077364) + (xy 210.614199 5.440706) (xy 210.554275 5.330911) (xy 210.474082 5.234916) (xy 210.376702 5.15641) (xy 210.265877 5.098411) + (xy 210.145867 5.063147) (xy 210.021283 5.051973) (xy 209.896913 5.065319) (xy 209.777536 5.102673) (xy 208.140878 5.797393) + (xy 208.031083 5.857317) (xy 207.935088 5.93751) (xy 207.856582 6.03489) (xy 207.798583 6.145715) (xy 207.763319 6.265725) + (xy 207.757116 6.334883) (xy 207.741813 6.33351) (xy 207.617443 6.346856) (xy 207.498067 6.38421) (xy 206.669612 6.735868) + (xy 206.559816 6.795792) (xy 206.463821 6.875985) (xy 206.385315 6.973365) (xy 206.327316 7.08419) (xy 206.292052 7.2042) + (xy 206.280878 7.328784) (xy 199.312336 7.328784) (xy 199.177279 7.193727) (xy 199.272591 7.212686) (xy 199.565287 7.212686) + (xy 199.85236 7.155584) (xy 200.122777 7.043574) (xy 200.366145 6.88096) (xy 200.573113 6.673992) (xy 200.735727 6.430624) + (xy 200.847737 6.160207) (xy 200.904839 5.873134) (xy 200.904839 5.580438) (xy 200.847737 5.293365) (xy 200.735727 5.022948) + (xy 200.582989 4.79436) (xy 200.606825 4.784487) (xy 200.956506 4.550838) (xy 201.253886 4.253458) (xy 201.466204 3.935701) + (xy 201.466204 4.000796) (xy 201.567231 4.508694) (xy 201.765403 4.987123) (xy 202.053104 5.417698) (xy 202.419278 5.783872) + (xy 202.849853 6.071573) (xy 203.328282 6.269745) (xy 203.83618 6.370772) (xy 204.354028 6.370772) (xy 204.861926 6.269745) + (xy 205.340355 6.071573) (xy 205.77093 5.783872) (xy 206.137104 5.417698) (xy 206.424805 4.987123) (xy 206.622977 4.508694) + (xy 206.724004 4.000796) (xy 206.724004 3.482948) (xy 206.622977 2.97505) (xy 206.424805 2.496621) (xy 206.137104 2.066046) + (xy 205.77093 1.699872) (xy 205.63734 1.61061) (xy 207.285369 1.61061) (xy 207.285369 1.903306) (xy 207.342471 2.190379) + (xy 207.454481 2.460796) (xy 207.617095 2.704164) (xy 207.824063 2.911132) (xy 208.067431 3.073746) (xy 208.337848 3.185756) + (xy 208.624921 3.242858) (xy 208.917617 3.242858) (xy 209.20469 3.185756) (xy 209.475107 3.073746) (xy 209.718475 2.911132) + (xy 209.925443 2.704164) (xy 210.088057 2.460796) (xy 210.200067 2.190379) (xy 210.257169 1.903306) (xy 210.257169 1.61061) + (xy 210.200067 1.323537) (xy 210.088057 1.05312) (xy 209.925443 0.809752) (xy 209.718475 0.602784) (xy 209.475107 0.44017) + (xy 209.20469 0.32816) (xy 208.917617 0.271058) (xy 208.624921 0.271058) (xy 208.337848 0.32816) (xy 208.067431 0.44017) + (xy 207.824063 0.602784) (xy 207.617095 0.809752) (xy 207.454481 1.05312) (xy 207.342471 1.323537) (xy 207.285369 1.61061) + (xy 205.63734 1.61061) (xy 205.340355 1.412171) (xy 204.861926 1.213999) (xy 204.354028 1.112972) (xy 203.83618 1.112972) + (xy 203.328282 1.213999) (xy 202.849853 1.412171) (xy 202.419278 1.699872) (xy 202.053104 2.066046) (xy 201.765403 2.496621) + (xy 201.716901 2.613715) (xy 201.648476 2.269719) (xy 201.487535 1.881173) (xy 201.253886 1.531492) (xy 200.956506 1.234112) + (xy 200.606825 1.000463) (xy 200.218279 0.839522) (xy 199.805802 0.757475) (xy 199.385244 0.757475) (xy 198.972767 0.839522) + (xy 198.584221 1.000463) (xy 198.23454 1.234112) (xy 197.93716 1.531492) (xy 197.703511 1.881173) (xy 197.54257 2.269719) + (xy 197.53972 2.284048) (xy 195.30587 2.284048) (xy 195.181388 2.296308) (xy 195.06169 2.332618) (xy 194.951376 2.391583) + (xy 194.854685 2.470935) (xy 194.775333 2.567626) (xy 194.716368 2.67794) (xy 194.680058 2.797638) (xy 194.667798 2.92212) + (xy 185.689221 2.92212) (xy 186.016326 2.786629) (xy 186.366007 2.55298) (xy 186.663387 2.2556) (xy 186.897036 1.905919) + (xy 187.057977 1.517373) (xy 187.062926 1.492495) (xy 189.319531 1.492495) (xy 189.444013 1.480235) (xy 189.563711 1.443925) + (xy 189.674025 1.38496) (xy 189.770716 1.305608) (xy 189.850068 1.208917) (xy 189.909033 1.098603) (xy 189.945343 0.978905) + (xy 189.957603 0.854423) (xy 189.957603 -1.645577) (xy 189.945343 -1.770059) (xy 189.909033 -1.889757) (xy 189.850068 -2.000071) + (xy 189.770716 -2.096762) (xy 189.674025 -2.176114) (xy 189.563711 -2.235079) (xy 189.444013 -2.271389) (xy 189.319531 -2.283649) + (xy 188.316977 -2.283649) (xy 188.316977 -10.911509) (xy 188.320653 -10.948832) (xy 188.316977 -10.986155) (xy 188.316977 -10.986164) + (xy 188.30598 -11.097817) (xy 188.262523 -11.241078) (xy 188.191951 -11.373107) (xy 188.145753 -11.4294) (xy 188.502652 -11.4294) + (xy 188.522004 -11.393196) (xy 188.561994 -11.344469) (xy 188.616978 -11.277471) (xy 188.645976 -11.253673) (xy 192.754141 -7.145507) + (xy 192.777939 -7.116509) (xy 192.806937 -7.092711) (xy 192.893663 -7.021536) (xy 192.978422 -6.976231) (xy 193.025693 -6.950964) + (xy 193.168954 -6.907507) (xy 193.280607 -6.89651) (xy 193.280617 -6.89651) (xy 193.31794 -6.892834) (xy 193.355263 -6.89651) + (xy 193.716291 -6.89651) (xy 193.884653 -6.644538) (xy 194.105773 -6.423418) (xy 194.365782 -6.249686) (xy 194.654688 -6.130017) + (xy 194.96139 -6.06901) (xy 195.2741 -6.06901) (xy 195.580802 -6.130017) (xy 195.869708 -6.249686) (xy 196.129717 -6.423418) + (xy 196.350837 -6.644538) (xy 196.524569 -6.904547) (xy 196.542286 -6.947319) (xy 196.554302 -6.950964) (xy 196.686331 -7.021536) + (xy 196.802056 -7.116509) (xy 196.82456 -7.14393) (xy 196.931814 -7.13431) (xy 197.056184 -7.147656) (xy 197.17556 -7.18501) + (xy 198.004015 -7.536668) (xy 198.113811 -7.596592) (xy 198.209806 -7.676785) (xy 198.288312 -7.774165) (xy 198.346311 -7.88499) + (xy 198.381575 -8.005) (xy 198.392749 -8.129584) (xy 198.379403 -8.253954) (xy 198.342049 -8.37333) (xy 197.873172 -9.477936) + (xy 197.813248 -9.587732) (xy 197.733055 -9.683727) (xy 197.635675 -9.762233) (xy 197.52485 -9.820232) (xy 197.40484 -9.855496) + (xy 197.280256 -9.86667) (xy 197.155886 -9.853324) (xy 197.03651 -9.81597) (xy 196.208055 -9.464312) (xy 196.098259 -9.404388) + (xy 196.002264 -9.324195) (xy 195.923758 -9.226815) (xy 195.865759 -9.11599) (xy 195.852394 -9.070506) (xy 195.580802 -9.183003) + (xy 195.2741 -9.24401) (xy 194.96139 -9.24401) (xy 194.654688 -9.183003) (xy 194.365782 -9.063334) (xy 194.105773 -8.889602) + (xy 193.884653 -8.668482) (xy 193.716291 -8.41651) (xy 193.632742 -8.41651) (xy 191.888444 -10.160808) (xy 198.856987 -10.160808) + (xy 198.870333 -10.036438) (xy 198.907687 -9.917062) (xy 199.376564 -8.812456) (xy 199.436488 -8.70266) (xy 199.516681 -8.606665) + (xy 199.614061 -8.528159) (xy 199.724886 -8.47016) (xy 199.844896 -8.434896) (xy 199.96948 -8.423722) (xy 200.09385 -8.437068) + (xy 200.213226 -8.474422) (xy 201.041681 -8.82608) (xy 201.151477 -8.886004) (xy 201.247472 -8.966197) (xy 201.257116 -8.97816) + (xy 201.311171 -8.934582) (xy 201.421996 -8.876583) (xy 201.542006 -8.841319) (xy 201.66659 -8.830145) (xy 201.79096 -8.843491) + (xy 201.910337 -8.880845) (xy 203.546995 -9.575565) (xy 203.65679 -9.635489) (xy 203.752785 -9.715682) (xy 203.831291 -9.813062) + (xy 203.88929 -9.923887) (xy 203.924554 -10.043897) (xy 203.935728 -10.168481) (xy 203.922382 -10.292851) (xy 203.885028 -10.412228) + (xy 203.190308 -12.048886) (xy 203.130384 -12.158681) (xy 203.050191 -12.254676) (xy 202.952811 -12.333182) (xy 202.841986 -12.391181) + (xy 202.721976 -12.426445) (xy 202.597392 -12.437619) (xy 202.473022 -12.424273) (xy 202.353645 -12.386919) (xy 200.716987 -11.692199) + (xy 200.607192 -11.632275) (xy 200.511197 -11.552082) (xy 200.432691 -11.454702) (xy 200.374692 -11.343877) (xy 200.339428 -11.223867) + (xy 200.333225 -11.154709) (xy 200.317922 -11.156082) (xy 200.193552 -11.142736) (xy 200.074176 -11.105382) (xy 199.245721 -10.753724) + (xy 199.135925 -10.6938) (xy 199.03993 -10.613607) (xy 198.961424 -10.516227) (xy 198.903425 -10.405402) (xy 198.868161 -10.285392) + (xy 198.856987 -10.160808) (xy 191.888444 -10.160808) (xy 191.753387 -10.295865) (xy 191.848699 -10.276906) (xy 192.141395 -10.276906) + (xy 192.428468 -10.334008) (xy 192.698885 -10.446018) (xy 192.942253 -10.608632) (xy 193.149221 -10.8156) (xy 193.311835 -11.058968) + (xy 193.423845 -11.329385) (xy 193.480947 -11.616458) (xy 193.480947 -11.909154) (xy 193.423845 -12.196227) (xy 193.311835 -12.466644) + (xy 193.159097 -12.695232) (xy 193.182933 -12.705105) (xy 193.532614 -12.938754) (xy 193.829994 -13.236134) (xy 194.042312 -13.553891) + (xy 194.042312 -13.488796) (xy 194.143339 -12.980898) (xy 194.341511 -12.502469) (xy 194.629212 -12.071894) (xy 194.995386 -11.70572) + (xy 195.425961 -11.418019) (xy 195.90439 -11.219847) (xy 196.412288 -11.11882) (xy 196.930136 -11.11882) (xy 197.438034 -11.219847) + (xy 197.916463 -11.418019) (xy 198.347038 -11.70572) (xy 198.713212 -12.071894) (xy 199.000913 -12.502469) (xy 199.199085 -12.980898) + (xy 199.300112 -13.488796) (xy 199.300112 -14.006644) (xy 199.199085 -14.514542) (xy 199.000913 -14.992971) (xy 198.713212 -15.423546) + (xy 198.347038 -15.78972) (xy 198.213448 -15.878982) (xy 199.861477 -15.878982) (xy 199.861477 -15.586286) (xy 199.918579 -15.299213) + (xy 200.030589 -15.028796) (xy 200.193203 -14.785428) (xy 200.400171 -14.57846) (xy 200.643539 -14.415846) (xy 200.913956 -14.303836) + (xy 201.201029 -14.246734) (xy 201.493725 -14.246734) (xy 201.780798 -14.303836) (xy 202.051215 -14.415846) (xy 202.294583 -14.57846) + (xy 202.501551 -14.785428) (xy 202.664165 -15.028796) (xy 202.776175 -15.299213) (xy 202.833277 -15.586286) (xy 202.833277 -15.878982) + (xy 202.776175 -16.166055) (xy 202.664165 -16.436472) (xy 202.501551 -16.67984) (xy 202.294583 -16.886808) (xy 202.051215 -17.049422) + (xy 201.780798 -17.161432) (xy 201.493725 -17.218534) (xy 201.201029 -17.218534) (xy 200.913956 -17.161432) (xy 200.643539 -17.049422) + (xy 200.400171 -16.886808) (xy 200.193203 -16.67984) (xy 200.030589 -16.436472) (xy 199.918579 -16.166055) (xy 199.861477 -15.878982) + (xy 198.213448 -15.878982) (xy 197.916463 -16.077421) (xy 197.438034 -16.275593) (xy 196.930136 -16.37662) (xy 196.412288 -16.37662) + (xy 195.90439 -16.275593) (xy 195.425961 -16.077421) (xy 194.995386 -15.78972) (xy 194.629212 -15.423546) (xy 194.341511 -14.992971) + (xy 194.293009 -14.875877) (xy 194.224584 -15.219873) (xy 194.063643 -15.608419) (xy 193.829994 -15.9581) (xy 193.532614 -16.25548) + (xy 193.182933 -16.489129) (xy 192.794387 -16.65007) (xy 192.38191 -16.732117) (xy 191.961352 -16.732117) (xy 191.548875 -16.65007) + (xy 191.160329 -16.489129) (xy 190.810648 -16.25548) (xy 190.513268 -15.9581) (xy 190.279619 -15.608419) (xy 190.118678 -15.219873) + (xy 190.115828 -15.205544) (xy 187.881978 -15.205544) (xy 187.757496 -15.193284) (xy 187.637798 -15.156974) (xy 187.527484 -15.098009) + (xy 187.430793 -15.018657) (xy 187.351441 -14.921966) (xy 187.292476 -14.811652) (xy 187.256166 -14.691954) (xy 187.243906 -14.567472) + (xy 187.243906 -12.336704) (xy 182.533711 -17.046898) (xy 182.533711 -19.135169) (xy 182.521451 -19.259651) (xy 182.485141 -19.379349) + (xy 182.426176 -19.489663) (xy 182.346824 -19.586354) (xy 182.250133 -19.665706) (xy 182.139819 -19.724671) (xy 182.020121 -19.760981) + (xy 181.895639 -19.773241) (xy 181.380639 -19.773241) (xy 181.380639 -25.96347) (xy 181.384315 -26.000793) (xy 181.380639 -26.038116) + (xy 181.380639 -26.038125) (xy 181.369642 -26.149778) (xy 181.326185 -26.293039) (xy 181.255613 -26.425068) (xy 181.16064 -26.540793) + (xy 181.131642 -26.564591) (xy 175.639169 -32.057064) (xy 179.820015 -32.057064) (xy 179.820015 -29.557064) (xy 179.832275 -29.432582) + (xy 179.868585 -29.312884) (xy 179.92755 -29.20257) (xy 180.006902 -29.105879) (xy 180.103593 -29.026527) (xy 180.213907 -28.967562) + (xy 180.333605 -28.931252) (xy 180.458087 -28.918992) (xy 181.078761 -28.918992) (xy 181.098113 -28.882788) (xy 181.138103 -28.834061) + (xy 181.193087 -28.767063) (xy 181.222085 -28.743265) (xy 185.33025 -24.635099) (xy 185.354048 -24.606101) (xy 185.383046 -24.582303) + (xy 185.469772 -24.511128) (xy 185.554531 -24.465823) (xy 185.601802 -24.440556) (xy 185.745063 -24.397099) (xy 185.856716 -24.386102) + (xy 185.856726 -24.386102) (xy 185.894049 -24.382426) (xy 185.931372 -24.386102) (xy 186.292399 -24.386102) (xy 186.460761 -24.13413) + (xy 186.681881 -23.91301) (xy 186.94189 -23.739278) (xy 187.230796 -23.619609) (xy 187.537498 -23.558602) (xy 187.850208 -23.558602) + (xy 188.15691 -23.619609) (xy 188.445816 -23.739278) (xy 188.705825 -23.91301) (xy 188.926945 -24.13413) (xy 189.100677 -24.394139) + (xy 189.118394 -24.436911) (xy 189.13041 -24.440556) (xy 189.262439 -24.511128) (xy 189.378164 -24.606101) (xy 189.400668 -24.633522) + (xy 189.507922 -24.623902) (xy 189.632292 -24.637248) (xy 189.751668 -24.674602) (xy 190.580123 -25.02626) (xy 190.689919 -25.086184) + (xy 190.785914 -25.166377) (xy 190.86442 -25.263757) (xy 190.922419 -25.374582) (xy 190.957683 -25.494592) (xy 190.968857 -25.619176) + (xy 190.955511 -25.743546) (xy 190.918157 -25.862922) (xy 190.44928 -26.967528) (xy 190.389356 -27.077324) (xy 190.309163 -27.173319) + (xy 190.211783 -27.251825) (xy 190.100958 -27.309824) (xy 189.980948 -27.345088) (xy 189.856364 -27.356262) (xy 189.731994 -27.342916) + (xy 189.612618 -27.305562) (xy 188.784163 -26.953904) (xy 188.674367 -26.89398) (xy 188.578372 -26.813787) (xy 188.499866 -26.716407) + (xy 188.441867 -26.605582) (xy 188.428502 -26.560098) (xy 188.15691 -26.672595) (xy 187.850208 -26.733602) (xy 187.537498 -26.733602) + (xy 187.230796 -26.672595) (xy 186.94189 -26.552926) (xy 186.681881 -26.379194) (xy 186.460761 -26.158074) (xy 186.292399 -25.906102) + (xy 186.208851 -25.906102) (xy 184.464553 -27.6504) (xy 191.433095 -27.6504) (xy 191.446441 -27.52603) (xy 191.483795 -27.406654) + (xy 191.952672 -26.302048) (xy 192.012596 -26.192252) (xy 192.092789 -26.096257) (xy 192.190169 -26.017751) (xy 192.300994 -25.959752) + (xy 192.421004 -25.924488) (xy 192.545588 -25.913314) (xy 192.669958 -25.92666) (xy 192.789334 -25.964014) (xy 193.617789 -26.315672) + (xy 193.727585 -26.375596) (xy 193.82358 -26.455789) (xy 193.833224 -26.467752) (xy 193.887279 -26.424174) (xy 193.998104 -26.366175) + (xy 194.118114 -26.330911) (xy 194.242698 -26.319737) (xy 194.367068 -26.333083) (xy 194.486445 -26.370437) (xy 196.123103 -27.065157) + (xy 196.232898 -27.125081) (xy 196.328893 -27.205274) (xy 196.407399 -27.302654) (xy 196.465398 -27.413479) (xy 196.500662 -27.533489) + (xy 196.511836 -27.658073) (xy 196.49849 -27.782443) (xy 196.461136 -27.90182) (xy 195.766416 -29.538478) (xy 195.706492 -29.648273) + (xy 195.626299 -29.744268) (xy 195.528919 -29.822774) (xy 195.418094 -29.880773) (xy 195.298084 -29.916037) (xy 195.1735 -29.927211) + (xy 195.04913 -29.913865) (xy 194.929753 -29.876511) (xy 193.293095 -29.181791) (xy 193.1833 -29.121867) (xy 193.087305 -29.041674) + (xy 193.008799 -28.944294) (xy 192.9508 -28.833469) (xy 192.915536 -28.713459) (xy 192.909333 -28.644301) (xy 192.89403 -28.645674) + (xy 192.76966 -28.632328) (xy 192.650284 -28.594974) (xy 191.821829 -28.243316) (xy 191.712033 -28.183392) (xy 191.616038 -28.103199) + (xy 191.537532 -28.005819) (xy 191.479533 -27.894994) (xy 191.444269 -27.774984) (xy 191.433095 -27.6504) (xy 184.464553 -27.6504) + (xy 184.329496 -27.785457) (xy 184.424808 -27.766498) (xy 184.717504 -27.766498) (xy 185.004577 -27.8236) (xy 185.274994 -27.93561) + (xy 185.518362 -28.098224) (xy 185.72533 -28.305192) (xy 185.887944 -28.54856) (xy 185.999954 -28.818977) (xy 186.057056 -29.10605) + (xy 186.057056 -29.398746) (xy 185.999954 -29.685819) (xy 185.887944 -29.956236) (xy 185.735206 -30.184824) (xy 185.759042 -30.194697) + (xy 186.108723 -30.428346) (xy 186.406103 -30.725726) (xy 186.618421 -31.043483) (xy 186.618421 -30.978388) (xy 186.719448 -30.47049) + (xy 186.91762 -29.992061) (xy 187.205321 -29.561486) (xy 187.571495 -29.195312) (xy 188.00207 -28.907611) (xy 188.480499 -28.709439) + (xy 188.988397 -28.608412) (xy 189.506245 -28.608412) (xy 190.014143 -28.709439) (xy 190.492572 -28.907611) (xy 190.923147 -29.195312) + (xy 191.289321 -29.561486) (xy 191.577022 -29.992061) (xy 191.775194 -30.47049) (xy 191.876221 -30.978388) (xy 191.876221 -31.496236) + (xy 191.775194 -32.004134) (xy 191.577022 -32.482563) (xy 191.289321 -32.913138) (xy 190.923147 -33.279312) (xy 190.789557 -33.368574) + (xy 192.437586 -33.368574) (xy 192.437586 -33.075878) (xy 192.494688 -32.788805) (xy 192.606698 -32.518388) (xy 192.769312 -32.27502) + (xy 192.97628 -32.068052) (xy 193.219648 -31.905438) (xy 193.490065 -31.793428) (xy 193.777138 -31.736326) (xy 194.069834 -31.736326) + (xy 194.356907 -31.793428) (xy 194.627324 -31.905438) (xy 194.870692 -32.068052) (xy 195.07766 -32.27502) (xy 195.240274 -32.518388) + (xy 195.352284 -32.788805) (xy 195.409386 -33.075878) (xy 195.409386 -33.368574) (xy 195.352284 -33.655647) (xy 195.240274 -33.926064) + (xy 195.07766 -34.169432) (xy 194.870692 -34.3764) (xy 194.627324 -34.539014) (xy 194.356907 -34.651024) (xy 194.069834 -34.708126) + (xy 193.777138 -34.708126) (xy 193.490065 -34.651024) (xy 193.219648 -34.539014) (xy 192.97628 -34.3764) (xy 192.769312 -34.169432) + (xy 192.606698 -33.926064) (xy 192.494688 -33.655647) (xy 192.437586 -33.368574) (xy 190.789557 -33.368574) (xy 190.492572 -33.567013) + (xy 190.014143 -33.765185) (xy 189.506245 -33.866212) (xy 188.988397 -33.866212) (xy 188.480499 -33.765185) (xy 188.00207 -33.567013) + (xy 187.571495 -33.279312) (xy 187.205321 -32.913138) (xy 186.91762 -32.482563) (xy 186.869118 -32.365469) (xy 186.800693 -32.709465) + (xy 186.639752 -33.098011) (xy 186.406103 -33.447692) (xy 186.108723 -33.745072) (xy 185.759042 -33.978721) (xy 185.370496 -34.139662) + (xy 184.958019 -34.221709) (xy 184.537461 -34.221709) (xy 184.124984 -34.139662) (xy 183.736438 -33.978721) (xy 183.386757 -33.745072) + (xy 183.089377 -33.447692) (xy 182.855728 -33.098011) (xy 182.694787 -32.709465) (xy 182.691937 -32.695136) (xy 180.458087 -32.695136) + (xy 180.333605 -32.682876) (xy 180.213907 -32.646566) (xy 180.103593 -32.587601) (xy 180.006902 -32.508249) (xy 179.92755 -32.411558) + (xy 179.868585 -32.301244) (xy 179.832275 -32.181546) (xy 179.820015 -32.057064) (xy 175.639169 -32.057064) (xy 174.209543 -33.486689) + (xy 174.471748 -33.486689) (xy 174.59623 -33.498949) (xy 174.715928 -33.535259) (xy 174.826242 -33.594224) (xy 174.922933 -33.673576) + (xy 175.002285 -33.770267) (xy 175.06125 -33.880581) (xy 175.09756 -34.000279) (xy 175.10982 -34.124761) (xy 175.10982 -36.624761) + (xy 175.09756 -36.749243) (xy 175.06125 -36.868941) (xy 175.002285 -36.979255) (xy 174.922933 -37.075946) (xy 174.826242 -37.155298) + (xy 174.715928 -37.214263) (xy 174.59623 -37.250573) (xy 174.471748 -37.262833) (xy 173.469194 -37.262833) (xy 173.469194 -37.407095) + (xy 173.513131 -37.451032) (xy 173.626399 -37.62055) (xy 173.70442 -37.808908) (xy 173.744194 -38.008867) (xy 173.744194 -38.212745) + (xy 173.70442 -38.412704) (xy 173.626399 -38.601062) (xy 173.513131 -38.77058) (xy 173.469194 -38.814517) (xy 173.469194 -45.890693) + (xy 173.47287 -45.928016) (xy 173.469194 -45.965339) (xy 173.469194 -45.965348) (xy 173.458197 -46.077001) (xy 173.41474 -46.220262) + (xy 173.344168 -46.352291) (xy 173.297969 -46.408585) (xy 173.654869 -46.408585) (xy 173.674221 -46.372381) (xy 173.71914 -46.317648) + (xy 173.769195 -46.256656) (xy 173.798193 -46.232858) (xy 177.906359 -42.124691) (xy 177.930157 -42.095693) (xy 178.045882 -42.00072) + (xy 178.177911 -41.930148) (xy 178.321172 -41.886691) (xy 178.432825 -41.875694) (xy 178.432834 -41.875694) (xy 178.470157 -41.872018) + (xy 178.50748 -41.875694) (xy 178.868508 -41.875694) (xy 179.03687 -41.623722) (xy 179.25799 -41.402602) (xy 179.517999 -41.22887) + (xy 179.806905 -41.109201) (xy 180.113607 -41.048194) (xy 180.426317 -41.048194) (xy 180.733019 -41.109201) (xy 181.021925 -41.22887) + (xy 181.281934 -41.402602) (xy 181.503054 -41.623722) (xy 181.676786 -41.883731) (xy 181.694503 -41.926503) (xy 181.706519 -41.930148) + (xy 181.838548 -42.00072) (xy 181.954273 -42.095693) (xy 181.976777 -42.123114) (xy 182.084031 -42.113494) (xy 182.208401 -42.12684) + (xy 182.327777 -42.164194) (xy 183.156232 -42.515852) (xy 183.266028 -42.575776) (xy 183.362023 -42.655969) (xy 183.440529 -42.753349) + (xy 183.498528 -42.864174) (xy 183.533792 -42.984184) (xy 183.544966 -43.108768) (xy 183.53162 -43.233138) (xy 183.494266 -43.352514) + (xy 183.025389 -44.45712) (xy 182.965465 -44.566916) (xy 182.885272 -44.662911) (xy 182.787892 -44.741417) (xy 182.677067 -44.799416) + (xy 182.557057 -44.83468) (xy 182.432473 -44.845854) (xy 182.308103 -44.832508) (xy 182.188727 -44.795154) (xy 181.360272 -44.443496) + (xy 181.250476 -44.383572) (xy 181.154481 -44.303379) (xy 181.075975 -44.205999) (xy 181.017976 -44.095174) (xy 181.004611 -44.04969) + (xy 180.733019 -44.162187) (xy 180.426317 -44.223194) (xy 180.113607 -44.223194) (xy 179.806905 -44.162187) (xy 179.517999 -44.042518) + (xy 179.25799 -43.868786) (xy 179.03687 -43.647666) (xy 178.868508 -43.395694) (xy 178.78496 -43.395694) (xy 177.040662 -45.139992) + (xy 184.009204 -45.139992) (xy 184.02255 -45.015622) (xy 184.059904 -44.896246) (xy 184.528781 -43.79164) (xy 184.588705 -43.681844) + (xy 184.668898 -43.585849) (xy 184.766278 -43.507343) (xy 184.877103 -43.449344) (xy 184.997113 -43.41408) (xy 185.121697 -43.402906) + (xy 185.246067 -43.416252) (xy 185.365443 -43.453606) (xy 186.193898 -43.805264) (xy 186.303694 -43.865188) (xy 186.399689 -43.945381) + (xy 186.409333 -43.957344) (xy 186.463388 -43.913766) (xy 186.574213 -43.855767) (xy 186.694223 -43.820503) (xy 186.818807 -43.809329) + (xy 186.943177 -43.822675) (xy 187.062554 -43.860029) (xy 188.699212 -44.554749) (xy 188.809007 -44.614673) (xy 188.905002 -44.694866) + (xy 188.983508 -44.792246) (xy 189.041507 -44.903071) (xy 189.076771 -45.023081) (xy 189.087945 -45.147665) (xy 189.074599 -45.272035) + (xy 189.037245 -45.391412) (xy 188.342525 -47.02807) (xy 188.282601 -47.137865) (xy 188.202408 -47.23386) (xy 188.105028 -47.312366) + (xy 187.994203 -47.370365) (xy 187.874193 -47.405629) (xy 187.749609 -47.416803) (xy 187.625239 -47.403457) (xy 187.505862 -47.366103) + (xy 185.869204 -46.671383) (xy 185.759409 -46.611459) (xy 185.663414 -46.531266) (xy 185.584908 -46.433886) (xy 185.526909 -46.323061) + (xy 185.491645 -46.203051) (xy 185.485442 -46.133893) (xy 185.470139 -46.135266) (xy 185.345769 -46.12192) (xy 185.226393 -46.084566) + (xy 184.397938 -45.732908) (xy 184.288142 -45.672984) (xy 184.192147 -45.592791) (xy 184.113641 -45.495411) (xy 184.055642 -45.384586) + (xy 184.020378 -45.264576) (xy 184.009204 -45.139992) (xy 177.040662 -45.139992) (xy 176.905604 -45.27505) (xy 177.000916 -45.256091) + (xy 177.293612 -45.256091) (xy 177.580685 -45.313193) (xy 177.851102 -45.425203) (xy 178.09447 -45.587817) (xy 178.301438 -45.794785) + (xy 178.464052 -46.038153) (xy 178.576062 -46.30857) (xy 178.633164 -46.595643) (xy 178.633164 -46.888339) (xy 178.576062 -47.175412) + (xy 178.464052 -47.445829) (xy 178.311314 -47.674417) (xy 178.33515 -47.68429) (xy 178.684831 -47.917939) (xy 178.982211 -48.215319) + (xy 179.194529 -48.533076) (xy 179.194529 -48.467981) (xy 179.295556 -47.960083) (xy 179.493728 -47.481654) (xy 179.781429 -47.051079) + (xy 180.147603 -46.684905) (xy 180.578178 -46.397204) (xy 181.056607 -46.199032) (xy 181.564505 -46.098005) (xy 182.082353 -46.098005) + (xy 182.590251 -46.199032) (xy 183.06868 -46.397204) (xy 183.499255 -46.684905) (xy 183.865429 -47.051079) (xy 184.15313 -47.481654) + (xy 184.351302 -47.960083) (xy 184.452329 -48.467981) (xy 184.452329 -48.985829) (xy 184.351302 -49.493727) (xy 184.15313 -49.972156) + (xy 183.865429 -50.402731) (xy 183.499255 -50.768905) (xy 183.365665 -50.858167) (xy 185.013694 -50.858167) (xy 185.013694 -50.565471) + (xy 185.070796 -50.278398) (xy 185.182806 -50.007981) (xy 185.34542 -49.764613) (xy 185.552388 -49.557645) (xy 185.795756 -49.395031) + (xy 186.066173 -49.283021) (xy 186.353246 -49.225919) (xy 186.645942 -49.225919) (xy 186.933015 -49.283021) (xy 187.203432 -49.395031) + (xy 187.4468 -49.557645) (xy 187.653768 -49.764613) (xy 187.816382 -50.007981) (xy 187.928392 -50.278398) (xy 187.985494 -50.565471) + (xy 187.985494 -50.858167) (xy 187.928392 -51.14524) (xy 187.816382 -51.415657) (xy 187.653768 -51.659025) (xy 187.4468 -51.865993) + (xy 187.203432 -52.028607) (xy 186.933015 -52.140617) (xy 186.645942 -52.197719) (xy 186.353246 -52.197719) (xy 186.066173 -52.140617) + (xy 185.795756 -52.028607) (xy 185.552388 -51.865993) (xy 185.34542 -51.659025) (xy 185.182806 -51.415657) (xy 185.070796 -51.14524) + (xy 185.013694 -50.858167) (xy 183.365665 -50.858167) (xy 183.06868 -51.056606) (xy 182.590251 -51.254778) (xy 182.082353 -51.355805) + (xy 181.564505 -51.355805) (xy 181.056607 -51.254778) (xy 180.578178 -51.056606) (xy 180.147603 -50.768905) (xy 179.781429 -50.402731) + (xy 179.493728 -49.972156) (xy 179.445226 -49.855062) (xy 179.376801 -50.199058) (xy 179.21586 -50.587604) (xy 178.982211 -50.937285) + (xy 178.684831 -51.234665) (xy 178.33515 -51.468314) (xy 177.946604 -51.629255) (xy 177.534127 -51.711302) (xy 177.113569 -51.711302) + (xy 176.701092 -51.629255) (xy 176.312546 -51.468314) (xy 175.962865 -51.234665) (xy 175.665485 -50.937285) (xy 175.431836 -50.587604) + (xy 175.270895 -50.199058) (xy 175.268045 -50.184729) (xy 173.034195 -50.184729) (xy 172.909713 -50.172469) (xy 172.790015 -50.136159) + (xy 172.679701 -50.077194) (xy 172.58301 -49.997842) (xy 172.503658 -49.901151) (xy 172.444693 -49.790837) (xy 172.408383 -49.671139) + (xy 172.396123 -49.546657) (xy 172.396123 -47.315888) (xy 167.685928 -52.026082) (xy 167.685928 -54.114353) (xy 167.673668 -54.238835) + (xy 167.637358 -54.358533) (xy 167.578393 -54.468847) (xy 167.499041 -54.565538) (xy 167.449975 -54.605806) (xy 180.041597 -54.605806) + (xy 180.041597 -54.185248) (xy 180.123644 -53.772771) (xy 180.284585 -53.384225) (xy 180.518234 -53.034544) (xy 180.815614 -52.737164) + (xy 181.165295 -52.503515) (xy 181.553841 -52.342574) (xy 181.966318 -52.260527) (xy 182.386876 -52.260527) (xy 182.799353 -52.342574) + (xy 183.187899 -52.503515) (xy 183.53758 -52.737164) (xy 183.83496 -53.034544) (xy 184.068609 -53.384225) (xy 184.22955 -53.772771) + (xy 184.234499 -53.797649) (xy 186.029375 -53.797649) (xy 189.506674 -50.320349) (xy 189.506674 -50.000385) (xy 189.462736 -49.956447) + (xy 189.349468 -49.786929) (xy 189.271447 -49.598571) (xy 189.231673 -49.398612) (xy 189.231673 -49.194734) (xy 189.271447 -48.994775) + (xy 189.349468 -48.806417) (xy 189.462736 -48.636899) (xy 189.506674 -48.592961) (xy 189.506673 -40.606773) (xy 189.502997 -40.569451) + (xy 189.506673 -40.532129) (xy 189.506673 -40.532119) (xy 189.51767 -40.420466) (xy 189.552985 -40.304046) (xy 189.561127 -40.277205) + (xy 189.631699 -40.145175) (xy 189.663379 -40.106573) (xy 189.726672 -40.02945) (xy 189.755676 -40.005647) (xy 190.726924 -39.034399) + (xy 190.726924 -38.721017) (xy 190.611791 -38.797946) (xy 190.223245 -38.958887) (xy 189.810768 -39.040934) (xy 189.39021 -39.040934) + (xy 188.977733 -38.958887) (xy 188.589187 -38.797946) (xy 188.239506 -38.564297) (xy 187.942126 -38.266917) (xy 187.708477 -37.917236) + (xy 187.547536 -37.52869) (xy 187.465489 -37.116213) (xy 187.465489 -36.695655) (xy 187.547536 -36.283178) (xy 187.708477 -35.894632) + (xy 187.942126 -35.544951) (xy 188.239506 -35.247571) (xy 188.589187 -35.013922) (xy 188.977733 -34.852981) (xy 189.39021 -34.770934) + (xy 189.810768 -34.770934) (xy 190.223245 -34.852981) (xy 190.611791 -35.013922) (xy 190.961472 -35.247571) (xy 191.258852 -35.544951) + (xy 191.492501 -35.894632) (xy 191.653442 -36.283178) (xy 191.658391 -36.308056) (xy 193.453267 -36.308056) (xy 198.425603 -31.335719) + (xy 198.425602 -22.479859) (xy 198.337702 -22.407721) (xy 198.25835 -22.31103) (xy 198.199385 -22.200716) (xy 198.163075 -22.081018) + (xy 198.150815 -21.956536) (xy 198.150815 -21.231425) (xy 198.035682 -21.308354) (xy 197.647136 -21.469295) (xy 197.234659 -21.551342) + (xy 196.814101 -21.551342) (xy 196.401624 -21.469295) (xy 196.013078 -21.308354) (xy 195.663397 -21.074705) (xy 195.366017 -20.777325) + (xy 195.132368 -20.427644) (xy 194.971427 -20.039098) (xy 194.88938 -19.626621) (xy 194.88938 -19.206063) (xy 194.971427 -18.793586) + (xy 195.132368 -18.40504) (xy 195.366017 -18.055359) (xy 195.663397 -17.757979) (xy 196.013078 -17.52433) (xy 196.401624 -17.363389) + (xy 196.814101 -17.281342) (xy 197.234659 -17.281342) (xy 197.647136 -17.363389) (xy 198.035682 -17.52433) (xy 198.385363 -17.757979) + (xy 198.682743 -18.055359) (xy 198.916392 -18.40504) (xy 199.077333 -18.793586) (xy 199.082282 -18.818464) (xy 200.877158 -18.818464) + (xy 206.72778 -12.967841) (xy 206.727779 -5.105016) (xy 206.212779 -5.105016) (xy 206.088297 -5.092756) (xy 205.968599 -5.056446) + (xy 205.858285 -4.997481) (xy 205.761594 -4.918129) (xy 205.682242 -4.821438) (xy 205.623277 -4.711124) (xy 205.586967 -4.591426) + (xy 205.574707 -4.466944) (xy 205.574707 -3.741833) (xy 205.459574 -3.818762) (xy 205.071028 -3.979703) (xy 204.658551 -4.06175) + (xy 204.237993 -4.06175) (xy 203.825516 -3.979703) (xy 203.43697 -3.818762) (xy 203.087289 -3.585113) (xy 202.789909 -3.287733) + (xy 202.55626 -2.938052) (xy 202.395319 -2.549506) (xy 202.313272 -2.137029) (xy 202.313272 -1.716471) (xy 202.395319 -1.303994) + (xy 202.55626 -0.915448) (xy 202.789909 -0.565767) (xy 203.087289 -0.268387) (xy 203.43697 -0.034738) (xy 203.825516 0.126203) + (xy 204.237993 0.20825) (xy 204.658551 0.20825) (xy 205.071028 0.126203) (xy 205.459574 -0.034738) (xy 205.809255 -0.268387) + (xy 206.106635 -0.565767) (xy 206.276342 -0.819752) (xy 213.720314 -0.819752) (xy 213.720314 1.680248) (xy 213.732574 1.80473) + (xy 213.768884 1.924428) (xy 213.827849 2.034742) (xy 213.907201 2.131433) (xy 214.003892 2.210785) (xy 214.114206 2.26975) + (xy 214.233904 2.30606) (xy 214.358386 2.31832) (xy 214.97906 2.31832) (xy 214.998412 2.354524) (xy 215.055028 2.42351) + (xy 215.093386 2.470249) (xy 215.122384 2.494047) (xy 219.230549 6.602213) (xy 219.254347 6.631211) (xy 219.283345 6.655009) + (xy 219.370071 6.726184) (xy 219.500537 6.79592) (xy 219.502101 6.796756) (xy 219.645362 6.840213) (xy 219.757015 6.85121) + (xy 219.757025 6.85121) (xy 219.794348 6.854886) (xy 219.831671 6.85121) (xy 220.192699 6.85121) (xy 220.361061 7.103182) + (xy 220.582181 7.324302) (xy 220.84219 7.498034) (xy 221.131096 7.617703) (xy 221.437798 7.67871) (xy 221.750508 7.67871) + (xy 222.05721 7.617703) (xy 222.346116 7.498034) (xy 222.606125 7.324302) (xy 222.827245 7.103182) (xy 223.000977 6.843173) + (xy 223.018694 6.800401) (xy 223.03071 6.796756) (xy 223.162739 6.726184) (xy 223.278464 6.631211) (xy 223.300968 6.60379) + (xy 223.408222 6.61341) (xy 223.532592 6.600064) (xy 223.651968 6.56271) (xy 224.480423 6.211052) (xy 224.590219 6.151128) + (xy 224.686214 6.070935) (xy 224.76472 5.973555) (xy 224.822719 5.86273) (xy 224.857983 5.74272) (xy 224.869157 5.618136) + (xy 224.855811 5.493766) (xy 224.818457 5.37439) (xy 224.34958 4.269784) (xy 224.289656 4.159988) (xy 224.209463 4.063993) + (xy 224.112083 3.985487) (xy 224.001258 3.927488) (xy 223.881248 3.892224) (xy 223.756664 3.88105) (xy 223.632294 3.894396) + (xy 223.512918 3.93175) (xy 222.684463 4.283408) (xy 222.574667 4.343332) (xy 222.478672 4.423525) (xy 222.400166 4.520905) + (xy 222.342167 4.63173) (xy 222.328802 4.677214) (xy 222.05721 4.564717) (xy 221.750508 4.50371) (xy 221.437798 4.50371) + (xy 221.131096 4.564717) (xy 220.84219 4.684386) (xy 220.582181 4.858118) (xy 220.361061 5.079238) (xy 220.192699 5.33121) + (xy 220.10915 5.33121) (xy 218.364852 3.586912) (xy 225.333395 3.586912) (xy 225.346741 3.711282) (xy 225.384095 3.830658) + (xy 225.852972 4.935264) (xy 225.912896 5.04506) (xy 225.993089 5.141055) (xy 226.090469 5.219561) (xy 226.201294 5.27756) + (xy 226.321304 5.312824) (xy 226.445888 5.323998) (xy 226.570258 5.310652) (xy 226.689634 5.273298) (xy 227.518089 4.92164) + (xy 227.627885 4.861716) (xy 227.72388 4.781523) (xy 227.733524 4.76956) (xy 227.787579 4.813138) (xy 227.898404 4.871137) + (xy 228.018414 4.906401) (xy 228.142998 4.917575) (xy 228.267368 4.904229) (xy 228.386745 4.866875) (xy 230.023403 4.172155) + (xy 230.133198 4.112231) (xy 230.229193 4.032038) (xy 230.307699 3.934658) (xy 230.365698 3.823833) (xy 230.400962 3.703823) + (xy 230.412136 3.579239) (xy 230.39879 3.454869) (xy 230.361436 3.335492) (xy 229.666716 1.698834) (xy 229.606792 1.589039) + (xy 229.526599 1.493044) (xy 229.429219 1.414538) (xy 229.318394 1.356539) (xy 229.198384 1.321275) (xy 229.0738 1.310101) + (xy 228.94943 1.323447) (xy 228.830053 1.360801) (xy 227.193395 2.055521) (xy 227.0836 2.115445) (xy 226.987605 2.195638) + (xy 226.909099 2.293018) (xy 226.8511 2.403843) (xy 226.815836 2.523853) (xy 226.809633 2.593011) (xy 226.79433 2.591638) + (xy 226.66996 2.604984) (xy 226.550584 2.642338) (xy 225.722129 2.993996) (xy 225.612333 3.05392) (xy 225.516338 3.134113) + (xy 225.437832 3.231493) (xy 225.379833 3.342318) (xy 225.344569 3.462328) (xy 225.333395 3.586912) (xy 218.364852 3.586912) + (xy 218.229795 3.451855) (xy 218.325107 3.470814) (xy 218.617803 3.470814) (xy 218.904876 3.413712) (xy 219.175293 3.301702) + (xy 219.418661 3.139088) (xy 219.625629 2.93212) (xy 219.788243 2.688752) (xy 219.900253 2.418335) (xy 219.957355 2.131262) + (xy 219.957355 1.838566) (xy 219.900253 1.551493) (xy 219.788243 1.281076) (xy 219.635505 1.052488) (xy 219.659341 1.042615) + (xy 220.009022 0.808966) (xy 220.306402 0.511586) (xy 220.51872 0.193829) (xy 220.51872 0.258924) (xy 220.619747 0.766822) + (xy 220.817919 1.245251) (xy 221.10562 1.675826) (xy 221.471794 2.042) (xy 221.902369 2.329701) (xy 222.380798 2.527873) + (xy 222.888696 2.6289) (xy 223.406544 2.6289) (xy 223.914442 2.527873) (xy 224.392871 2.329701) (xy 224.823446 2.042) + (xy 225.18962 1.675826) (xy 225.477321 1.245251) (xy 225.675493 0.766822) (xy 225.77652 0.258924) (xy 225.77652 -0.258924) + (xy 225.675493 -0.766822) (xy 225.477321 -1.245251) (xy 225.18962 -1.675826) (xy 224.823446 -2.042) (xy 224.689856 -2.131262) + (xy 226.337885 -2.131262) (xy 226.337885 -1.838566) (xy 226.394987 -1.551493) (xy 226.506997 -1.281076) (xy 226.669611 -1.037708) + (xy 226.876579 -0.83074) (xy 227.119947 -0.668126) (xy 227.390364 -0.556116) (xy 227.677437 -0.499014) (xy 227.970133 -0.499014) + (xy 228.257206 -0.556116) (xy 228.527623 -0.668126) (xy 228.770991 -0.83074) (xy 228.977959 -1.037708) (xy 229.140573 -1.281076) + (xy 229.252583 -1.551493) (xy 229.309685 -1.838566) (xy 229.309685 -2.131262) (xy 229.252583 -2.418335) (xy 229.140573 -2.688752) + (xy 228.977959 -2.93212) (xy 228.770991 -3.139088) (xy 228.527623 -3.301702) (xy 228.257206 -3.413712) (xy 227.970133 -3.470814) + (xy 227.677437 -3.470814) (xy 227.390364 -3.413712) (xy 227.119947 -3.301702) (xy 226.876579 -3.139088) (xy 226.669611 -2.93212) + (xy 226.506997 -2.688752) (xy 226.394987 -2.418335) (xy 226.337885 -2.131262) (xy 224.689856 -2.131262) (xy 224.392871 -2.329701) + (xy 223.914442 -2.527873) (xy 223.406544 -2.6289) (xy 222.888696 -2.6289) (xy 222.380798 -2.527873) (xy 221.902369 -2.329701) + (xy 221.471794 -2.042) (xy 221.10562 -1.675826) (xy 220.817919 -1.245251) (xy 220.769417 -1.128157) (xy 220.700992 -1.472153) + (xy 220.540051 -1.860699) (xy 220.306402 -2.21038) (xy 220.009022 -2.50776) (xy 219.659341 -2.741409) (xy 219.270795 -2.90235) + (xy 218.858318 -2.984397) (xy 218.43776 -2.984397) (xy 218.025283 -2.90235) (xy 217.636737 -2.741409) (xy 217.287056 -2.50776) + (xy 216.989676 -2.21038) (xy 216.756027 -1.860699) (xy 216.595086 -1.472153) (xy 216.592236 -1.457824) (xy 214.358386 -1.457824) + (xy 214.233904 -1.445564) (xy 214.114206 -1.409254) (xy 214.003892 -1.350289) (xy 213.907201 -1.270937) (xy 213.827849 -1.174246) + (xy 213.768884 -1.063932) (xy 213.732574 -0.944234) (xy 213.720314 -0.819752) (xy 206.276342 -0.819752) (xy 206.340284 -0.915448) + (xy 206.501225 -1.303994) (xy 206.506174 -1.328872) (xy 208.762779 -1.328872) (xy 208.887261 -1.341132) (xy 209.006959 -1.377442) + (xy 209.117273 -1.436407) (xy 209.213964 -1.515759) (xy 209.293316 -1.61245) (xy 209.352281 -1.722764) (xy 209.388591 -1.842462) + (xy 209.400851 -1.966944) (xy 209.400851 -4.466944) (xy 209.388591 -4.591426) (xy 209.352281 -4.711124) (xy 209.293316 -4.821438) + (xy 209.213964 -4.918129) (xy 209.117273 -4.997481) (xy 209.006959 -5.056446) (xy 208.887261 -5.092756) (xy 208.762779 -5.105016) + (xy 208.247779 -5.105016) (xy 208.247779 -13.245319) (xy 208.251455 -13.282644) (xy 208.247779 -13.319969) (xy 208.247779 -13.319977) + (xy 208.236782 -13.43163) (xy 208.193325 -13.574891) (xy 208.122753 -13.70692) (xy 208.02778 -13.822645) (xy 207.998782 -13.846443) + (xy 206.504254 -15.340971) (xy 206.580001 -15.278807) (xy 206.690315 -15.219842) (xy 206.810013 -15.183532) (xy 206.934495 -15.171272) + (xy 207.555169 -15.171272) (xy 207.574521 -15.135068) (xy 207.631137 -15.066082) (xy 207.669495 -15.019343) (xy 207.698493 -14.995545) + (xy 211.806658 -10.887379) (xy 211.830456 -10.858381) (xy 211.859454 -10.834583) (xy 211.94618 -10.763408) (xy 212.076646 -10.693672) + (xy 212.07821 -10.692836) (xy 212.221471 -10.649379) (xy 212.333124 -10.638382) (xy 212.333134 -10.638382) (xy 212.370457 -10.634706) + (xy 212.40778 -10.638382) (xy 212.768807 -10.638382) (xy 212.937169 -10.38641) (xy 213.158289 -10.16529) (xy 213.418298 -9.991558) + (xy 213.707204 -9.871889) (xy 214.013906 -9.810882) (xy 214.326616 -9.810882) (xy 214.633318 -9.871889) (xy 214.922224 -9.991558) + (xy 215.182233 -10.16529) (xy 215.403353 -10.38641) (xy 215.577085 -10.646419) (xy 215.594802 -10.689191) (xy 215.606818 -10.692836) + (xy 215.738847 -10.763408) (xy 215.854572 -10.858381) (xy 215.877076 -10.885802) (xy 215.98433 -10.876182) (xy 216.1087 -10.889528) + (xy 216.228076 -10.926882) (xy 217.056531 -11.27854) (xy 217.166327 -11.338464) (xy 217.262322 -11.418657) (xy 217.340828 -11.516037) + (xy 217.398827 -11.626862) (xy 217.434091 -11.746872) (xy 217.445265 -11.871456) (xy 217.431919 -11.995826) (xy 217.394565 -12.115202) + (xy 216.925688 -13.219808) (xy 216.865764 -13.329604) (xy 216.785571 -13.425599) (xy 216.688191 -13.504105) (xy 216.577366 -13.562104) + (xy 216.457356 -13.597368) (xy 216.332772 -13.608542) (xy 216.208402 -13.595196) (xy 216.089026 -13.557842) (xy 215.260571 -13.206184) + (xy 215.150775 -13.14626) (xy 215.05478 -13.066067) (xy 214.976274 -12.968687) (xy 214.918275 -12.857862) (xy 214.90491 -12.812378) + (xy 214.633318 -12.924875) (xy 214.326616 -12.985882) (xy 214.013906 -12.985882) (xy 213.707204 -12.924875) (xy 213.418298 -12.805206) + (xy 213.158289 -12.631474) (xy 212.937169 -12.410354) (xy 212.768807 -12.158382) (xy 212.685259 -12.158382) (xy 210.805904 -14.037737) + (xy 210.901216 -14.018778) (xy 211.193912 -14.018778) (xy 211.480985 -14.07588) (xy 211.751402 -14.18789) (xy 211.99477 -14.350504) + (xy 212.201738 -14.557472) (xy 212.364352 -14.80084) (xy 212.476362 -15.071257) (xy 212.533464 -15.35833) (xy 212.533464 -15.651026) + (xy 212.476362 -15.938099) (xy 212.364352 -16.208516) (xy 212.211614 -16.437104) (xy 212.23545 -16.446977) (xy 212.585131 -16.680626) + (xy 212.882511 -16.978006) (xy 213.094829 -17.295763) (xy 213.094829 -17.230668) (xy 213.195856 -16.72277) (xy 213.394028 -16.244341) + (xy 213.681729 -15.813766) (xy 214.047903 -15.447592) (xy 214.478478 -15.159891) (xy 214.956907 -14.961719) (xy 215.464805 -14.860692) + (xy 215.982653 -14.860692) (xy 216.490551 -14.961719) (xy 216.96898 -15.159891) (xy 217.399555 -15.447592) (xy 217.765729 -15.813766) + (xy 218.05343 -16.244341) (xy 218.251602 -16.72277) (xy 218.352629 -17.230668) (xy 218.352629 -17.748516) (xy 218.251602 -18.256414) + (xy 218.05343 -18.734843) (xy 217.765729 -19.165418) (xy 217.399555 -19.531592) (xy 216.96898 -19.819293) (xy 216.490551 -20.017465) + (xy 215.982653 -20.118492) (xy 215.464805 -20.118492) (xy 214.956907 -20.017465) (xy 214.478478 -19.819293) (xy 214.047903 -19.531592) + (xy 213.681729 -19.165418) (xy 213.394028 -18.734843) (xy 213.345526 -18.617749) (xy 213.277101 -18.961745) (xy 213.11616 -19.350291) + (xy 212.882511 -19.699972) (xy 212.585131 -19.997352) (xy 212.23545 -20.231001) (xy 211.846904 -20.391942) (xy 211.434427 -20.473989) + (xy 211.013869 -20.473989) (xy 210.601392 -20.391942) (xy 210.212846 -20.231001) (xy 209.863165 -19.997352) (xy 209.565785 -19.699972) + (xy 209.332136 -19.350291) (xy 209.171195 -18.961745) (xy 209.168345 -18.947416) (xy 206.934495 -18.947416) (xy 206.810013 -18.935156) + (xy 206.690315 -18.898846) (xy 206.580001 -18.839881) (xy 206.48331 -18.760529) (xy 206.403958 -18.663838) (xy 206.344993 -18.553524) + (xy 206.308683 -18.433826) (xy 206.296423 -18.309344) (xy 206.296423 -15.809344) (xy 206.308683 -15.684862) (xy 206.344993 -15.565164) + (xy 206.403958 -15.45485) (xy 206.466122 -15.379103) (xy 201.976959 -19.868265) (xy 201.976959 -21.956536) (xy 201.964699 -22.081018) + (xy 201.928389 -22.200716) (xy 201.869424 -22.31103) (xy 201.790072 -22.407721) (xy 201.693381 -22.487073) (xy 201.583067 -22.546038) + (xy 201.463369 -22.582348) (xy 201.338887 -22.594608) (xy 199.945602 -22.594608) (xy 199.945602 -31.613197) (xy 199.949278 -31.650522) + (xy 199.945602 -31.687847) (xy 199.945602 -31.687855) (xy 199.934605 -31.799508) (xy 199.891148 -31.942769) (xy 199.820576 -32.074798) + (xy 199.725603 -32.190523) (xy 199.696605 -32.214321) (xy 199.080368 -32.830558) (xy 199.156109 -32.768399) (xy 199.266423 -32.709434) + (xy 199.386121 -32.673124) (xy 199.510603 -32.660864) (xy 200.131277 -32.660864) (xy 200.150629 -32.62466) (xy 200.207245 -32.555674) + (xy 200.245603 -32.508935) (xy 200.274601 -32.485137) (xy 204.382766 -28.376971) (xy 204.406564 -28.347973) (xy 204.435562 -28.324175) + (xy 204.522288 -28.253) (xy 204.652754 -28.183264) (xy 204.654318 -28.182428) (xy 204.797579 -28.138971) (xy 204.909232 -28.127974) + (xy 204.909242 -28.127974) (xy 204.946565 -28.124298) (xy 204.983888 -28.127974) (xy 205.344916 -28.127974) (xy 205.513278 -27.876002) + (xy 205.734398 -27.654882) (xy 205.994407 -27.48115) (xy 206.283313 -27.361481) (xy 206.590015 -27.300474) (xy 206.902725 -27.300474) + (xy 207.209427 -27.361481) (xy 207.498333 -27.48115) (xy 207.758342 -27.654882) (xy 207.979462 -27.876002) (xy 208.153194 -28.136011) + (xy 208.170911 -28.178783) (xy 208.182927 -28.182428) (xy 208.314956 -28.253) (xy 208.430681 -28.347973) (xy 208.453185 -28.375394) + (xy 208.560439 -28.365774) (xy 208.684809 -28.37912) (xy 208.804185 -28.416474) (xy 209.63264 -28.768132) (xy 209.742436 -28.828056) + (xy 209.838431 -28.908249) (xy 209.916937 -29.005629) (xy 209.974936 -29.116454) (xy 210.0102 -29.236464) (xy 210.021374 -29.361048) + (xy 210.008028 -29.485418) (xy 209.970674 -29.604794) (xy 209.501797 -30.7094) (xy 209.441873 -30.819196) (xy 209.36168 -30.915191) + (xy 209.2643 -30.993697) (xy 209.153475 -31.051696) (xy 209.033465 -31.08696) (xy 208.908881 -31.098134) (xy 208.784511 -31.084788) + (xy 208.665135 -31.047434) (xy 207.83668 -30.695776) (xy 207.726884 -30.635852) (xy 207.630889 -30.555659) (xy 207.552383 -30.458279) + (xy 207.494384 -30.347454) (xy 207.481019 -30.30197) (xy 207.209427 -30.414467) (xy 206.902725 -30.475474) (xy 206.590015 -30.475474) + (xy 206.283313 -30.414467) (xy 205.994407 -30.294798) (xy 205.734398 -30.121066) (xy 205.513278 -29.899946) (xy 205.344916 -29.647974) + (xy 205.261367 -29.647974) (xy 203.382012 -31.527329) (xy 203.477324 -31.50837) (xy 203.77002 -31.50837) (xy 204.057093 -31.565472) + (xy 204.32751 -31.677482) (xy 204.570878 -31.840096) (xy 204.777846 -32.047064) (xy 204.94046 -32.290432) (xy 205.05247 -32.560849) + (xy 205.109572 -32.847922) (xy 205.109572 -33.140618) (xy 205.05247 -33.427691) (xy 204.94046 -33.698108) (xy 204.787722 -33.926696) + (xy 204.811558 -33.936569) (xy 205.161239 -34.170218) (xy 205.458619 -34.467598) (xy 205.670937 -34.785355) (xy 205.670937 -34.72026) + (xy 205.771964 -34.212362) (xy 205.970136 -33.733933) (xy 206.257837 -33.303358) (xy 206.624011 -32.937184) (xy 207.054586 -32.649483) + (xy 207.533015 -32.451311) (xy 208.040913 -32.350284) (xy 208.558761 -32.350284) (xy 209.066659 -32.451311) (xy 209.545088 -32.649483) + (xy 209.975663 -32.937184) (xy 210.341837 -33.303358) (xy 210.629538 -33.733933) (xy 210.82771 -34.212362) (xy 210.928737 -34.72026) + (xy 210.928737 -35.238108) (xy 210.82771 -35.746006) (xy 210.629538 -36.224435) (xy 210.341837 -36.65501) (xy 209.975663 -37.021184) + (xy 209.545088 -37.308885) (xy 209.066659 -37.507057) (xy 208.558761 -37.608084) (xy 208.040913 -37.608084) (xy 207.533015 -37.507057) + (xy 207.054586 -37.308885) (xy 206.624011 -37.021184) (xy 206.257837 -36.65501) (xy 205.970136 -36.224435) (xy 205.921634 -36.107341) + (xy 205.853209 -36.451337) (xy 205.692268 -36.839883) (xy 205.458619 -37.189564) (xy 205.161239 -37.486944) (xy 204.811558 -37.720593) + (xy 204.423012 -37.881534) (xy 204.010535 -37.963581) (xy 203.589977 -37.963581) (xy 203.1775 -37.881534) (xy 202.788954 -37.720593) + (xy 202.439273 -37.486944) (xy 202.141893 -37.189564) (xy 201.908244 -36.839883) (xy 201.747303 -36.451337) (xy 201.744453 -36.437008) + (xy 199.510603 -36.437008) (xy 199.386121 -36.424748) (xy 199.266423 -36.388438) (xy 199.156109 -36.329473) (xy 199.059418 -36.250121) + (xy 198.980066 -36.15343) (xy 198.921101 -36.043116) (xy 198.884791 -35.923418) (xy 198.872531 -35.798936) (xy 198.872531 -33.298936) + (xy 198.884791 -33.174454) (xy 198.921101 -33.054756) (xy 198.980066 -32.944442) (xy 199.042225 -32.868701) (xy 194.553068 -37.357857) + (xy 194.553068 -39.446128) (xy 194.540808 -39.57061) (xy 194.504498 -39.690308) (xy 194.445533 -39.800622) (xy 194.366181 -39.897313) + (xy 194.26949 -39.976665) (xy 194.159176 -40.03563) (xy 194.039478 -40.07194) (xy 193.914996 -40.0842) (xy 191.826725 -40.0842) + (xy 191.026673 -40.884252) (xy 191.026673 -48.592962) (xy 191.07061 -48.636899) (xy 191.183878 -48.806417) (xy 191.261899 -48.994775) + (xy 191.301673 -49.194734) (xy 191.301673 -49.398612) (xy 191.261899 -49.598571) (xy 191.183878 -49.786929) (xy 191.07061 -49.956447) + (xy 191.026673 -50.000384) (xy 191.026673 -50.59783) (xy 191.030349 -50.635153) (xy 191.026673 -50.672476) (xy 191.026673 -50.672485) + (xy 191.015676 -50.784138) (xy 190.972219 -50.927399) (xy 190.901647 -51.059428) (xy 190.806674 -51.175153) (xy 190.777676 -51.198951) + (xy 188.688098 -53.288529) (xy 191.44864 -53.288529) (xy 191.44864 -50.788529) (xy 191.4609 -50.664047) (xy 191.49721 -50.544349) + (xy 191.556175 -50.434035) (xy 191.635527 -50.337344) (xy 191.732218 -50.257992) (xy 191.842532 -50.199027) (xy 191.96223 -50.162717) + (xy 192.086712 -50.150457) (xy 192.707386 -50.150457) (xy 192.726738 -50.114253) (xy 192.788931 -50.038472) (xy 192.821712 -49.998528) + (xy 192.85071 -49.97473) (xy 196.958876 -45.866563) (xy 196.982674 -45.837565) (xy 197.098399 -45.742592) (xy 197.230428 -45.67202) + (xy 197.373689 -45.628563) (xy 197.485342 -45.617566) (xy 197.485351 -45.617566) (xy 197.522674 -45.61389) (xy 197.559997 -45.617566) + (xy 197.921025 -45.617566) (xy 198.089387 -45.365594) (xy 198.310507 -45.144474) (xy 198.570516 -44.970742) (xy 198.859422 -44.851073) + (xy 199.166124 -44.790066) (xy 199.478834 -44.790066) (xy 199.785536 -44.851073) (xy 200.074442 -44.970742) (xy 200.334451 -45.144474) + (xy 200.555571 -45.365594) (xy 200.729303 -45.625603) (xy 200.74702 -45.668375) (xy 200.759036 -45.67202) (xy 200.891065 -45.742592) + (xy 201.00679 -45.837565) (xy 201.029294 -45.864986) (xy 201.136548 -45.855366) (xy 201.260918 -45.868712) (xy 201.380294 -45.906066) + (xy 202.208749 -46.257724) (xy 202.318545 -46.317648) (xy 202.41454 -46.397841) (xy 202.493046 -46.495221) (xy 202.551045 -46.606046) + (xy 202.586309 -46.726056) (xy 202.597483 -46.85064) (xy 202.584137 -46.97501) (xy 202.546783 -47.094386) (xy 202.077906 -48.198992) + (xy 202.017982 -48.308788) (xy 201.937789 -48.404783) (xy 201.840409 -48.483289) (xy 201.729584 -48.541288) (xy 201.609574 -48.576552) + (xy 201.48499 -48.587726) (xy 201.36062 -48.57438) (xy 201.241244 -48.537026) (xy 200.412789 -48.185368) (xy 200.302993 -48.125444) + (xy 200.206998 -48.045251) (xy 200.128492 -47.947871) (xy 200.070493 -47.837046) (xy 200.057128 -47.791562) (xy 199.785536 -47.904059) + (xy 199.478834 -47.965066) (xy 199.166124 -47.965066) (xy 198.859422 -47.904059) (xy 198.570516 -47.78439) (xy 198.310507 -47.610658) + (xy 198.089387 -47.389538) (xy 197.921025 -47.137566) (xy 197.837477 -47.137566) (xy 195.958121 -49.016922) (xy 196.053433 -48.997963) + (xy 196.346129 -48.997963) (xy 196.633202 -49.055065) (xy 196.903619 -49.167075) (xy 197.146987 -49.329689) (xy 197.353955 -49.536657) + (xy 197.516569 -49.780025) (xy 197.628579 -50.050442) (xy 197.685681 -50.337515) (xy 197.685681 -50.630211) (xy 197.628579 -50.917284) + (xy 197.516569 -51.187701) (xy 197.363831 -51.416289) (xy 197.387667 -51.426162) (xy 197.737348 -51.659811) (xy 198.034728 -51.957191) + (xy 198.247046 -52.274948) (xy 198.247046 -52.209853) (xy 198.348073 -51.701955) (xy 198.546245 -51.223526) (xy 198.833946 -50.792951) + (xy 199.20012 -50.426777) (xy 199.630695 -50.139076) (xy 200.109124 -49.940904) (xy 200.617022 -49.839877) (xy 201.13487 -49.839877) + (xy 201.642768 -49.940904) (xy 202.121197 -50.139076) (xy 202.551772 -50.426777) (xy 202.917946 -50.792951) (xy 203.205647 -51.223526) + (xy 203.403819 -51.701955) (xy 203.504846 -52.209853) (xy 203.504846 -52.727701) (xy 203.403819 -53.235599) (xy 203.205647 -53.714028) + (xy 202.917946 -54.144603) (xy 202.551772 -54.510777) (xy 202.121197 -54.798478) (xy 201.642768 -54.99665) (xy 201.13487 -55.097677) + (xy 200.617022 -55.097677) (xy 200.109124 -54.99665) (xy 199.630695 -54.798478) (xy 199.20012 -54.510777) (xy 198.833946 -54.144603) + (xy 198.546245 -53.714028) (xy 198.497743 -53.596934) (xy 198.429318 -53.94093) (xy 198.268377 -54.329476) (xy 198.034728 -54.679157) + (xy 197.737348 -54.976537) (xy 197.387667 -55.210186) (xy 196.999121 -55.371127) (xy 196.586644 -55.453174) (xy 196.166086 -55.453174) + (xy 195.753609 -55.371127) (xy 195.365063 -55.210186) (xy 195.015382 -54.976537) (xy 194.718002 -54.679157) (xy 194.484353 -54.329476) + (xy 194.323412 -53.94093) (xy 194.320562 -53.926601) (xy 192.086712 -53.926601) (xy 191.96223 -53.914341) (xy 191.842532 -53.878031) + (xy 191.732218 -53.819066) (xy 191.635527 -53.739714) (xy 191.556175 -53.643023) (xy 191.49721 -53.532709) (xy 191.4609 -53.413011) + (xy 191.44864 -53.288529) (xy 188.688098 -53.288529) (xy 187.129176 -54.84745) (xy 187.129176 -56.935721) (xy 187.116916 -57.060203) + (xy 187.080606 -57.179901) (xy 187.021641 -57.290215) (xy 186.942289 -57.386906) (xy 186.845598 -57.466258) (xy 186.735284 -57.525223) + (xy 186.615586 -57.561533) (xy 186.491104 -57.573793) (xy 183.941104 -57.573793) (xy 183.816622 -57.561533) (xy 183.696924 -57.525223) + (xy 183.58661 -57.466258) (xy 183.489919 -57.386906) (xy 183.410567 -57.290215) (xy 183.351602 -57.179901) (xy 183.315292 -57.060203) + (xy 183.303032 -56.935721) (xy 183.303032 -56.21061) (xy 183.187899 -56.287539) (xy 182.799353 -56.44848) (xy 182.386876 -56.530527) + (xy 181.966318 -56.530527) (xy 181.553841 -56.44848) (xy 181.165295 -56.287539) (xy 180.815614 -56.05389) (xy 180.518234 -55.75651) + (xy 180.284585 -55.406829) (xy 180.123644 -55.018283) (xy 180.041597 -54.605806) (xy 167.449975 -54.605806) (xy 167.40235 -54.64489) + (xy 167.292036 -54.703855) (xy 167.172338 -54.740165) (xy 167.047856 -54.752425) (xy 164.497856 -54.752425) (xy 164.373374 -54.740165) + (xy 164.253676 -54.703855) (xy 164.143362 -54.64489) (xy 164.046671 -54.565538) (xy 163.967319 -54.468847) (xy 163.908354 -54.358533) + (xy 163.872044 -54.238835) (xy 163.859784 -54.114353) (xy 163.859784 -53.389242) (xy 163.744651 -53.466171) (xy 163.356105 -53.627112) + (xy 162.943628 -53.709159) (xy 162.52307 -53.709159) (xy 162.110593 -53.627112) (xy 161.722047 -53.466171) (xy 161.372366 -53.232522) + (xy 161.074986 -52.935142) (xy 160.841337 -52.585461) (xy 160.680396 -52.196915) (xy 160.598349 -51.784438) (xy 152.45406 -51.784438) + (xy 167.879 -58.331935) (xy 167.971338 -58.347678) (xy 199.094114 -58.347678) (xy 199.094114 -57.92712) (xy 199.176161 -57.514643) + (xy 199.337102 -57.126097) (xy 199.570751 -56.776416) (xy 199.868131 -56.479036) (xy 200.217812 -56.245387) (xy 200.606358 -56.084446) + (xy 201.018835 -56.002399) (xy 201.439393 -56.002399) (xy 201.85187 -56.084446) (xy 202.240416 -56.245387) (xy 202.590097 -56.479036) + (xy 202.887477 -56.776416) (xy 203.121126 -57.126097) (xy 203.282067 -57.514643) (xy 203.287016 -57.539521) (xy 203.61621 -57.539521) + (xy 203.61621 -56.489921) (xy 203.572273 -56.445984) (xy 203.459005 -56.276466) (xy 203.380984 -56.088108) (xy 203.34121 -55.888149) + (xy 203.34121 -55.684271) (xy 203.380984 -55.484312) (xy 203.459005 -55.295954) (xy 203.572273 -55.126436) (xy 203.616211 -55.082498) + (xy 203.61621 -53.471113) (xy 203.612534 -53.43379) (xy 203.61621 -53.396468) (xy 203.61621 -53.396458) (xy 203.627207 -53.284805) + (xy 203.643067 -53.232522) (xy 203.670664 -53.141544) (xy 203.741236 -53.009514) (xy 203.770203 -52.974218) (xy 203.836209 -52.893789) + (xy 203.865213 -52.869986) (xy 205.904696 -50.830503) (xy 204.921721 -50.413255) (xy 204.811926 -50.353331) (xy 204.715931 -50.273138) + (xy 204.637425 -50.175758) (xy 204.579426 -50.064933) (xy 204.544162 -49.944923) (xy 204.537959 -49.875765) (xy 204.522656 -49.877138) + (xy 204.398286 -49.863792) (xy 204.27891 -49.826438) (xy 203.450455 -49.47478) (xy 203.340659 -49.414856) (xy 203.244664 -49.334663) + (xy 203.166158 -49.237283) (xy 203.108159 -49.126458) (xy 203.072895 -49.006448) (xy 203.061721 -48.881864) (xy 203.075067 -48.757494) + (xy 203.112421 -48.638118) (xy 203.581298 -47.533512) (xy 203.641222 -47.423716) (xy 203.721415 -47.327721) (xy 203.818795 -47.249215) + (xy 203.92962 -47.191216) (xy 204.04963 -47.155952) (xy 204.174214 -47.144778) (xy 204.298584 -47.158124) (xy 204.41796 -47.195478) + (xy 205.246415 -47.547136) (xy 205.356211 -47.60706) (xy 205.452206 -47.687253) (xy 205.46185 -47.699216) (xy 205.515905 -47.655638) + (xy 205.62673 -47.597639) (xy 205.74674 -47.562375) (xy 205.871324 -47.551201) (xy 205.995694 -47.564547) (xy 206.115071 -47.601901) + (xy 207.751729 -48.296621) (xy 207.861524 -48.356545) (xy 207.957519 -48.436738) (xy 208.036025 -48.534118) (xy 208.092729 -48.642469) + (xy 210.932513 -45.802685) (xy 210.932512 -43.826072) (xy 210.417512 -43.826072) (xy 210.29303 -43.813812) (xy 210.173332 -43.777502) + (xy 210.063018 -43.718537) (xy 209.966327 -43.639185) (xy 209.886975 -43.542494) (xy 209.82801 -43.43218) (xy 209.7917 -43.312482) + (xy 209.77944 -43.188) (xy 209.77944 -42.462889) (xy 209.664307 -42.539818) (xy 209.275761 -42.700759) (xy 208.863284 -42.782806) + (xy 208.442726 -42.782806) (xy 208.030249 -42.700759) (xy 207.641703 -42.539818) (xy 207.292022 -42.306169) (xy 206.994642 -42.008789) + (xy 206.760993 -41.659108) (xy 206.600052 -41.270562) (xy 206.518005 -40.858085) (xy 206.518005 -40.437527) (xy 206.600052 -40.02505) + (xy 206.760993 -39.636504) (xy 206.994642 -39.286823) (xy 207.292022 -38.989443) (xy 207.641703 -38.755794) (xy 208.030249 -38.594853) + (xy 208.442726 -38.512806) (xy 208.863284 -38.512806) (xy 209.275761 -38.594853) (xy 209.664307 -38.755794) (xy 210.013988 -38.989443) + (xy 210.311368 -39.286823) (xy 210.545017 -39.636504) (xy 210.705958 -40.02505) (xy 210.710907 -40.049928) (xy 211.040102 -40.049928) + (xy 211.040101 -35.959478) (xy 211.036425 -35.922155) (xy 211.040101 -35.884833) (xy 211.040101 -35.884823) (xy 211.051098 -35.77317) + (xy 211.08757 -35.652937) (xy 211.094555 -35.629909) (xy 211.165127 -35.497879) (xy 211.181279 -35.478198) (xy 211.2601 -35.382154) + (xy 211.289104 -35.358351) (xy 213.313112 -33.334342) (xy 212.345612 -32.923663) (xy 212.235817 -32.863739) (xy 212.139822 -32.783546) + (xy 212.061316 -32.686166) (xy 212.003317 -32.575341) (xy 211.968053 -32.455331) (xy 211.96185 -32.386173) (xy 211.946547 -32.387546) + (xy 211.822177 -32.3742) (xy 211.702801 -32.336846) (xy 210.874346 -31.985188) (xy 210.76455 -31.925264) (xy 210.668555 -31.845071) + (xy 210.590049 -31.747691) (xy 210.53205 -31.636866) (xy 210.496786 -31.516856) (xy 210.485612 -31.392272) (xy 210.498958 -31.267902) + (xy 210.536312 -31.148526) (xy 211.005189 -30.04392) (xy 211.065113 -29.934124) (xy 211.145306 -29.838129) (xy 211.242686 -29.759623) + (xy 211.353511 -29.701624) (xy 211.473521 -29.66636) (xy 211.598105 -29.655186) (xy 211.722475 -29.668532) (xy 211.841851 -29.705886) + (xy 212.670306 -30.057544) (xy 212.780102 -30.117468) (xy 212.876097 -30.197661) (xy 212.885741 -30.209624) (xy 212.939796 -30.166046) + (xy 213.050621 -30.108047) (xy 213.170631 -30.072783) (xy 213.295215 -30.061609) (xy 213.419585 -30.074955) (xy 213.538962 -30.112309) + (xy 215.17562 -30.807029) (xy 215.285415 -30.866953) (xy 215.38141 -30.947146) (xy 215.459916 -31.044526) (xy 215.509048 -31.138407) + (xy 218.356405 -28.291049) (xy 218.356404 -26.33648) (xy 217.841404 -26.33648) (xy 217.716922 -26.32422) (xy 217.597224 -26.28791) + (xy 217.48691 -26.228945) (xy 217.390219 -26.149593) (xy 217.310867 -26.052902) (xy 217.251902 -25.942588) (xy 217.215592 -25.82289) + (xy 217.203332 -25.698408) (xy 217.203332 -24.973297) (xy 217.088199 -25.050226) (xy 216.699653 -25.211167) (xy 216.287176 -25.293214) + (xy 215.866618 -25.293214) (xy 215.454141 -25.211167) (xy 215.065595 -25.050226) (xy 214.715914 -24.816577) (xy 214.418534 -24.519197) + (xy 214.184885 -24.169516) (xy 214.023944 -23.78097) (xy 213.941897 -23.368493) (xy 213.941897 -22.947935) (xy 214.023944 -22.535458) + (xy 214.184885 -22.146912) (xy 214.418534 -21.797231) (xy 214.715914 -21.499851) (xy 215.065595 -21.266202) (xy 215.454141 -21.105261) + (xy 215.866618 -21.023214) (xy 216.287176 -21.023214) (xy 216.699653 -21.105261) (xy 217.088199 -21.266202) (xy 217.43788 -21.499851) + (xy 217.73526 -21.797231) (xy 217.968909 -22.146912) (xy 218.12985 -22.535458) (xy 218.134799 -22.560336) (xy 218.463994 -22.560336) + (xy 218.463993 -18.469885) (xy 218.460317 -18.432562) (xy 218.463993 -18.39524) (xy 218.463993 -18.39523) (xy 218.47499 -18.283577) + (xy 218.518447 -18.140316) (xy 218.589019 -18.008286) (xy 218.61163 -17.980735) (xy 218.683992 -17.892561) (xy 218.712996 -17.868758) + (xy 220.737003 -15.84475) (xy 219.769503 -15.434071) (xy 219.659708 -15.374147) (xy 219.563713 -15.293954) (xy 219.485207 -15.196574) + (xy 219.427208 -15.085749) (xy 219.391944 -14.965739) (xy 219.385741 -14.896581) (xy 219.370438 -14.897954) (xy 219.246068 -14.884608) + (xy 219.126692 -14.847254) (xy 218.298237 -14.495596) (xy 218.188441 -14.435672) (xy 218.092446 -14.355479) (xy 218.01394 -14.258099) + (xy 217.955941 -14.147274) (xy 217.920677 -14.027264) (xy 217.909503 -13.90268) (xy 217.922849 -13.77831) (xy 217.960203 -13.658934) + (xy 218.42908 -12.554328) (xy 218.489004 -12.444532) (xy 218.569197 -12.348537) (xy 218.666577 -12.270031) (xy 218.777402 -12.212032) + (xy 218.897412 -12.176768) (xy 219.021996 -12.165594) (xy 219.146366 -12.17894) (xy 219.265742 -12.216294) (xy 220.094197 -12.567952) + (xy 220.203993 -12.627876) (xy 220.299988 -12.708069) (xy 220.309632 -12.720032) (xy 220.363687 -12.676454) (xy 220.474512 -12.618455) + (xy 220.594522 -12.583191) (xy 220.719106 -12.572017) (xy 220.843476 -12.585363) (xy 220.962853 -12.622717) (xy 222.599511 -13.317437) + (xy 222.709306 -13.377361) (xy 222.805301 -13.457554) (xy 222.883807 -13.554934) (xy 222.932939 -13.648815) (xy 225.780296 -10.801457) + (xy 225.780295 -8.846888) (xy 225.265295 -8.846888) (xy 225.140813 -8.834628) (xy 225.021115 -8.798318) (xy 224.910801 -8.739353) + (xy 224.81411 -8.660001) (xy 224.734758 -8.56331) (xy 224.675793 -8.452996) (xy 224.639483 -8.333298) (xy 224.627223 -8.208816) + (xy 224.627223 -7.483705) (xy 224.51209 -7.560634) (xy 224.123544 -7.721575) (xy 223.711067 -7.803622) (xy 223.290509 -7.803622) + (xy 222.878032 -7.721575) (xy 222.489486 -7.560634) (xy 222.139805 -7.326985) (xy 221.842425 -7.029605) (xy 221.608776 -6.679924) + (xy 221.447835 -6.291378) (xy 221.365788 -5.878901) (xy 221.365788 -5.458343) (xy 221.447835 -5.045866) (xy 221.608776 -4.65732) + (xy 221.842425 -4.307639) (xy 222.139805 -4.010259) (xy 222.489486 -3.77661) (xy 222.878032 -3.615669) (xy 223.290509 -3.533622) + (xy 223.711067 -3.533622) (xy 224.123544 -3.615669) (xy 224.51209 -3.77661) (xy 224.861771 -4.010259) (xy 225.159151 -4.307639) + (xy 225.3928 -4.65732) (xy 225.553741 -5.045866) (xy 225.55869 -5.070744) (xy 227.815295 -5.070744) (xy 227.939777 -5.083004) + (xy 228.059475 -5.119314) (xy 228.169789 -5.178279) (xy 228.26648 -5.257631) (xy 228.345832 -5.354322) (xy 228.404797 -5.464636) + (xy 228.441107 -5.584334) (xy 228.453367 -5.708816) (xy 228.453367 -8.208816) (xy 228.441107 -8.333298) (xy 228.404797 -8.452996) + (xy 228.345832 -8.56331) (xy 228.26648 -8.660001) (xy 228.169789 -8.739353) (xy 228.059475 -8.798318) (xy 227.939777 -8.834628) + (xy 227.815295 -8.846888) (xy 227.300295 -8.846888) (xy 227.300295 -11.078927) (xy 227.303972 -11.11626) (xy 227.289298 -11.265246) + (xy 227.245841 -11.408507) (xy 227.175269 -11.540536) (xy 227.104094 -11.627263) (xy 227.080296 -11.656261) (xy 227.051298 -11.680059) + (xy 220.710148 -18.021209) (xy 220.833315 -18.045708) (xy 221.103732 -18.157718) (xy 221.3471 -18.320332) (xy 221.554068 -18.5273) + (xy 221.716682 -18.770668) (xy 221.828692 -19.041085) (xy 221.885794 -19.328158) (xy 221.885794 -19.620854) (xy 221.828692 -19.907927) + (xy 221.716682 -20.178344) (xy 221.554068 -20.421712) (xy 221.3471 -20.62868) (xy 221.103732 -20.791294) (xy 220.833315 -20.903304) + (xy 220.546242 -20.960406) (xy 220.253546 -20.960406) (xy 219.983993 -20.906789) (xy 219.983993 -22.560336) (xy 220.391404 -22.560336) + (xy 220.515886 -22.572596) (xy 220.635584 -22.608906) (xy 220.745898 -22.667871) (xy 220.842589 -22.747223) (xy 220.921941 -22.843914) + (xy 220.980906 -22.954228) (xy 221.017216 -23.073926) (xy 221.029476 -23.198408) (xy 221.029476 -25.698408) (xy 221.017216 -25.82289) + (xy 220.980906 -25.942588) (xy 220.921941 -26.052902) (xy 220.842589 -26.149593) (xy 220.745898 -26.228945) (xy 220.635584 -26.28791) + (xy 220.515886 -26.32422) (xy 220.391404 -26.33648) (xy 219.876404 -26.33648) (xy 219.876404 -28.568529) (xy 219.88008 -28.605852) + (xy 219.876404 -28.643175) (xy 219.876404 -28.643185) (xy 219.865407 -28.754838) (xy 219.82195 -28.898099) (xy 219.804229 -28.931252) + (xy 219.751378 -29.030129) (xy 219.680203 -29.116855) (xy 219.656405 -29.145853) (xy 219.627407 -29.169651) (xy 213.286256 -35.510801) + (xy 213.409423 -35.5353) (xy 213.67984 -35.64731) (xy 213.923208 -35.809924) (xy 214.130176 -36.016892) (xy 214.29279 -36.26026) + (xy 214.4048 -36.530677) (xy 214.461902 -36.81775) (xy 214.461902 -37.110446) (xy 214.4048 -37.397519) (xy 214.29279 -37.667936) + (xy 214.130176 -37.911304) (xy 213.923208 -38.118272) (xy 213.67984 -38.280886) (xy 213.409423 -38.392896) (xy 213.12235 -38.449998) + (xy 212.829654 -38.449998) (xy 212.560101 -38.396381) (xy 212.560101 -40.049928) (xy 212.967512 -40.049928) (xy 213.091994 -40.062188) + (xy 213.211692 -40.098498) (xy 213.322006 -40.157463) (xy 213.418697 -40.236815) (xy 213.498049 -40.333506) (xy 213.557014 -40.44382) + (xy 213.593324 -40.563518) (xy 213.605584 -40.688) (xy 213.605584 -43.188) (xy 213.593324 -43.312482) (xy 213.557014 -43.43218) + (xy 213.498049 -43.542494) (xy 213.418697 -43.639185) (xy 213.322006 -43.718537) (xy 213.211692 -43.777502) (xy 213.091994 -43.813812) + (xy 212.967512 -43.826072) (xy 212.452512 -43.826072) (xy 212.452512 -46.080155) (xy 212.456189 -46.117488) (xy 212.441515 -46.266474) + (xy 212.398058 -46.409735) (xy 212.327486 -46.541764) (xy 212.256311 -46.628491) (xy 212.232513 -46.657489) (xy 212.203515 -46.681287) + (xy 205.88075 -53.004051) (xy 205.985532 -53.024893) (xy 206.255949 -53.136903) (xy 206.499317 -53.299517) (xy 206.706285 -53.506485) + (xy 206.868899 -53.749853) (xy 206.980909 -54.02027) (xy 207.038011 -54.307343) (xy 207.038011 -54.600039) (xy 206.980909 -54.887112) + (xy 206.868899 -55.157529) (xy 206.706285 -55.400897) (xy 206.499317 -55.607865) (xy 206.255949 -55.770479) (xy 205.985532 -55.882489) + (xy 205.698459 -55.939591) (xy 205.405763 -55.939591) (xy 205.40116 -55.938675) (xy 205.371436 -56.088108) (xy 205.293415 -56.276466) + (xy 205.180147 -56.445984) (xy 205.13621 -56.489921) (xy 205.13621 -57.539521) (xy 205.543621 -57.539521) (xy 205.668103 -57.551781) + (xy 205.787801 -57.588091) (xy 205.898115 -57.647056) (xy 205.994806 -57.726408) (xy 206.074158 -57.823099) (xy 206.133123 -57.933413) + (xy 206.169433 -58.053111) (xy 206.181693 -58.177593) (xy 206.181693 -60.677593) (xy 206.169433 -60.802075) (xy 206.133123 -60.921773) + (xy 206.074158 -61.032087) (xy 205.994806 -61.128778) (xy 205.898115 -61.20813) (xy 205.787801 -61.267095) (xy 205.668103 -61.303405) + (xy 205.543621 -61.315665) (xy 202.993621 -61.315665) (xy 202.869139 -61.303405) (xy 202.749441 -61.267095) (xy 202.639127 -61.20813) + (xy 202.542436 -61.128778) (xy 202.463084 -61.032087) (xy 202.404119 -60.921773) (xy 202.367809 -60.802075) (xy 202.355549 -60.677593) + (xy 202.355549 -59.952482) (xy 202.240416 -60.029411) (xy 201.85187 -60.190352) (xy 201.439393 -60.272399) (xy 201.018835 -60.272399) + (xy 200.606358 -60.190352) (xy 200.217812 -60.029411) (xy 199.868131 -59.795762) (xy 199.570751 -59.498382) (xy 199.337102 -59.148701) + (xy 199.176161 -58.760155) (xy 199.094114 -58.347678) (xy 167.971338 -58.347678) (xy 205.739515 -64.786869) + ) + ) + ) +) diff --git a/kicad/45treus/main_version_002_with_switch_and_reset.pro b/kicad/45treus/main_version_002_with_switch_and_reset.pro new file mode 100644 index 0000000..152769c --- /dev/null +++ b/kicad/45treus/main_version_002_with_switch_and_reset.pro @@ -0,0 +1,33 @@ +update=22/05/2015 07:44:53 +version=1 +last_client=kicad +[general] +version=1 +RootSch= +BoardNm= +[pcbnew] +version=1 +LastNetListRead= +UseCmpFile=1 +PadDrill=0.600000000000 +PadDrillOvalY=0.600000000000 +PadSizeH=1.500000000000 +PadSizeV=1.500000000000 +PcbTextSizeV=1.500000000000 +PcbTextSizeH=1.500000000000 +PcbTextThickness=0.300000000000 +ModuleTextSizeV=1.000000000000 +ModuleTextSizeH=1.000000000000 +ModuleTextSizeThickness=0.150000000000 +SolderMaskClearance=0.000000000000 +SolderMaskMinWidth=0.000000000000 +DrawSegmentWidth=0.200000000000 +BoardOutlineThickness=0.100000000000 +ModuleOutlineThickness=0.150000000000 +[cvpcb] +version=1 +NetIExt=net +[eeschema] +version=1 +LibDir= +[eeschema/libraries] From 56a81c20b8df95e14f9b352ea6a694bd8062da28 Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Fri, 25 Mar 2022 11:26:10 +0100 Subject: [PATCH 114/120] add v002 --- kicad/45treus/gerber_v002/23treus_v002.zip | Bin 0 -> 312937 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 kicad/45treus/gerber_v002/23treus_v002.zip diff --git a/kicad/45treus/gerber_v002/23treus_v002.zip b/kicad/45treus/gerber_v002/23treus_v002.zip new file mode 100644 index 0000000000000000000000000000000000000000..3317b06e3483da6ebe35093d349aea19fbbf89ea GIT binary patch literal 312937 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 z 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

Taj)}PzJ>Y|IP=&( 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 z%0D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 literal 0 HcmV?d00001 From a48fb3c0649c9b8fd53b4c8b1a086404a192b3aa Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Fri, 25 Mar 2022 11:26:15 +0100 Subject: [PATCH 115/120] allow keeping of gerber files --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a2caa54..d8034db 100644 --- a/.gitignore +++ b/.gitignore @@ -121,3 +121,6 @@ temp* kicad/45treus/main.pro kicad/45treus/main.kicad_pcb *.kicad_pcb-bak +kicad/45treus/gerber_v*/*.gbr +kicad/45treus/gerber_v*/*.gbrjob +kicad/45treus/gerber_v*/*.drl From c57440a231ac117b3f5adb3ed9143bce2259a9cc Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Fri, 25 Mar 2022 12:41:14 +0100 Subject: [PATCH 116/120] fix matrix :< --- 23treus.yaml | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/23treus.yaml b/23treus.yaml index 60d5f00..9050bf9 100644 --- a/23treus.yaml +++ b/23treus.yaml @@ -23,33 +23,45 @@ points: matrix: columns: pinky: - key: { column_net: P20 } + key: + column_net: P21 + mirror: { column_net: P2 } ring: stagger: 4 - key: { column_net: P19 } + key: + column_net: P20 + mirror: { column_net: P3 } middle: stagger: 5 - key: { column_net: P18 } + key: + column_net: P19 + mirror: { column_net: P4 } index: stagger: -5 - key: { column_net: P15 } + key: + column_net: P18 + mirror: { column_net: P5 } inner: stagger: -6 - key: { column_net: P14 } + key: + column_net: P15 + mirror: { column_net: P6 } thumb: stagger: 10 row_overrides: bottom: - key: { column_net: P16 } + key: + column_net: P14 + mirror: { column_net: P7} rows: bottom: - row_net: P6 + row_net: P16 home: - row_net: P5 + row_net: P10 top: - row_net: P4 + row_net: P9 num: - row_net: P3 + row_net: P9 rotate: -23 mirror: From 85bd46a4d813b15ce01b478200010241f06d34fd Mon Sep 17 00:00:00 2001 From: Stefan Schwarz Date: Fri, 25 Mar 2022 15:33:34 +0100 Subject: [PATCH 117/120] version 003 --- 23treus.yaml | 31 +- kicad/45treus/gerber_v003/23treus_v003.zip | Bin 0 -> 372836 bytes .../main_version_003_working.kicad_pcb | 7161 +++++++++++++++++ 3 files changed, 7162 insertions(+), 30 deletions(-) create mode 100644 kicad/45treus/gerber_v003/23treus_v003.zip create mode 100644 kicad/45treus/main_version_003_working.kicad_pcb diff --git a/23treus.yaml b/23treus.yaml index 9050bf9..a0464ae 100644 --- a/23treus.yaml +++ b/23treus.yaml @@ -61,7 +61,7 @@ points: top: row_net: P9 num: - row_net: P9 + row_net: P8 rotate: -23 mirror: @@ -151,35 +151,6 @@ pcbs: outer: outline: outer footprints: - onoff: - type: slider - nets: - from: P1 - to: battery- - anchor: - rotate: 180 - ref: matrix_middle_bottom - shift: [0, -14] - battery+: - type: pad - params: - text: "+" - back: false - nets: - net: RAW - anchor: - ref: [matrix_inner_bottom, mirror_matrix_inner_bottom] - shift: [4, 14] - battery-: - type: pad - params: - text: "-" - back: false - nets: - net: battery- - anchor: - ref: [matrix_inner_bottom, mirror_matrix_inner_bottom] - shift: [-4, 14] reset: type: button nets: diff --git a/kicad/45treus/gerber_v003/23treus_v003.zip b/kicad/45treus/gerber_v003/23treus_v003.zip new file mode 100644 index 0000000000000000000000000000000000000000..f6f33ec433e3aa4d23c07f3b7545e74a3a07da6d GIT binary patch literal 372836 zcmW(*WmsEF6humaBE>1i-QC^Yio1JpchchSuEn8PaVN!Hi@O9U8a#L&eLwQ&?%i)^ z=gc{Cc5l8Y!oS0Tfq_ASQStZHj5>2`6?BA$@s|4lg9bwc<7j5*#4KSV>B(Ya?x3ZK z3N|Y z@{rqk9|p-sQ(E9r$bO1*@DY6(Vr}4{X#81gqhAyB+ss>bA+3BYHg-?+bs;I}761jj zZUx!ml~B|`N1k~9daItKwf+(Pe$x1ivwC1_Lk4KMH?upH>4D)c+~>th}C zq5ygge!V{d5C^@8zU-(bEWO@+gdV*;dJ=sx0luz@K4)w}k08)t@at~D%Qf)98~Rum zlryHo0JxmKeF5BdioU+Qy3XnJqyz+crFq9>j06uKJP6Ct6p05Eft-#sY+~QH-;~L<>8TtY} z*?Ju}c{zbTY`r{LX#;LE0Mw1mqtH&kbq+9%^yw}mFmwuFoT>KYoHHx>(hqnO#$!Ke9UcR7==0XB z1R-+?sdFK8*SkLOnH9RUW$3Th^4H|KaVx)`R4r5N>Cvl9(?0UhIesK$-v6|6sm}S< z_KeAM2Dne;hdQhyl8`*bR)MSHHc*G*KVhS}3vqN_S-bkm#6_$hc?B@pGIz33I^vDE z>QAv@zxk4|rCw=!3Jb<{@Gk8oag z58(9|xFeACF?~#}$^%Q)j-tinneXW`dC$qc%0|?EwvdE8Zya>*9eq_1Zm18o=&D~B z!>79nX*8C~a*;Ets2q}wT~aEx}Pj+TY`h~x|@AS9)??r znburWUk5Rh)LN~Ej#8UXcTP~xBB_lEIEN_bb@ve)DEC|)XLV2LNpDV+I7WgD4K7#i zRX3uVq7LDBHIOj@BoU589_vmr;(wicD*V5*qr~HWiQKlxDGXHkv$L zuiSe(4L0K6{a})=Za=uO5WExuL1e!QXfIE4wCAhGh?5YLzxVY)Ys>2cT7Krp$)1W? zZ9o#s8{JQi_nRVqw0#lewMej0qz*#HcGkPwTaG1vN1()LqSg|QTKT$cEwpbcwX$cT z=B4C#q)USaKhY=OV+lpJkGGqWdSq<)r1q)VCCfe|zrlU~mWf&Gp(Lfd%i}`B8$@3f zm`--$f`lz+CahvJ7LfUh`{;@kl1~|@HI<%gk)<_NX=IRQ#AqQ}O06<$dCp24aM*I% z_cPRYWWowOtQq8D@IfOT?T=?uU&gLL@7&K*cwZV`2PEcca>OiM%-4lEdPz374Azy* zZSoB1_PY~B#I11}#We2mBS!brP&;D-jrigl1E8g2%zDc3M<-=|kLLZ0v{2`HoPL2z z8h`oPE>=wD?Dd{&1MUZXz0k;#C6^q*mNX3-T_DISF=gct5#V*<6jpzhq}4F|ho%H(<}>BGSl zkhHr?IurZ7>#>VLyl-A1Q9Xsy4x^Q|)(MgOs9XD(W`m)AyQ*8NYi=5W^#j(!YQq~5 z;LTV!q^YSIdIdXy+8TPre5*n!23%PBgVzuPjh1E?*QCy$7t#*`CyNsSu^J!)GrWbY z`055!>5@7xO*1-ody1U#G92GBot@ScdlA9=cEd&#l!U%C;OH!p)nRtc9Yf6Zt+I?} z-r16I$FBrdu9w^@V*Yjy>4%hbDYfL2fczR+#H~*5{i+cevA&c^qiK@^l7iNQr~u7k zbRC}UF`oT{>e6u%9PxJVmF#lPckRa<9_{bqh4x1z-+Sgx)XSw@KLU<+1$k}w{3M

&f3#4(-%XB-kT3EECjOw6p02ZlD^<%l678Mbj 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ÜJxP^X;+zVV@oHg9AA&>-4I7*IY3hA?%M)H~8lx

3tZ0Y+3_Sb0 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ⅆ*+M1`9RH0li~P29R{ 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 O8CbrsQvq~;(EkB1ivQaH literal 0 HcmV?d00001 diff --git a/kicad/45treus/main_version_003_working.kicad_pcb b/kicad/45treus/main_version_003_working.kicad_pcb new file mode 100644 index 0000000..50f3042 --- /dev/null +++ b/kicad/45treus/main_version_003_working.kicad_pcb @@ -0,0 +1,7161 @@ +(kicad_pcb (version 20171130) (host pcbnew 5.1.12) + + (general + (thickness 1.6) + (drawings 17) + (tracks 761) + (zones 0) + (modules 87) + (nets 65) + ) + + (page A3) + (title_block + (title main) + (rev v1.0.0) + (company Unknown) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions true) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue false) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk true) + (outputformat 1) + (mirror false) + (drillshape 0) + (scaleselection 1) + (outputdirectory "gerber_v003")) + ) + + (net 0 "") + (net 1 pinky_bottom) + (net 2 P21) + (net 3 P16) + (net 4 pinky_home) + (net 5 P10) + (net 6 pinky_top) + (net 7 P9) + (net 8 pinky_num) + (net 9 P8) + (net 10 ring_bottom) + (net 11 P20) + (net 12 ring_home) + (net 13 ring_top) + (net 14 ring_num) + (net 15 middle_bottom) + (net 16 P19) + (net 17 middle_home) + (net 18 middle_top) + (net 19 middle_num) + (net 20 index_bottom) + (net 21 P18) + (net 22 index_home) + (net 23 index_top) + (net 24 index_num) + (net 25 inner_bottom) + (net 26 P15) + (net 27 inner_home) + (net 28 inner_top) + (net 29 inner_num) + (net 30 thumb_bottom) + (net 31 P14) + (net 32 mirror_pinky_bottom) + (net 33 P2) + (net 34 mirror_pinky_home) + (net 35 mirror_pinky_top) + (net 36 mirror_pinky_num) + (net 37 mirror_ring_bottom) + (net 38 P3) + (net 39 mirror_ring_home) + (net 40 mirror_ring_top) + (net 41 mirror_ring_num) + (net 42 mirror_middle_bottom) + (net 43 P4) + (net 44 mirror_middle_home) + (net 45 mirror_middle_top) + (net 46 mirror_middle_num) + (net 47 mirror_index_bottom) + (net 48 P5) + (net 49 mirror_index_home) + (net 50 mirror_index_top) + (net 51 mirror_index_num) + (net 52 mirror_inner_bottom) + (net 53 P6) + (net 54 mirror_inner_home) + (net 55 mirror_inner_top) + (net 56 mirror_inner_num) + (net 57 mirror_thumb_bottom) + (net 58 P7) + (net 59 RST) + (net 60 GND) + (net 61 RAW) + (net 62 VCC) + (net 63 P1) + (net 64 P0) + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net GND) + (add_net P0) + (add_net P1) + (add_net P10) + (add_net P14) + (add_net P15) + (add_net P16) + (add_net P18) + (add_net P19) + (add_net P2) + (add_net P20) + (add_net P21) + (add_net P3) + (add_net P4) + (add_net P5) + (add_net P6) + (add_net P7) + (add_net P8) + (add_net P9) + (add_net RAW) + (add_net RST) + (add_net VCC) + (add_net index_bottom) + (add_net index_home) + (add_net index_num) + (add_net index_top) + (add_net inner_bottom) + (add_net inner_home) + (add_net inner_num) + (add_net inner_top) + (add_net middle_bottom) + (add_net middle_home) + (add_net middle_num) + (add_net middle_top) + (add_net mirror_index_bottom) + (add_net mirror_index_home) + (add_net mirror_index_num) + (add_net mirror_index_top) + (add_net mirror_inner_bottom) + (add_net mirror_inner_home) + (add_net mirror_inner_num) + (add_net mirror_inner_top) + (add_net mirror_middle_bottom) + (add_net mirror_middle_home) + (add_net mirror_middle_num) + (add_net mirror_middle_top) + (add_net mirror_pinky_bottom) + (add_net mirror_pinky_home) + (add_net mirror_pinky_num) + (add_net mirror_pinky_top) + (add_net mirror_ring_bottom) + (add_net mirror_ring_home) + (add_net mirror_ring_num) + (add_net mirror_ring_top) + (add_net mirror_thumb_bottom) + (add_net pinky_bottom) + (add_net pinky_home) + (add_net pinky_num) + (add_net pinky_top) + (add_net ring_bottom) + (add_net ring_home) + (add_net ring_num) + (add_net ring_top) + (add_net thumb_bottom) + ) + + (module 45treus:binafoo-sscreen (layer F.Cu) (tedit 623DCFF3) (tstamp 623E32D3) + (at 184.785 -5.715) + (fp_text reference G*** (at -12.7 -29.21 180) (layer B.SilkS) hide + (effects (font (size 1.524 1.524) (thickness 0.3)) (justify mirror)) + ) + (fp_text value LOGO (at -13.45 -29.21 180) (layer B.SilkS) hide + (effects (font (size 1.524 1.524) (thickness 0.3)) (justify mirror)) + ) + (fp_poly (pts (xy -41.792042 -28.263027) (xy -42.082737 -27.850432) (xy -42.356634 -27.316239) (xy -42.546645 -26.786011) + (xy -42.593847 -26.477895) (xy -42.625605 -26.207426) (xy -42.792622 -26.215506) (xy -43.033462 -26.362481) + (xy -43.535633 -26.610018) (xy -44.21244 -26.837964) (xy -44.974432 -27.03012) (xy -45.73216 -27.170286) + (xy -46.396174 -27.242261) (xy -46.877026 -27.229848) (xy -47.085266 -27.116845) (xy -47.087693 -27.096722) + (xy -46.922011 -26.942795) (xy -46.492538 -26.706937) (xy -46.025913 -26.497208) (xy -45.407104 -26.210642) + (xy -44.923238 -25.932466) (xy -44.731989 -25.777409) (xy -44.630851 -25.578922) (xy -44.826981 -25.502145) + (xy -45.061077 -25.493055) (xy -45.545904 -25.416204) (xy -46.217063 -25.222333) (xy -46.748198 -25.025418) + (xy -48.951474 -23.913204) (xy -51.043749 -22.444566) (xy -53.005029 -20.643106) (xy -54.815319 -18.532424) + (xy -56.454624 -16.136122) (xy -57.90295 -13.4778) (xy -59.140301 -10.581058) (xy -59.259471 -10.257692) + (xy -59.862392 -8.596923) (xy -59.93879 -3.321538) (xy -59.954538 -1.849385) (xy -59.959271 -0.439345) + (xy -59.953556 0.841229) (xy -59.93796 1.924984) (xy -59.913051 2.744567) (xy -59.883939 3.193211) + (xy -59.798303 3.866672) (xy -59.700354 4.227504) (xy -59.556693 4.353277) (xy -59.391038 4.338002) + (xy -59.156792 4.346975) (xy -58.992163 4.576653) (xy -58.84461 5.106362) (xy -58.826212 5.190799) + (xy -58.648766 5.915585) (xy -58.405122 6.7738) (xy -58.121379 7.688703) (xy -57.823641 8.583551) + (xy -57.538008 9.381604) (xy -57.290582 10.006118) (xy -57.107465 10.380352) (xy -57.03639 10.453077) + (xy -56.817118 10.295232) (xy -56.753099 10.16) (xy -56.610545 9.709202) (xy -56.553428 9.530715) + (xy -56.447219 9.532266) (xy -56.255207 9.884183) (xy -55.990951 10.558904) (xy -55.856525 10.947253) + (xy -55.547255 11.762892) (xy -55.145965 12.670457) (xy -54.688503 13.605268) (xy -54.210715 14.502643) + (xy -53.74845 15.297902) (xy -53.337554 15.926365) (xy -53.013875 16.323351) (xy -52.819503 16.427051) + (xy -52.518198 16.483787) (xy -52.342165 16.63289) (xy -51.981037 16.839482) (xy -51.755917 16.838664) + (xy -51.486569 16.897257) (xy -51.152693 17.23308) (xy -50.730245 17.858027) (xy -50.181521 18.691702) + (xy -49.504135 19.635184) (xy -48.739282 20.639758) (xy -47.928154 21.65671) (xy -47.111945 22.637326) + (xy -46.331848 23.532892) (xy -45.629056 24.294694) (xy -45.044763 24.874018) (xy -44.620161 25.222149) + (xy -44.435269 25.302308) (xy -44.247414 25.293057) (xy -44.180937 25.203675) (xy -44.23742 24.941722) + (xy -44.418444 24.414755) (xy -44.452087 24.319472) (xy -44.615578 23.807493) (xy -44.689078 23.476247) + (xy -44.683552 23.419193) (xy -44.529097 23.527067) (xy -44.13583 23.865145) (xy -43.547659 24.393875) + (xy -42.808494 25.073701) (xy -41.962242 25.865068) (xy -41.830135 25.989671) (xy -40.688478 27.051065) + (xy -39.800589 27.833674) (xy -39.151659 28.342557) (xy -38.72688 28.582775) (xy -38.511444 28.559386) + (xy -38.490544 28.27745) (xy -38.649369 27.742027) (xy -38.969128 26.967181) (xy -39.216668 26.379054) + (xy -39.29934 26.082387) (xy -39.226625 26.018922) (xy -39.115667 26.066728) (xy -38.725599 26.35279) + (xy -38.147583 26.865966) (xy -37.448622 27.53723) (xy -36.695719 28.297553) (xy -35.955876 29.077906) + (xy -35.296097 29.809263) (xy -34.783385 30.422595) (xy -34.499968 30.821923) (xy -34.097474 31.444753) + (xy -33.821085 31.704435) (xy -33.660987 31.604192) (xy -33.607368 31.147246) (xy -33.607306 31.115) + (xy -33.641286 30.624893) (xy -33.7345 29.831484) (xy -33.875553 28.815804) (xy -34.05305 27.658885) + (xy -34.255598 26.441759) (xy -34.301052 26.181539) (xy -34.334721 25.896883) (xy -34.268475 25.8994) + (xy -34.073474 26.213916) (xy -33.903816 26.523462) (xy -33.560092 27.057237) (xy -33.235653 27.389432) + (xy -33.08469 27.451539) (xy -32.933963 27.408108) (xy -32.852012 27.229154) (xy -32.830591 26.84168) + (xy -32.861454 26.172689) (xy -32.891554 25.741923) (xy -33.005752 24.67882) (xy -33.187291 23.501282) + (xy -33.397973 22.455285) (xy -33.409272 22.408008) (xy -33.586736 21.666109) (xy -33.722377 21.085612) + (xy -33.794932 20.758083) (xy -33.801539 20.718881) (xy -33.631915 20.73922) (xy -33.187728 20.855204) + (xy -32.580385 21.037038) (xy -31.89154 21.239219) (xy -30.952739 21.496053) (xy -29.894388 21.772608) + (xy -28.975982 22.00253) (xy -26.592732 22.585036) (xy -25.082605 22.063811) (xy -23.572479 21.542585) + (xy -23.037629 22.197909) (xy -22.69251 22.595572) (xy -22.47042 22.72438) (xy -22.255492 22.624716) + (xy -22.128698 22.514694) (xy -21.711083 22.228438) (xy -21.36093 22.258779) (xy -20.980032 22.625117) + (xy -20.87526 22.762308) (xy -20.440803 23.224191) (xy -20.082502 23.312214) (xy -19.776098 23.030164) + (xy -19.725355 22.941826) (xy -19.585573 22.727794) (xy -19.429945 22.704863) (xy -19.17525 22.907128) + (xy -18.771571 23.332596) (xy -18.331892 23.772783) (xy -17.978771 24.062387) (xy -17.836363 24.13) + (xy -17.408632 23.954643) (xy -16.91696 23.470894) (xy -16.41744 22.742241) (xy -16.130013 22.198713) + (xy -15.827314 21.599015) (xy -15.580173 21.170133) (xy -15.441547 21.003873) (xy -15.440742 21.003846) + (xy -15.270744 21.165342) (xy -14.974552 21.595864) (xy -14.599807 22.214461) (xy -14.194147 22.940185) + (xy -13.805214 23.692085) (xy -13.579087 24.167166) (xy -13.255778 25.019007) (xy -12.981965 25.98322) + (xy -12.875073 26.506836) (xy -12.759315 27.156513) (xy -12.653247 27.634893) (xy -12.586319 27.825733) + (xy -12.453014 27.866942) (xy -12.281968 27.728722) (xy -12.056466 27.37832) (xy -11.759793 26.782984) + (xy -11.375232 25.909961) (xy -10.886067 24.726499) (xy -10.45086 23.641539) (xy -10.341844 23.454182) + (xy -10.250181 23.568822) (xy -10.142109 24.028073) (xy -10.141273 24.032308) (xy -10.049693 24.693895) + (xy -9.98872 25.505345) (xy -9.975876 25.925777) (xy -9.926484 26.640435) (xy -9.807654 27.084275) + (xy -9.638016 27.214506) (xy -9.479447 27.066097) (xy -9.388829 26.810009) (xy -9.229517 26.253497) + (xy -9.023292 25.476288) (xy -8.791936 24.558109) (xy -8.771307 24.474064) (xy -8.257851 22.0034) + (xy -7.993458 19.731293) (xy -7.978566 17.554829) (xy -7.996831 17.385131) (xy -8.440027 17.385131) + (xy -8.445229 19.193881) (xy -8.584954 21.040015) (xy -8.850213 22.762333) (xy -9.006113 23.446154) + (xy -9.457683 25.204616) (xy -9.703356 23.756794) (xy -9.903898 22.776989) (xy -10.106648 22.182746) + (xy -10.309996 21.975275) (xy -10.512333 22.155784) (xy -10.712049 22.725483) (xy -10.767778 22.957118) + (xy -10.913851 23.473655) (xy -11.141954 24.136032) (xy -11.416354 24.857076) (xy -11.701314 25.549616) + (xy -11.961099 26.126479) (xy -12.159974 26.500493) (xy -12.257598 26.591377) (xy -12.349084 26.364167) + (xy -12.47815 25.893236) (xy -12.53296 25.659444) (xy -12.766333 24.875738) (xy -13.121761 23.994073) + (xy -13.559638 23.082896) (xy -14.040356 22.210655) (xy -14.524307 21.445801) (xy -14.971882 20.856779) + (xy -15.343476 20.51204) (xy -15.544995 20.454173) (xy -15.758284 20.647515) (xy -16.076723 21.108495) + (xy -16.442179 21.74973) (xy -16.560581 21.980769) (xy -17.033108 22.845022) (xy -17.431444 23.350834) + (xy -17.795814 23.513408) (xy -18.16644 23.347947) (xy -18.583545 22.869655) (xy -18.65281 22.771573) + (xy -19.110761 22.210511) (xy -19.475762 22.009483) (xy -19.781848 22.158963) (xy -19.949104 22.408672) + (xy -20.178111 22.836574) (xy -20.501376 22.437358) (xy -21.074415 21.897819) (xy -21.614508 21.742417) + (xy -22.060889 21.912298) (xy -22.391003 22.112117) (xy -22.537154 22.147237) (xy -22.676174 21.954598) + (xy -22.831156 21.749026) (xy -22.918832 21.569166) (xy -22.840508 21.395755) (xy -22.540156 21.180382) + (xy -21.961748 20.874634) (xy -21.630471 20.711548) (xy -20.475467 20.028334) (xy -19.186819 19.058315) + (xy -17.820506 17.85636) (xy -16.432512 16.477341) (xy -15.078818 14.976128) (xy -13.815404 13.40759) + (xy -12.948388 12.201812) (xy -12.377888 11.053198) (xy -12.046158 9.700076) (xy -11.99927 8.829107) + (xy -12.560875 8.829107) (xy -12.734102 10.027294) (xy -13.136394 11.233411) (xy -13.787564 12.483123) + (xy -14.707428 13.812095) (xy -15.915799 15.255995) (xy -17.432491 16.850487) (xy -18.100661 17.509976) + (xy -19.516744 18.740383) (xy -21.04934 19.767392) (xy -22.776719 20.633568) (xy -24.777153 21.381472) + (xy -25.79077 21.691789) (xy -26.318615 21.838192) (xy -26.738945 21.918099) (xy -27.15114 21.925409) + (xy -27.654582 21.854021) (xy -28.348651 21.697832) (xy -29.21 21.481853) (xy -30.861476 21.051691) + (xy -32.145624 20.691028) (xy -33.078689 20.394711) (xy -33.676916 20.157586) (xy -33.954892 19.976551) + (xy -34.092916 19.713728) (xy -34.3365 19.157337) (xy -34.655281 18.380175) (xy -35.018894 17.455042) + (xy -35.156305 17.096154) (xy -35.531578 16.11249) (xy -35.871939 15.226737) (xy -36.14631 14.519316) + (xy -36.323612 14.070646) (xy -36.355302 13.993598) (xy -36.477928 13.621525) (xy -36.479967 13.457146) + (xy -36.336111 13.565329) (xy -36.01555 13.914644) (xy -35.576522 14.433973) (xy -35.077266 15.052196) + (xy -34.57602 15.698191) (xy -34.131023 16.300839) (xy -34.007739 16.476207) (xy -33.644427 16.898834) + (xy -33.391168 16.953588) (xy -33.360924 16.929078) (xy -33.353584 16.666333) (xy -33.542879 16.084434) + (xy -33.930857 15.177953) (xy -34.379807 14.227486) (xy -35.552092 11.66557) (xy -36.48261 9.284051) + (xy -37.203124 6.984259) (xy -37.7454 4.667519) (xy -38.06654 2.775104) (xy -38.428266 0.274823) + (xy -37.449106 0.332796) (xy -36.84917 0.393704) (xy -36.524626 0.521891) (xy -36.36026 0.77339) + (xy -36.32556 0.879231) (xy -36.219404 1.246739) (xy -36.03236 1.902426) (xy -35.789439 2.758327) + (xy -35.515655 3.726475) (xy -35.472801 3.878317) (xy -34.944808 5.603765) (xy -34.434893 6.962398) + (xy -33.931955 7.977081) (xy -33.424891 8.670677) (xy -32.970776 9.031243) (xy -32.646415 9.175303) + (xy -32.248568 9.270259) (xy -31.700238 9.323081) (xy -30.924427 9.340743) (xy -29.844141 9.330214) + (xy -29.698462 9.327541) (xy -27.650746 9.267943) (xy -25.977972 9.172937) (xy -24.665778 9.040896) + (xy -23.6998 8.870189) (xy -23.065673 8.659189) (xy -22.891387 8.555619) (xy -22.495801 8.212271) + (xy -22.202819 7.808652) (xy -21.993996 7.278866) (xy -21.85089 6.557018) (xy -21.755058 5.577212) + (xy -21.688055 4.273553) (xy -21.687263 4.253447) (xy -21.621912 3.009076) (xy -21.537014 2.068937) + (xy -21.436062 1.463655) (xy -21.343543 1.238466) (xy -21.00983 1.101559) (xy -20.438517 1.177004) + (xy -20.403938 1.185788) (xy -20.101406 1.276333) (xy -19.874527 1.410217) (xy -19.682782 1.654716) + (xy -19.485655 2.077107) (xy -19.242628 2.744668) (xy -18.960628 3.582328) (xy -18.496929 4.89468) + (xy -18.074498 5.862972) (xy -17.649365 6.524502) (xy -17.177561 6.91657) (xy -16.615119 7.076475) + (xy -15.91807 7.041517) (xy -15.093927 6.862513) (xy -14.111913 6.603921) (xy -13.446207 6.44735) + (xy -13.031168 6.412271) (xy -12.801155 6.518154) (xy -12.690527 6.784471) (xy -12.633641 7.230691) + (xy -12.596899 7.603183) (xy -12.560875 8.829107) (xy -11.99927 8.829107) (xy -11.968554 8.258542) + (xy -12.16043 6.84469) (xy -12.213151 6.643077) (xy -12.190111 6.301684) (xy -11.861021 5.997285) + (xy -11.729693 5.919472) (xy -11.478247 5.757211) (xy -11.299481 5.558467) (xy -11.189819 5.268524) + (xy -11.145686 4.832669) (xy -11.147659 4.76217) (xy -11.715988 4.76217) (xy -11.742315 5.217562) + (xy -11.77517 5.324231) (xy -12.072942 5.558131) (xy -12.353019 5.450515) (xy -12.382511 5.401405) + (xy -13.0848 5.401405) (xy -13.097167 5.684853) (xy -13.207051 5.819242) (xy -13.631961 5.993654) + (xy -14.287448 6.185969) (xy -15.052487 6.369683) (xy -15.806055 6.518293) (xy -16.427128 6.605296) + (xy -16.79318 6.604585) (xy -17.18076 6.325894) (xy -17.607383 5.711399) (xy -18.049163 4.810964) + (xy -18.482216 3.674454) (xy -18.882656 2.351734) (xy -18.946481 2.109178) (xy -19.208153 1.359093) + (xy -19.578066 0.921319) (xy -20.152636 0.721772) (xy -20.801514 0.683846) (xy -21.47756 0.720716) + (xy -21.845405 0.844986) (xy -21.959866 0.992903) (xy -22.004214 1.296698) (xy -22.041017 1.907316) + (xy -22.066831 2.740834) (xy -22.078211 3.713327) (xy -22.078462 3.882273) (xy -22.085451 4.973234) + (xy -22.113802 5.760508) (xy -22.174585 6.33104) (xy -22.278874 6.771776) (xy -22.437741 7.169664) + (xy -22.518077 7.334369) (xy -22.900182 7.947771) (xy -23.345322 8.304375) (xy -23.694133 8.446569) + (xy -24.095572 8.525275) (xy -24.801556 8.613314) (xy -25.726165 8.704548) (xy -26.78348 8.792837) + (xy -27.887583 8.872044) (xy -28.952556 8.93603) (xy -29.892478 8.978655) (xy -30.621432 8.993781) + (xy -31.053499 8.97527) (xy -31.066154 8.973286) (xy -31.448385 8.909047) (xy -31.999769 8.816258) + (xy -32.080145 8.802725) (xy -32.59239 8.649555) (xy -33.046499 8.349205) (xy -33.463286 7.863453) + (xy -33.863562 7.154076) (xy -34.26814 6.182849) (xy -34.697832 4.911549) (xy -35.173451 3.301954) + (xy -35.277393 2.930769) (xy -35.561934 1.962148) (xy -35.840667 1.109752) (xy -36.084744 0.455643) + (xy -36.265317 0.081882) (xy -36.290502 0.048846) (xy -36.722413 -0.202505) (xy -37.451921 -0.292347) + (xy -37.544129 -0.293077) (xy -38.091473 -0.323113) (xy -38.433332 -0.399673) (xy -38.49077 -0.455129) + (xy -38.329212 -0.591926) (xy -38.148847 -0.61568) (xy -37.217205 -0.620798) (xy -36.597289 -0.66364) + (xy -36.210212 -0.770771) (xy -35.977088 -0.968755) (xy -35.819033 -1.284155) (xy -35.770607 -1.416538) + (xy -35.349877 -2.285946) (xy -34.745322 -2.907621) (xy -34.290462 -3.195003) (xy -33.800974 -3.344924) + (xy -33.010422 -3.449297) (xy -31.986572 -3.510881) (xy -30.797191 -3.532434) (xy -29.510046 -3.516716) + (xy -28.192903 -3.466483) (xy -26.913528 -3.384497) (xy -25.739689 -3.273513) (xy -24.739151 -3.136293) + (xy -23.979682 -2.975593) (xy -23.529048 -2.794172) (xy -23.481289 -2.754994) (xy -23.267904 -2.457437) + (xy -22.954444 -1.921591) (xy -22.608043 -1.262355) (xy -22.601544 -1.24931) (xy -21.979741 0) + (xy -20.938626 0.059607) (xy -20.157786 0.052181) (xy -19.669117 -0.120454) (xy -19.388041 -0.519782) + (xy -19.234098 -1.179473) (xy -19.105536 -1.773583) (xy -18.938512 -2.228737) (xy -18.882599 -2.319495) + (xy -18.585288 -2.515495) (xy -18.01209 -2.763313) (xy -17.268403 -3.029192) (xy -16.459622 -3.279372) + (xy -15.691145 -3.480095) (xy -15.068368 -3.597603) (xy -14.839145 -3.614615) (xy -14.416513 -3.55233) + (xy -14.26902 -3.317788) (xy -14.263077 -3.212315) (xy -14.338169 -2.942063) (xy -14.458119 -2.930557) + (xy -14.745189 -2.91966) (xy -15.087747 -2.746704) (xy -15.584112 -2.511488) (xy -15.959718 -2.442307) + (xy -16.325514 -2.323188) (xy -16.866155 -2.010707) (xy -17.465369 -1.572184) (xy -17.472326 -1.566525) + (xy -18.124309 -1.086735) (xy -18.615446 -0.82983) (xy -18.847622 -0.805891) (xy -19.097942 -0.792949) + (xy -19.129203 -0.592727) (xy -18.94436 -0.385857) (xy -18.828659 -0.122453) (xy -18.859835 0.114135) + (xy -18.871479 0.416271) (xy -18.77009 0.488462) (xy -18.618692 0.656985) (xy -18.561309 1.025769) + (xy -18.505944 1.832177) (xy -18.359207 2.716954) (xy -18.149191 3.57145) (xy -17.903989 4.287019) + (xy -17.651695 4.755013) (xy -17.577009 4.832371) (xy -16.913353 5.14351) (xy -16.201528 5.10298) + (xy -15.546287 4.718716) (xy -15.501211 4.675127) (xy -14.998646 4.172562) (xy -15.077846 1.060512) + (xy -15.106028 -0.103986) (xy -15.110117 -0.39651) (xy -15.506258 -0.39651) (xy -15.535573 -0.289039) + (xy -15.835964 -0.10916) (xy -16.223397 -0.158753) (xy -16.490453 -0.410398) (xy -16.492467 -0.415534) + (xy -16.482809 -0.797267) (xy -16.269316 -1.144575) (xy -16.004489 -1.27) (xy -15.776897 -1.108978) + (xy -15.580242 -0.753847) (xy -15.506258 -0.39651) (xy -15.110117 -0.39651) (xy -15.117636 -0.934347) + (xy -15.106359 -1.48707) (xy -15.065887 -1.818653) (xy -14.989909 -1.985593) (xy -14.872116 -2.044389) + (xy -14.730269 -2.051538) (xy -14.481994 -2.011413) (xy -14.352041 -1.827626) (xy -14.300616 -1.405058) + (xy -14.290949 -1.001428) (xy -14.147508 0.790454) (xy -13.768456 2.778944) (xy -13.411747 4.103077) + (xy -13.186703 4.898943) (xy -13.0848 5.401405) (xy -12.382511 5.401405) (xy -12.632672 4.98484) + (xy -12.897129 4.249616) (xy -13.295619 2.760346) (xy -13.591788 1.238292) (xy -13.769643 -0.204388) + (xy -13.81319 -1.455535) (xy -13.781791 -1.954171) (xy -13.689874 -2.600081) (xy -13.581389 -3.057279) + (xy -13.483356 -3.223846) (xy -13.170677 -3.054025) (xy -12.818742 -2.617559) (xy -12.494219 -2.023939) + (xy -12.263778 -1.382658) (xy -12.212875 -1.137302) (xy -12.077097 -0.145987) (xy -11.955839 0.940492) + (xy -11.8541 2.048341) (xy -11.77688 3.103765) (xy -11.729176 4.032973) (xy -11.715988 4.76217) + (xy -11.147659 4.76217) (xy -11.163505 4.196184) (xy -11.239701 3.304355) (xy -11.3707 2.102465) + (xy -11.440664 1.496664) (xy -11.547578 0.518392) (xy -11.626903 -0.32601) (xy -11.672181 -0.957712) + (xy -11.676952 -1.297882) (xy -11.671905 -1.325826) (xy -11.569167 -1.322899) (xy -11.394667 -1.021943) + (xy -11.176276 -0.502783) (xy -10.941866 0.154756) (xy -10.719311 0.870851) (xy -10.536482 1.565675) + (xy -10.421251 2.159405) (xy -10.404102 2.305097) (xy -10.362279 2.953652) (xy -10.39758 3.289615) + (xy -10.521324 3.385586) (xy -10.571633 3.379712) (xy -10.800547 3.504771) (xy -10.910532 3.907693) + (xy -10.911984 4.534953) (xy -10.822724 5.459794) (xy -10.656647 6.60329) (xy -10.427648 7.886514) + (xy -10.149623 9.230539) (xy -9.836469 10.55644) (xy -9.55658 11.597954) (xy -9.250957 12.72219) + (xy -8.966052 13.876702) (xy -8.732917 14.9289) (xy -8.582603 15.746194) (xy -8.578337 15.774965) + (xy -8.440027 17.385131) (xy -7.996831 17.385131) (xy -8.21361 15.371092) (xy -8.699029 13.077166) + (xy -8.821687 12.612684) (xy -9.144979 11.375898) (xy -9.459722 10.087216) (xy -9.749965 8.820751) + (xy -9.99976 7.650618) (xy -10.193155 6.650927) (xy -10.314201 5.895793) (xy -10.348202 5.519616) + (xy -10.292174 5.129851) (xy -10.16 4.982308) (xy -10.042833 4.807817) (xy -9.973093 4.36694) + (xy -9.964616 4.114608) (xy -9.92955 3.566582) (xy -9.841209 3.203894) (xy -9.794697 3.141893) + (xy -9.723973 2.902171) (xy -9.750033 2.422097) (xy -9.786188 2.202285) (xy -9.892457 1.568526) + (xy -9.937934 1.115999) (xy -9.919795 0.912488) (xy -9.835216 1.025769) (xy -9.577307 1.250011) + (xy -9.459872 1.27) (xy -9.284419 1.088093) (xy -9.193392 0.575609) (xy -9.181929 -0.217597) + (xy -9.203978 -0.574639) (xy -9.592177 -0.574639) (xy -9.603939 -0.294948) (xy -9.685429 -0.257528) + (xy -9.837174 -0.426727) (xy -10.007582 -0.683846) (xy -10.281675 -1.09691) (xy -10.420369 -1.204972) + (xy -10.489675 -1.037893) (xy -10.511062 -0.911597) (xy -10.576614 -0.746762) (xy -10.712538 -0.809451) + (xy -10.952355 -1.137232) (xy -11.329587 -1.76767) (xy -11.427372 -1.938469) (xy -11.978465 -2.824825) + (xy -12.633942 -3.762712) (xy -12.680994 -3.822721) (xy -13.334058 -3.822721) (xy -13.360784 -3.81) + (xy -13.53909 -3.947547) (xy -13.579231 -4.005384) (xy -13.584041 -4.023033) (xy -15.954361 -4.023033) + (xy -16.210956 -3.901959) (xy -16.7349 -3.708932) (xy -17.418915 -3.483156) (xy -17.507422 -3.455487) + (xy -18.408701 -3.137222) (xy -19.001371 -2.808264) (xy -19.363175 -2.399327) (xy -19.571856 -1.841124) + (xy -19.629144 -1.564565) (xy -19.756018 -0.952963) (xy -19.926044 -0.632452) (xy -20.248416 -0.508973) + (xy -20.83233 -0.488471) (xy -20.878435 -0.488461) (xy -21.446907 -0.508364) (xy -21.759913 -0.623485) + (xy -21.95257 -0.916942) (xy -22.069483 -1.221154) (xy -22.532128 -2.230811) (xy -23.078534 -2.975363) + (xy -23.66343 -3.394266) (xy -23.706667 -3.410544) (xy -24.359045 -3.569982) (xy -25.319133 -3.712246) + (xy -26.504026 -3.831109) (xy -27.830816 -3.920344) (xy -29.216598 -3.973725) (xy -30.578467 -3.985024) + (xy -31.202951 -3.973569) (xy -32.313814 -3.935725) (xy -33.116678 -3.887105) (xy -33.694307 -3.814787) + (xy -34.129468 -3.70585) (xy -34.504923 -3.547372) (xy -34.738785 -3.421536) (xy -35.434692 -2.897845) + (xy -35.927901 -2.176455) (xy -36.007642 -2.010406) (xy -36.274039 -1.466203) (xy -36.511027 -1.188736) + (xy -36.849037 -1.088156) (xy -37.366165 -1.074615) (xy -37.944647 -1.065081) (xy -38.350521 -1.040912) + (xy -38.441923 -1.025769) (xy -38.496171 -1.194308) (xy -38.556275 -1.692156) (xy -38.617244 -2.458005) + (xy -38.674087 -3.430545) (xy -38.716267 -4.396154) (xy -38.770414 -5.564219) (xy -38.839731 -6.641726) + (xy -38.9176 -7.548739) (xy -38.997404 -8.20532) (xy -39.054849 -8.48629) (xy -39.177408 -8.943503) + (xy -39.207983 -9.206089) (xy -39.200986 -9.221834) (xy -39.010371 -9.170832) (xy -38.587613 -8.971146) + (xy -38.2066 -8.766827) (xy -37.625265 -8.481593) (xy -36.799017 -8.126807) (xy -35.854148 -7.755015) + (xy -35.207593 -7.519039) (xy -33.138333 -6.790897) (xy -34.202628 -6.479401) (xy -35.162016 -6.135744) + (xy -35.814728 -5.764042) (xy -36.125004 -5.386649) (xy -36.146154 -5.264305) (xy -36.094342 -5.027745) + (xy -35.900582 -5.04284) (xy -35.507391 -5.322491) (xy -35.366357 -5.439321) (xy -34.745527 -5.828162) + (xy -33.928664 -6.093876) (xy -32.871318 -6.242408) (xy -31.529039 -6.279703) (xy -29.857375 -6.211703) + (xy -29.678942 -6.199923) (xy -28.23499 -6.078966) (xy -27.070877 -5.920725) (xy -26.075932 -5.702024) + (xy -25.139478 -5.399687) (xy -24.374231 -5.089061) (xy -24.085828 -5.054126) (xy -24.032308 -5.166341) + (xy -24.195141 -5.374173) (xy -24.607704 -5.642407) (xy -24.862693 -5.769108) (xy -25.323787 -5.994635) + (xy -25.448224 -6.111361) (xy -25.264527 -6.149566) (xy -25.221788 -6.150324) (xy -24.728889 -6.086154) + (xy -23.971762 -5.908101) (xy -23.049241 -5.646805) (xy -22.060162 -5.332907) (xy -21.103358 -4.997046) + (xy -20.277663 -4.669864) (xy -19.91794 -4.50604) (xy -19.248339 -4.368411) (xy -18.945397 -4.436948) + (xy -18.58746 -4.48767) (xy -18.042217 -4.477978) (xy -17.409029 -4.421622) (xy -16.787259 -4.332352) + (xy -16.276269 -4.223919) (xy -15.97542 -4.110073) (xy -15.954361 -4.023033) (xy -13.584041 -4.023033) + (xy -13.629019 -4.188048) (xy -13.602293 -4.200769) (xy -13.423988 -4.063222) (xy -13.383847 -4.005384) + (xy -13.334058 -3.822721) (xy -12.680994 -3.822721) (xy -13.258363 -4.559074) (xy -13.299105 -4.606488) + (xy -13.839906 -5.194477) (xy -14.499063 -5.857142) (xy -15.21349 -6.537542) (xy -15.9201 -7.178735) + (xy -16.555807 -7.723779) (xy -17.057523 -8.115733) (xy -17.362163 -8.297656) (xy -17.395474 -8.303846) + (xy -17.563298 -8.24693) (xy -17.50696 -8.057199) (xy -17.203259 -7.706181) (xy -16.628991 -7.165404) + (xy -16.057829 -6.662378) (xy -15.110213 -5.811546) (xy -14.482307 -5.1708) (xy -14.173252 -4.726764) + (xy -14.182189 -4.46606) (xy -14.508258 -4.375313) (xy -15.150599 -4.441146) (xy -15.925692 -4.605686) + (xy -16.78358 -4.786507) (xy -17.609766 -4.919632) (xy -18.242929 -4.979657) (xy -18.307691 -4.980783) + (xy -19.461141 -5.078555) (xy -20.681539 -5.337392) (xy -21.766196 -5.711439) (xy -21.98077 -5.811745) + (xy -22.454721 -6.07653) (xy -23.153716 -6.501761) (xy -23.980481 -7.026951) (xy -24.769917 -7.546134) + (xy -25.556657 -8.061723) (xy -26.23516 -8.485791) (xy -26.735294 -8.775921) (xy -26.986929 -8.8897) + (xy -26.991917 -8.89) (xy -27.092913 -8.793759) (xy -26.882142 -8.520173) (xy -26.383519 -8.091946) + (xy -25.620956 -7.53178) (xy -25.402578 -7.381086) (xy -24.13 -6.512174) (xy -26.279231 -6.625019) + (xy -28.091663 -6.727555) (xy -29.575225 -6.830875) (xy -30.791742 -6.94318) (xy -31.803044 -7.07267) + (xy -32.670957 -7.227547) (xy -33.45731 -7.416012) (xy -34.223929 -7.646264) (xy -34.387693 -7.700524) + (xy -35.725225 -8.186608) (xy -36.971078 -8.708528) (xy -38.055015 -9.232189) (xy -38.906801 -9.723495) + (xy -39.456199 -10.148353) (xy -39.479005 -10.172041) (xy -39.930534 -10.567572) (xy -40.211303 -10.644146) + (xy -40.310222 -10.439468) (xy -40.216198 -9.991243) (xy -39.918139 -9.337175) (xy -39.790752 -9.112339) + (xy -39.650435 -8.828635) (xy -39.54135 -8.474258) (xy -39.456068 -7.988682) (xy -39.387161 -7.311384) + (xy -39.327201 -6.38184) (xy -39.26876 -5.139524) (xy -39.251201 -4.716185) (xy -38.958384 -0.569124) + (xy -38.429646 3.302115) (xy -37.667244 6.886749) (xy -36.67343 10.173991) (xy -35.568592 12.900569) + (xy -34.838144 14.481621) (xy -36.354914 12.906964) (xy -37.071906 12.195949) (xy -37.608038 11.731821) + (xy -37.945002 11.522255) (xy -38.064491 11.574926) (xy -37.948197 11.897508) (xy -37.673726 12.354105) + (xy -37.448531 12.778902) (xy -37.121598 13.50318) (xy -36.719956 14.457477) (xy -36.270632 15.57233) + (xy -35.800654 16.778275) (xy -35.337051 18.005851) (xy -34.906849 19.185594) (xy -34.537077 20.248041) + (xy -34.254763 21.123729) (xy -34.232121 21.199231) (xy -34.001872 22.048187) (xy -33.784728 23.020306) + (xy -33.562923 24.203064) (xy -33.318693 25.683936) (xy -33.30957 25.741923) (xy -33.271068 26.129807) + (xy -33.297594 26.279231) (xy -33.433013 26.128978) (xy -33.708897 25.740033) (xy -33.978788 25.33057) + (xy -34.501372 24.5875) (xy -34.941987 24.090399) (xy -35.269185 23.851693) (xy -35.45152 23.883808) + (xy -35.457547 24.19917) (xy -35.255819 24.810206) (xy -35.247985 24.829037) (xy -35.073756 25.338891) + (xy -34.885436 26.04054) (xy -34.696473 26.860302) (xy -34.520313 27.724491) (xy -34.370408 28.559425) + (xy -34.260203 29.291417) (xy -34.203149 29.846785) (xy -34.212693 30.151844) (xy -34.273065 30.170641) + (xy -34.434602 29.981656) (xy -34.748074 29.599689) (xy -34.908065 29.402103) (xy -35.208683 29.071342) + (xy -35.707543 28.56727) (xy -36.348826 27.941986) (xy -37.076711 27.247592) (xy -37.835377 26.536187) + (xy -38.569003 25.859873) (xy -39.221769 25.270749) (xy -39.737854 24.820917) (xy -40.061438 24.562477) + (xy -40.137942 24.520769) (xy -40.248271 24.687598) (xy -40.157099 25.186478) (xy -39.86501 26.014999) + (xy -39.651444 26.534171) (xy -39.053657 27.94) (xy -39.70029 27.33453) (xy -40.066541 26.991609) + (xy -40.651581 26.443852) (xy -41.388941 25.753493) (xy -42.21215 24.982766) (xy -42.674067 24.550299) + (xy -43.69541 23.612663) (xy -44.468471 22.948515) (xy -45.012036 22.546081) (xy -45.344888 22.393584) + (xy -45.485812 22.479248) (xy -45.453593 22.791295) (xy -45.448184 22.811154) (xy -45.257865 23.527227) + (xy -45.206817 23.886266) (xy -45.325038 23.906416) (xy -45.642525 23.605823) (xy -46.039948 23.169115) + (xy -47.961865 20.899811) (xy -49.677901 18.585659) (xy -50.372314 17.555308) (xy -50.929015 16.717819) + (xy -51.33062 16.156005) (xy -51.630884 15.815266) (xy -51.883559 15.641) (xy -52.142399 15.578606) + (xy -52.324678 15.572154) (xy -52.940027 15.447878) (xy -53.252427 15.210693) (xy -53.578865 14.699449) + (xy -53.995477 13.927) (xy -54.453911 12.997531) (xy -54.905814 12.015229) (xy -55.302834 11.084278) + (xy -55.596617 10.308865) (xy -55.719473 9.894913) (xy -55.953708 9.157689) (xy -56.233642 8.772923) + (xy -56.543154 8.754751) (xy -56.771976 8.97208) (xy -56.981023 9.204128) (xy -57.130546 9.100768) + (xy -57.216678 8.947952) (xy -57.345256 8.632602) (xy -57.538454 8.03896) (xy -57.803492 7.142508) + (xy -58.147592 5.918732) (xy -58.577973 4.343114) (xy -58.633967 4.135874) (xy -58.840823 3.614447) + (xy -59.075808 3.480866) (xy -59.099997 3.48841) (xy -59.265768 3.36879) (xy -59.396401 2.868182) + (xy -59.491991 1.98506) (xy -59.552632 0.717898) (xy -59.578417 -0.934829) (xy -59.569441 -2.974647) + (xy -59.555997 -3.907692) (xy -59.530746 -5.316032) (xy -59.503449 -6.402461) (xy -59.46626 -7.235794) + (xy -59.411332 -7.884846) (xy -59.33082 -8.418433) (xy -59.216877 -8.90537) (xy -59.061658 -9.414471) + (xy -58.86088 -10.004259) (xy -57.922855 -12.346507) (xy -56.75291 -14.671475) (xy -55.404668 -16.893587) + (xy -53.931757 -18.927269) (xy -52.387799 -20.686946) (xy -51.818016 -21.243299) (xy -50.778749 -22.116226) + (xy -49.586884 -22.962274) (xy -48.334436 -23.728001) (xy -47.113426 -24.359962) (xy -46.01587 -24.804714) + (xy -45.400897 -24.970301) (xy -44.786155 -24.996413) (xy -44.115154 -24.901367) (xy -44.063729 -24.887847) + (xy -43.567498 -24.789056) (xy -43.246325 -24.795148) (xy -43.211695 -24.814716) (xy -43.273598 -25.003105) + (xy -43.563535 -25.362618) (xy -43.923789 -25.724506) (xy -44.34126 -26.147914) (xy -44.453255 -26.359465) + (xy -44.252882 -26.360382) (xy -43.733249 -26.151882) (xy -43.138938 -25.863391) (xy -42.599811 -25.60227) + (xy -42.320007 -25.540909) (xy -42.209199 -25.704582) (xy -42.177061 -26.118563) (xy -42.176469 -26.132692) + (xy -42.151296 -26.507158) (xy -42.113883 -26.510082) (xy -42.069196 -26.279231) (xy -41.9543 -25.69311) + (xy -41.823264 -25.433829) (xy -41.615093 -25.440042) (xy -41.374284 -25.580303) (xy -41.02329 -25.715737) + (xy -40.369968 -25.884547) (xy -39.499227 -26.067667) (xy -38.495973 -26.246032) (xy -38.201607 -26.292722) + (xy -35.551284 -26.597649) (xy -33.145778 -26.649759) (xy -30.930067 -26.44683) (xy -28.849126 -25.986635) + (xy -28.571537 -25.903446) (xy -26.77162 -25.30104) (xy -25.056703 -24.624007) (xy -23.356926 -23.836757) + (xy -21.602429 -22.903702) (xy -19.723352 -21.789252) (xy -17.649835 -20.457816) (xy -16.90077 -19.957878) + (xy -15.905329 -19.32333) (xy -14.760457 -18.64697) (xy -13.660936 -18.042365) (xy -13.286155 -17.850383) + (xy -12.406371 -17.387993) (xy -11.893513 -17.052768) (xy -11.748636 -16.834615) (xy -11.972796 -16.723439) + (xy -12.567048 -16.709147) (xy -13.399251 -16.76891) (xy -14.099046 -16.817354) (xy -14.488248 -16.792081) + (xy -14.641696 -16.683723) (xy -14.653847 -16.611872) (xy -14.528256 -16.280069) (xy -14.453214 -16.21368) + (xy -14.240422 -15.952669) (xy -13.918637 -15.3983) (xy -13.52166 -14.620962) (xy -13.083288 -13.691042) + (xy -12.637323 -12.678928) (xy -12.217562 -11.655009) (xy -12.032502 -11.172489) (xy -11.167472 -8.590531) + (xy -10.483035 -5.928611) (xy -9.969982 -3.223846) (xy -9.775727 -2.003437) (xy -9.649616 -1.132252) + (xy -9.592177 -0.574639) (xy -9.203978 -0.574639) (xy -9.245171 -1.24167) (xy -9.378258 -2.446754) + (xy -9.57633 -3.782995) (xy -9.834528 -5.200536) (xy -10.147991 -6.649524) (xy -10.288381 -7.229231) + (xy -11.092957 -9.948663) (xy -12.130181 -12.673874) (xy -13.019647 -14.605) (xy -13.87623 -16.314615) + (xy -12.726384 -16.314615) (xy -11.733843 -16.34825) (xy -10.984586 -16.442696) (xy -10.527445 -16.588266) + (xy -10.410815 -16.773981) (xy -10.602093 -16.933458) (xy -11.08002 -17.228074) (xy -11.780362 -17.620977) + (xy -12.638882 -18.075317) (xy -13.007293 -18.263524) (xy -14.114894 -18.84691) (xy -15.284099 -19.501482) + (xy -16.378552 -20.148738) (xy -17.2619 -20.71017) (xy -17.291539 -20.730154) (xy -19.35899 -22.087892) + (xy -21.223097 -23.21826) (xy -22.964586 -24.162229) (xy -24.664179 -24.960769) (xy -26.402602 -25.65485) + (xy -28.19921 -26.266068) (xy -29.743169 -26.707643) (xy -31.185065 -27.007361) (xy -32.610481 -27.16859) + (xy -34.105 -27.194698) (xy -35.754205 -27.089053) (xy -37.643678 -26.855022) (xy -38.761748 -26.681721) + (xy -39.670468 -26.524857) (xy -40.445434 -26.375001) (xy -41.000123 -26.249932) (xy -41.241395 -26.172119) + (xy -41.366498 -26.195522) (xy -41.414408 -26.502991) (xy -41.391719 -27.142826) (xy -41.385681 -27.22889) + (xy -41.357851 -27.931183) (xy -41.407971 -28.310475) (xy -41.544554 -28.428315) (xy -41.551639 -28.428461) + (xy -41.792042 -28.263027)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy 11.731473 -31.230129) (xy 10.114697 -30.867734) (xy 8.382805 -30.309407) (xy 6.619167 -29.59251) + (xy 4.907157 -28.754407) (xy 3.330145 -27.832458) (xy 1.971505 -26.864027) (xy 0.914608 -25.886476) + (xy 0.898992 -25.869171) (xy 0.443132 -25.281881) (xy -0.097649 -24.463894) (xy -0.644514 -23.539314) + (xy -0.982926 -22.906564) (xy -1.455992 -21.995256) (xy -1.9313 -21.112469) (xy -2.344411 -20.376283) + (xy -2.568293 -20.001492) (xy -3.19685 -18.888699) (xy -3.671111 -17.763149) (xy -4.00812 -16.548249) + (xy -4.224915 -15.167411) (xy -4.33854 -13.544042) (xy -4.36673 -11.918461) (xy -4.347409 -10.898665) + (xy -4.270381 -10.071372) (xy -4.108301 -9.267086) (xy -3.833826 -8.31631) (xy -3.736343 -8.010769) + (xy -3.24551 -6.431307) (xy -2.873715 -5.065674) (xy -2.60052 -3.798046) (xy -2.405489 -2.512597) + (xy -2.268185 -1.093503) (xy -2.168171 0.575061) (xy -2.149292 0.983758) (xy -2.073165 2.487662) + (xy -1.98149 3.680417) (xy -1.854777 4.641623) (xy -1.673537 5.45088) (xy -1.418279 6.18779) + (xy -1.069513 6.931952) (xy -0.607748 7.762966) (xy -0.405134 8.107077) (xy 0.354581 9.267936) + (xy 1.205223 10.318437) (xy 2.193678 11.296179) (xy 3.366834 12.238763) (xy 4.771576 13.183788) + (xy 6.454791 14.168856) (xy 8.463367 15.231566) (xy 8.506125 15.253334) (xy 9.833574 15.905366) + (xy 10.874384 16.36587) (xy 11.613185 16.628483) (xy 11.981239 16.691737) (xy 12.436157 16.642052) + (xy 13.154317 16.519523) (xy 14.019634 16.345178) (xy 14.56179 16.224302) (xy 15.860151 15.883391) + (xy 17.260628 15.447544) (xy 18.663335 14.953648) (xy 19.968389 14.438593) (xy 21.075907 13.939266) + (xy 21.783035 13.557417) (xy 22.218718 13.2412) (xy 22.87439 12.701438) (xy 23.691921 11.989084) + (xy 24.613179 11.15509) (xy 25.580032 10.250411) (xy 25.846209 9.995979) (xy 28.930112 7.033846) + (xy 29.616119 5.177693) (xy 30.125829 3.697787) (xy 30.63999 2.025293) (xy 31.128574 0.272944) + (xy 31.561554 -1.446523) (xy 31.908901 -3.020373) (xy 32.129093 -4.256794) (xy 32.35998 -6.181141) + (xy 32.505194 -8.198849) (xy 32.541762 -9.418381) (xy 32.020024 -9.418381) (xy 31.989912 -7.950421) + (xy 31.92519 -6.628131) (xy 31.851292 -5.763846) (xy 31.692233 -4.625864) (xy 31.445871 -3.291013) + (xy 31.129698 -1.823284) (xy 30.761207 -0.286668) (xy 30.357892 1.254844) (xy 29.937245 2.73726) + (xy 29.516759 4.096589) (xy 29.113927 5.26884) (xy 28.746243 6.190021) (xy 28.431199 6.796143) + (xy 28.408814 6.829077) (xy 28.186679 7.079996) (xy 27.726276 7.551773) (xy 27.074482 8.198071) + (xy 26.278176 8.972555) (xy 25.384237 9.828891) (xy 25.122728 10.07711) (xy 24.016929 11.112556) + (xy 23.12862 11.912439) (xy 22.402443 12.520934) (xy 21.783039 12.982214) (xy 21.215047 13.340457) + (xy 20.680815 13.621627) (xy 19.631227 14.087821) (xy 18.426871 14.55218) (xy 17.137925 14.994786) + (xy 15.834566 15.395724) (xy 14.586969 15.735078) (xy 13.465311 15.992931) (xy 12.539768 16.149368) + (xy 11.880519 16.184471) (xy 11.723077 16.163835) (xy 11.296366 16.029348) (xy 10.658239 15.783655) + (xy 9.988343 15.498113) (xy 8.798584 14.926964) (xy 7.46233 14.221902) (xy 6.096842 13.44989) + (xy 4.819384 12.677895) (xy 3.747216 11.97288) (xy 3.475219 11.778657) (xy 2.136552 10.660639) + (xy 1.007788 9.395129) (xy -0.009407 7.869252) (xy -0.163646 7.601759) (xy -0.604682 6.795043) + (xy -0.944442 6.080141) (xy -1.1997 5.382226) (xy -1.387233 4.626471) (xy -1.523817 3.738048) + (xy -1.626228 2.642129) (xy -1.711242 1.263889) (xy -1.748166 0.534239) (xy -1.842051 -1.119477) + (xy -1.957117 -2.485677) (xy -2.110922 -3.667595) (xy -2.321026 -4.768468) (xy -2.604988 -5.891531) + (xy -2.980368 -7.14002) (xy -3.13555 -7.622508) (xy -3.50999 -8.847244) (xy -3.759649 -9.892338) + (xy -3.897151 -10.879084) (xy -3.935119 -11.928782) (xy -3.886175 -13.162726) (xy -3.812887 -14.131125) + (xy -3.577181 -16.928687) (xy -1.860986 -20.285113) (xy -1.056919 -21.838434) (xy -0.384783 -23.085683) + (xy 0.187619 -24.075421) (xy 0.692483 -24.856206) (xy 1.162006 -25.476598) (xy 1.628385 -25.985156) + (xy 2.123816 -26.430439) (xy 2.31615 -26.585125) (xy 3.483346 -27.394099) (xy 4.894274 -28.202099) + (xy 6.458468 -28.971076) (xy 8.085465 -29.662981) (xy 9.6848 -30.239765) (xy 11.166009 -30.663379) + (xy 12.438628 -30.895772) (xy 12.602307 -30.911489) (xy 13.393825 -30.922497) (xy 14.340677 -30.825997) + (xy 15.530586 -30.611337) (xy 16.11923 -30.484432) (xy 18.578891 -29.870044) (xy 20.700799 -29.189384) + (xy 22.53617 -28.413667) (xy 24.136216 -27.514108) (xy 25.552154 -26.461924) (xy 26.835197 -25.228329) + (xy 28.034107 -23.787783) (xy 28.881126 -22.565323) (xy 29.7106 -21.184742) (xy 30.465705 -19.754897) + (xy 31.089618 -18.384647) (xy 31.525515 -17.18285) (xy 31.578098 -16.998461) (xy 31.716563 -16.264011) + (xy 31.831586 -15.215937) (xy 31.921305 -13.930788) (xy 31.983858 -12.485113) (xy 32.017385 -10.955461) + (xy 32.020024 -9.418381) (xy 32.541762 -9.418381) (xy 32.566296 -10.236533) (xy 32.544848 -12.220809) + (xy 32.442412 -14.078292) (xy 32.26055 -15.735597) (xy 32.000825 -17.119339) (xy 31.843344 -17.682307) + (xy 31.174649 -19.392876) (xy 30.267537 -21.187005) (xy 29.192058 -22.951266) (xy 28.01826 -24.572232) + (xy 26.816194 -25.936476) (xy 26.636898 -26.112803) (xy 25.349743 -27.197021) (xy 23.834383 -28.225496) + (xy 22.250444 -29.09465) (xy 21.56755 -29.402152) (xy 20.545078 -29.77884) (xy 19.303549 -30.160643) + (xy 17.939733 -30.525062) (xy 16.550401 -30.849601) (xy 15.232324 -31.111759) (xy 14.082273 -31.289038) + (xy 13.197019 -31.358939) (xy 13.14976 -31.359231) (xy 11.731473 -31.230129)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy -12.677379 -29.641306) (xy -12.988745 -29.410172) (xy -13.215272 -29.025169) (xy -13.266679 -28.487924) + (xy -13.238424 -28.140279) (xy -13.145184 -27.572158) (xy -12.970216 -27.129524) (xy -12.64704 -26.721115) + (xy -12.109177 -26.255671) (xy -11.566224 -25.844756) (xy -10.990406 -25.372316) (xy -10.530997 -24.910476) + (xy -10.313476 -24.604507) (xy -10.067034 -24.21115) (xy -9.829165 -24.196528) (xy -9.556157 -24.562014) + (xy -9.520005 -24.629484) (xy -9.221567 -25.020803) (xy -8.725644 -25.50729) (xy -8.309996 -25.850638) + (xy -7.716746 -26.342292) (xy -7.197294 -26.841015) (xy -6.957979 -27.117995) (xy -6.657816 -27.736118) + (xy -6.567 -28.315419) (xy -7.033847 -28.315419) (xy -7.118397 -27.748151) (xy -7.427639 -27.256909) + (xy -7.686861 -26.992384) (xy -8.122506 -26.596285) (xy -8.648111 -26.138392) (xy -9.175547 -25.692773) + (xy -9.61669 -25.333496) (xy -9.883413 -25.134626) (xy -9.91853 -25.116745) (xy -10.084301 -25.224452) + (xy -10.474345 -25.517851) (xy -11.009121 -25.936878) (xy -11.090838 -26.002009) (xy -11.701846 -26.524136) + (xy -12.226831 -27.0329) (xy -12.552234 -27.418242) (xy -12.552433 -27.418547) (xy -12.868941 -28.134337) + (xy -12.863639 -28.72789) (xy -12.597961 -29.153291) (xy -12.133341 -29.364627) (xy -11.531212 -29.315982) + (xy -10.853008 -28.961443) (xy -10.678313 -28.819231) (xy -10.137915 -28.393028) (xy -9.787675 -28.254533) + (xy -9.569873 -28.389365) (xy -9.503079 -28.526444) (xy -9.263242 -28.79703) (xy -8.814339 -29.091613) + (xy -8.705811 -29.146317) (xy -7.986749 -29.357499) (xy -7.443847 -29.246341) (xy -7.115763 -28.832053) + (xy -7.033847 -28.315419) (xy -6.567 -28.315419) (xy -6.548829 -28.431323) (xy -6.632654 -29.067427) + (xy -6.910927 -29.508246) (xy -6.929092 -29.522074) (xy -7.561007 -29.768988) (xy -8.317472 -29.76511) + (xy -9.034539 -29.523215) (xy -9.304346 -29.336974) (xy -9.838175 -28.877793) (xy -10.514814 -29.336974) + (xy -11.262595 -29.690307) (xy -12.021781 -29.792885) (xy -12.677379 -29.641306)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy -25.009231 14.713263) (xy -24.823672 14.870374) (xy -24.304875 15.038369) (xy -23.509662 15.204595) + (xy -22.494855 15.356397) (xy -21.736539 15.442123) (xy -20.972953 15.486523) (xy -20.575314 15.431552) + (xy -20.515385 15.356912) (xy -20.597796 15.206882) (xy -20.883463 15.08871) (xy -21.430033 14.988667) + (xy -22.295156 14.893022) (xy -22.566923 14.868281) (xy -23.328263 14.788563) (xy -24.032368 14.694494) + (xy -24.374231 14.635939) (xy -24.841433 14.596464) (xy -25.009231 14.713263)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy -18.174883 7.449395) (xy -18.082898 7.787005) (xy -17.771122 8.292344) (xy -17.547868 8.57973) + (xy -16.924967 9.335417) (xy -17.407723 9.747709) (xy -17.919562 10.154428) (xy -18.359517 10.468257) + (xy -18.639917 10.74421) (xy -18.595916 10.912202) (xy -18.292443 10.897753) (xy -18.068905 10.801616) + (xy -17.584711 10.477024) (xy -17.109251 10.055339) (xy -16.748324 9.641992) (xy -16.607693 9.345523) + (xy -16.714775 9.062796) (xy -16.982595 8.611131) (xy -17.331007 8.104048) (xy -17.679868 7.655072) + (xy -17.949034 7.377723) (xy -18.024231 7.339017) (xy -18.174883 7.449395)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy -30.728938 -2.25463) (xy -31.964198 -1.867559) (xy -32.611582 -1.648655) (xy -33.044096 -1.674793) + (xy -33.102314 -1.70295) (xy -33.46201 -1.811721) (xy -33.563355 -1.654613) (xy -33.389766 -1.340005) + (xy -33.237214 -1.116868) (xy -33.360917 -1.079102) (xy -33.655 -1.143621) (xy -34.05582 -1.166243) + (xy -34.203734 -1.029873) (xy -34.033741 -0.805939) (xy -33.988976 -0.776626) (xy -33.873275 -0.513222) + (xy -33.90445 -0.276634) (xy -33.91661 0.033744) (xy -33.725502 0.066005) (xy -33.413901 -0.191738) + (xy -33.403094 -0.204633) (xy -33.139302 -0.36468) (xy -32.942731 -0.171443) (xy -32.838119 0.339908) + (xy -32.827608 0.613492) (xy -32.78821 1.076531) (xy -32.685314 1.797628) (xy -32.537583 2.652805) + (xy -32.459963 3.0558) (xy -32.30089 3.926394) (xy -32.182393 4.71556) (xy -32.121721 5.301466) + (xy -32.11804 5.470769) (xy -32.085893 5.882876) (xy -31.904642 6.00594) (xy -31.779239 5.995009) + (xy -31.53305 6.024555) (xy -31.546539 6.141548) (xy -31.571228 6.312597) (xy -31.517301 6.318408) + (xy -31.255889 6.286021) (xy -30.719243 6.230937) (xy -30.021381 6.164837) (xy -29.991539 6.162112) + (xy -29.210339 6.059138) (xy -28.510851 5.912427) (xy -28.071886 5.764896) (xy -27.515502 5.344711) + (xy -27.156276 4.711021) (xy -26.988864 3.831391) (xy -27.007921 2.673387) (xy -27.208104 1.204574) + (xy -27.267295 0.881772) (xy -27.402669 0.078045) (xy -27.446036 -0.268302) (xy -27.98072 -0.268302) + (xy -28.123792 -0.013968) (xy -28.436088 0.156413) (xy -28.723799 0.023016) (xy -28.880559 -0.335825) + (xy -28.877506 -0.569056) (xy -28.70037 -0.908681) (xy -28.390298 -0.939773) (xy -28.070317 -0.651377) + (xy -27.98072 -0.268302) (xy -27.446036 -0.268302) (xy -27.490753 -0.625423) (xy -27.516717 -1.103705) + (xy -27.511525 -1.175275) (xy -27.451539 -1.62862) (xy -26.282406 -1.151155) (xy -25.518069 -0.804199) + (xy -24.778123 -0.412276) (xy -24.373867 -0.161282) (xy -23.876711 0.123531) (xy -23.553087 0.206045) + (xy -23.458411 0.103942) (xy -23.6481 -0.165095) (xy -23.836923 -0.332608) (xy -24.185879 -0.673335) + (xy -24.350999 -0.945834) (xy -24.351694 -0.950789) (xy -24.3959 -1.307289) (xy -24.40054 -1.34277) + (xy -24.537678 -1.386191) (xy -24.688715 -1.292772) (xy -24.963369 -1.194991) (xy -25.40071 -1.286681) + (xy -25.833626 -1.461257) (xy -27.594061 -2.088802) (xy -29.222451 -2.353035) (xy -30.728938 -2.25463)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy -14.704981 4.357544) (xy -14.958926 4.498064) (xy -14.987568 4.665262) (xy -14.734994 4.888338) + (xy -14.297879 4.909157) (xy -14.108384 4.852439) (xy -13.96165 4.682469) (xy -14.066722 4.495016) + (xy -14.35274 4.346389) (xy -14.704981 4.357544)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy -26.184843 -2.355514) (xy -26.085062 -2.152275) (xy -25.748196 -1.918302) (xy -25.683884 -1.887516) + (xy -25.132648 -1.686123) (xy -24.858919 -1.720216) (xy -24.813847 -1.86099) (xy -24.97643 -2.056328) + (xy -25.356576 -2.2678) (xy -25.792883 -2.41623) (xy -25.998874 -2.442307) (xy -26.184843 -2.355514)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy 14.973855 7.241511) (xy 14.596512 7.480784) (xy 14.43886 7.606511) (xy 13.599036 8.199045) + (xy 12.615523 8.722955) (xy 11.65836 9.093265) (xy 11.27267 9.188829) (xy 10.80712 9.317363) + (xy 10.561914 9.465419) (xy 10.550769 9.497899) (xy 10.718883 9.630778) (xy 11.149485 9.653207) + (xy 11.731964 9.570916) (xy 12.30923 9.406801) (xy 12.992658 9.103803) (xy 13.689309 8.703958) + (xy 14.328537 8.261444) (xy 14.839697 7.83044) (xy 15.152145 7.465123) (xy 15.195234 7.219671) + (xy 15.181926 7.203721) (xy 14.973855 7.241511)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy 5.064066 -4.474191) (xy 4.890442 -4.06977) (xy 4.756238 -3.614615) (xy 4.539537 -2.92192) + (xy 4.20686 -2.045944) (xy 3.821504 -1.150627) (xy 3.726269 -0.947007) (xy 2.966943 0.645985) + (xy 3.413391 1.592993) (xy 3.752748 2.168378) (xy 4.216145 2.765443) (xy 4.746853 3.335092) + (xy 5.288144 3.828228) (xy 5.783289 4.195753) (xy 6.175559 4.38857) (xy 6.408227 4.357583) + (xy 6.447692 4.219098) (xy 6.300736 4.019773) (xy 5.919056 3.681377) (xy 5.485323 3.350648) + (xy 4.838651 2.79041) (xy 4.24284 2.11789) (xy 3.986611 1.744054) (xy 3.769364 1.379389) + (xy 3.629216 1.096637) (xy 3.578015 0.823423) (xy 3.627607 0.487369) (xy 3.789839 0.016102) + (xy 4.076557 -0.662757) (xy 4.499607 -1.621581) (xy 4.559908 -1.758461) (xy 5.001805 -2.856767) + (xy 5.260134 -3.716204) (xy 5.327798 -4.305355) (xy 5.199979 -4.591538) (xy 5.064066 -4.474191)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy 27.991291 -9.691519) (xy 27.332324 -9.118212) (xy 26.908566 -8.388386) (xy 26.84546 -8.157307) + (xy 26.804469 -7.682251) (xy 26.907722 -7.53784) (xy 27.109357 -7.713315) (xy 27.363508 -8.197914) + (xy 27.399702 -8.28735) (xy 27.860626 -9.023454) (xy 28.323459 -9.374681) (xy 28.773896 -9.574103) + (xy 29.085577 -9.570199) (xy 29.4126 -9.3917) (xy 29.920306 -8.834748) (xy 30.161326 -8.029695) + (xy 30.131544 -7.017852) (xy 29.826841 -5.84053) (xy 29.779501 -5.711046) (xy 29.620212 -5.081712) + (xy 29.519778 -4.291375) (xy 29.501987 -3.854892) (xy 29.447443 -2.721699) (xy 29.269364 -1.903023) + (xy 28.942247 -1.335111) (xy 28.440591 -0.954207) (xy 28.318145 -0.895337) (xy 27.881588 -0.661682) + (xy 27.675073 -0.47285) (xy 27.680352 -0.422468) (xy 28.065941 -0.292343) (xy 28.598259 -0.459564) + (xy 29.135145 -0.842719) (xy 29.425618 -1.12587) (xy 29.616568 -1.413683) (xy 29.739082 -1.803472) + (xy 29.824248 -2.392554) (xy 29.899752 -3.23618) (xy 30.006537 -4.207133) (xy 30.160034 -5.178574) + (xy 30.332378 -5.982476) (xy 30.387968 -6.180187) (xy 30.608083 -7.264387) (xy 30.59358 -8.239605) + (xy 30.367428 -9.051849) (xy 29.952595 -9.647126) (xy 29.372048 -9.971441) (xy 28.765717 -9.99378) + (xy 27.991291 -9.691519)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy 27.554908 -3.465932) (xy 27.54923 -3.419231) (xy 27.697913 -3.229524) (xy 27.744615 -3.223846) + (xy 27.934322 -3.372529) (xy 27.94 -3.419231) (xy 27.791317 -3.608938) (xy 27.744615 -3.614615) + (xy 27.554908 -3.465932)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy 27.85006 -5.592377) (xy 27.801714 -5.170652) (xy 27.802677 -5.08) (xy 27.862384 -4.56203) + (xy 28.011952 -4.413308) (xy 28.267205 -4.619391) (xy 28.284344 -4.640384) (xy 28.369179 -4.968483) + (xy 28.294266 -5.380796) (xy 28.110964 -5.696278) (xy 27.965634 -5.763846) (xy 27.85006 -5.592377)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy 11.496257 -11.938346) (xy 11.234615 -11.826756) (xy 10.726286 -11.542935) (xy 10.140233 -11.137113) + (xy 9.567573 -10.683628) (xy 9.099422 -10.256819) (xy 8.826899 -9.931023) (xy 8.792307 -9.834178) + (xy 8.882508 -9.68079) (xy 9.169716 -9.786882) (xy 9.678841 -10.165258) (xy 10.043287 -10.477153) + (xy 10.535762 -10.877602) (xy 10.912429 -11.123) (xy 11.078774 -11.162508) (xy 11.144413 -10.927638) + (xy 11.22331 -10.39346) (xy 11.303442 -9.650616) (xy 11.347635 -9.135739) (xy 11.531253 -7.595957) + (xy 11.821208 -6.402389) (xy 12.229248 -5.5221) (xy 12.767121 -4.922155) (xy 12.879736 -4.840651) + (xy 13.495335 -4.501224) (xy 14.021738 -4.431645) (xy 14.584458 -4.590028) (xy 15.261239 -5.072091) + (xy 15.785699 -5.903744) (xy 16.153664 -7.072976) (xy 16.36096 -8.56778) (xy 16.408379 -9.837321) + (xy 16.409245 -10.110972) (xy 15.793627 -10.110972) (xy 15.607345 -9.784043) (xy 15.289437 -9.70862) + (xy 15.006744 -9.941176) (xy 14.946923 -10.257692) (xy 15.067718 -10.639621) (xy 15.339739 -10.820457) + (xy 15.627437 -10.748293) (xy 15.749956 -10.565209) (xy 15.793627 -10.110972) (xy 16.409245 -10.110972) + (xy 16.412307 -11.077718) (xy 17.082047 -10.521167) (xy 17.51768 -10.063021) (xy 17.75077 -9.62318) + (xy 17.765893 -9.525) (xy 17.864557 -9.159601) (xy 18.061966 -9.118072) (xy 18.241425 -9.378461) + (xy 18.293482 -9.724142) (xy 18.143112 -10.079078) (xy 17.746431 -10.504009) (xy 17.05956 -11.059677) + (xy 16.987657 -11.11393) (xy 15.660931 -11.903312) (xy 14.300346 -12.304227) (xy 12.910567 -12.316098) + (xy 11.496257 -11.938346)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy -1.714369 -11.110128) (xy -1.927916 -10.731054) (xy -1.873503 -10.159563) (xy -1.69392 -9.761131) + (xy -1.49939 -9.705316) (xy -1.377237 -9.992042) (xy -1.367693 -10.16) (xy -1.285098 -10.533745) + (xy -0.969095 -10.647205) (xy -0.904203 -10.648461) (xy -0.707802 -10.633883) (xy -0.558858 -10.552712) + (xy -0.440768 -10.348798) (xy -0.336929 -9.96599) (xy -0.230741 -9.348137) (xy -0.105599 -8.439086) + (xy 0.005832 -7.570586) (xy 0.229673 -6.35233) (xy 0.552606 -5.487941) (xy 0.987159 -4.950226) + (xy 1.292077 -4.778529) (xy 2.00383 -4.611493) (xy 2.648169 -4.738042) (xy 2.956798 -4.886723) + (xy 3.374987 -5.281976) (xy 3.602167 -5.929093) (xy 3.643714 -6.860354) (xy 3.505 -8.108034) + (xy 3.499163 -8.144215) (xy 3.419222 -8.636473) (xy 3.081994 -8.636473) (xy 3.022856 -8.294776) + (xy 2.746005 -8.136459) (xy 2.409887 -8.233234) (xy 2.19136 -8.52883) (xy 2.183796 -8.561733) + (xy 2.184173 -9.054713) (xy 2.366815 -9.343278) (xy 2.622858 -9.357118) (xy 2.930806 -9.0728) + (xy 3.081994 -8.636473) (xy 3.419222 -8.636473) (xy 3.252878 -9.660778) (xy 2.359131 -10.082647) + (xy 1.338898 -10.524287) (xy 0.34106 -10.885884) (xy -0.529861 -11.133695) (xy -1.169349 -11.233976) + (xy -1.209028 -11.234615) (xy -1.714369 -11.110128)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy 28.909291 -6.148957) (xy 28.734341 -5.745299) (xy 28.860328 -5.573653) (xy 28.923055 -5.568461) + (xy 29.159617 -5.724949) (xy 29.240269 -5.869965) (xy 29.274415 -6.20596) (xy 29.128147 -6.326291) + (xy 28.909291 -6.148957)) (layer B.SilkS) (width 0.01)) + (fp_poly (pts (xy 28.346331 -8.215772) (xy 28.207803 -7.999429) (xy 28.376187 -7.803358) (xy 28.773923 -7.717693) + (xy 28.774937 -7.717692) (xy 29.06426 -7.745623) (xy 29.014964 -7.892689) (xy 28.879848 -8.033888) + (xy 28.549676 -8.230475) (xy 28.346331 -8.215772)) (layer B.SilkS) (width 0.01)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 146.546822 14.046983 23) + (fp_text reference S39 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 54 mirror_inner_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 53 P6)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 0 0 337) + (fp_text reference S1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 1 pinky_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P21)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at -1.953656 4.602524 157) + (fp_text reference D1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 1 pinky_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 1 pinky_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 1 pinky_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 7.423891 -17.489592 337) + (fp_text reference S2 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 4 pinky_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P21)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 5.470236 -12.887068 157) + (fp_text reference D2 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 4 pinky_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 4 pinky_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 4 pinky_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 14.847783 -34.979184 337) + (fp_text reference S3 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 6 pinky_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P21)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 12.894127 -30.37666 157) + (fp_text reference D3 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 6 pinky_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 6 pinky_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 6 pinky_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 22.271674 -52.468777 337) + (fp_text reference S4 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 8 pinky_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 2 P21)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 20.318019 -47.866252 157) + (fp_text reference D4 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 8 pinky_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 8 pinky_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 8 pinky_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 19.052517 3.741872 337) + (fp_text reference S5 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 10 ring_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 17.098861 8.344396 157) + (fp_text reference D5 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 10 ring_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 10 ring_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 10 ring_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 26.476408 -13.74772 337) + (fp_text reference S6 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 12 ring_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 24.522753 -9.145196 157) + (fp_text reference D6 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 12 ring_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 12 ring_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 12 ring_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 33.9003 -31.237312 337) + (fp_text reference S7 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 13 ring_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 31.946644 -26.634788 157) + (fp_text reference D7 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 13 ring_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 13 ring_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 13 ring_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 41.324191 -48.726905 337) + (fp_text reference S8 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 14 ring_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 11 P20)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 39.370536 -44.12438 157) + (fp_text reference D8 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 14 ring_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 14 ring_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 14 ring_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 38.495765 6.563239 337) + (fp_text reference S9 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 15 middle_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 36.542109 11.165764 157) + (fp_text reference D9 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 15 middle_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 15 middle_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 15 middle_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 45.919656 -10.926353 337) + (fp_text reference S10 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 17 middle_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 43.966 -6.323829 157) + (fp_text reference D10 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 17 middle_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 17 middle_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 17 middle_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 53.343548 -28.415945 337) + (fp_text reference S11 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 18 middle_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 51.389892 -23.813421 157) + (fp_text reference D11 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 18 middle_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 18 middle_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 18 middle_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 60.767439 -45.905537 337) + (fp_text reference S12 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 19 middle_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 16 P19)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 58.813783 -41.303013 157) + (fp_text reference D12 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 19 middle_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 19 middle_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 19 middle_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 54.031701 18.589655 337) + (fp_text reference S13 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 20 index_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 52.078046 23.192179 157) + (fp_text reference D13 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 20 index_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 20 index_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 20 index_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 61.455593 1.100063 337) + (fp_text reference S14 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 22 index_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 59.501937 5.702587 157) + (fp_text reference D14 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 22 index_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 22 index_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 22 index_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 68.879484 -16.389529 337) + (fp_text reference S15 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 23 index_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 66.925828 -11.787005 157) + (fp_text reference D15 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 23 index_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 23 index_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 23 index_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 76.303376 -33.879122 337) + (fp_text reference S16 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 24 index_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 21 P18)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 74.34972 -29.276597 157) + (fp_text reference D16 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 24 index_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 24 index_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 24 index_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 69.176907 31.536576 337) + (fp_text reference S17 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 25 inner_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 67.223251 36.1391 157) + (fp_text reference D17 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 25 inner_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 25 inner_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 25 inner_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 76.600798 14.046983 337) + (fp_text reference S18 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 27 inner_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 74.647142 18.649508 157) + (fp_text reference D18 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 27 inner_home)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 27 inner_home)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 27 inner_home)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 84.02469 -3.442609 337) + (fp_text reference S19 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 28 inner_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 82.071034 1.159915 157) + (fp_text reference D19 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 28 inner_top)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 28 inner_top)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 28 inner_top)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 91.448581 -20.932201 337) + (fp_text reference S20 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 29 inner_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 26 P15)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 89.494925 -16.329677 157) + (fp_text reference D20 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 29 inner_num)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 29 inner_num)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 29 inner_num)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 90.57381 29.755418 337) + (fp_text reference S21 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 30 thumb_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 31 P14)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 88.620155 34.357943 157) + (fp_text reference D21 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 30 thumb_bottom)) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 30 thumb_bottom)) + (pad 1 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 30 thumb_bottom)) + (pad 2 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 223.14762 0 23) + (fp_text reference S22 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 32 mirror_pinky_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 33 P2)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 225.101276 4.602524 203) + (fp_text reference D22 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 32 mirror_pinky_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 32 mirror_pinky_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 32 mirror_pinky_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 215.723729 -17.489592 23) + (fp_text reference S23 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 34 mirror_pinky_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 33 P2)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 217.677384 -12.887068 203) + (fp_text reference D23 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 34 mirror_pinky_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 34 mirror_pinky_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 34 mirror_pinky_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 208.299837 -34.979184 23) + (fp_text reference S24 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 35 mirror_pinky_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 33 P2)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 210.253493 -30.37666 203) + (fp_text reference D24 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 35 mirror_pinky_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 35 mirror_pinky_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 35 mirror_pinky_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 200.875946 -52.468777 23) + (fp_text reference S25 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 36 mirror_pinky_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 33 P2)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 202.829602 -47.866252 203) + (fp_text reference D25 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 36 mirror_pinky_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 36 mirror_pinky_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 36 mirror_pinky_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 204.095104 3.741872 23) + (fp_text reference S26 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 37 mirror_ring_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 38 P3)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 206.048759 8.344396 203) + (fp_text reference D26 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 37 mirror_ring_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 37 mirror_ring_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 37 mirror_ring_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 196.671212 -13.74772 23) + (fp_text reference S27 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 39 mirror_ring_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 38 P3)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 198.624868 -9.145196 203) + (fp_text reference D27 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 39 mirror_ring_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 39 mirror_ring_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 39 mirror_ring_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 189.247321 -31.237312 23) + (fp_text reference S28 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 40 mirror_ring_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 38 P3)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 191.200976 -26.634788 203) + (fp_text reference D28 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 40 mirror_ring_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 40 mirror_ring_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 40 mirror_ring_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 181.823429 -48.726905 23) + (fp_text reference S29 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 41 mirror_ring_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 38 P3)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 183.777085 -44.12438 203) + (fp_text reference D29 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 41 mirror_ring_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 41 mirror_ring_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 41 mirror_ring_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 184.651856 6.563239 23) + (fp_text reference S30 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 42 mirror_middle_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 43 P4)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 186.605511 11.165764 203) + (fp_text reference D30 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 42 mirror_middle_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 42 mirror_middle_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 42 mirror_middle_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 177.227964 -10.926353 23) + (fp_text reference S31 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 44 mirror_middle_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 43 P4)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 179.18162 -6.323829 203) + (fp_text reference D31 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 44 mirror_middle_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 44 mirror_middle_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 44 mirror_middle_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 169.804073 -28.415945 23) + (fp_text reference S32 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 45 mirror_middle_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 43 P4)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 171.757728 -23.813421 203) + (fp_text reference D32 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 45 mirror_middle_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 45 mirror_middle_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 45 mirror_middle_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 162.380181 -45.905537 23) + (fp_text reference S33 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 46 mirror_middle_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 43 P4)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 164.333837 -41.303013 203) + (fp_text reference D33 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 46 mirror_middle_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 46 mirror_middle_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 46 mirror_middle_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 169.115919 18.589655 23) + (fp_text reference S34 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 47 mirror_index_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 48 P5)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 171.069575 23.192179 203) + (fp_text reference D34 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 47 mirror_index_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 47 mirror_index_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 47 mirror_index_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 161.692028 1.100063 23) + (fp_text reference S35 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 49 mirror_index_home)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 48 P5)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 163.645683 5.702587 203) + (fp_text reference D35 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 49 mirror_index_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 49 mirror_index_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 49 mirror_index_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 154.268136 -16.389529 23) + (fp_text reference S36 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 50 mirror_index_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 48 P5)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 156.221792 -11.787005 203) + (fp_text reference D36 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 50 mirror_index_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 50 mirror_index_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 50 mirror_index_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 146.844245 -33.879122 23) + (fp_text reference S37 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 51 mirror_index_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 48 P5)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 148.7979 -29.276597 203) + (fp_text reference D37 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 51 mirror_index_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 51 mirror_index_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 51 mirror_index_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 153.970714 31.536576 23) + (fp_text reference S38 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 52 mirror_inner_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 53 P6)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 155.924369 36.1391 203) + (fp_text reference D38 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 52 mirror_inner_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 52 mirror_inner_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 52 mirror_inner_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 148.500478 18.649508 203) + (fp_text reference D39 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 54 mirror_inner_home)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 5 P10)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 54 mirror_inner_home)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 54 mirror_inner_home)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 5 P10)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 139.122931 -3.442609 23) + (fp_text reference S40 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 55 mirror_inner_top)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 53 P6)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 141.076586 1.159915 203) + (fp_text reference D40 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 55 mirror_inner_top)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 7 P9)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 55 mirror_inner_top)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 55 mirror_inner_top)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 7 P9)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 131.699039 -20.932201 23) + (fp_text reference S41 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 56 mirror_inner_num)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 53 P6)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 133.652695 -16.329677 203) + (fp_text reference D41 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 56 mirror_inner_num)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 9 P8)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 56 mirror_inner_num)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 56 mirror_inner_num)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 9 P8)) + ) + + (module MX (layer F.Cu) (tedit 5DD4F656) (tstamp 0) + (at 132.57381 29.755418 23) + (fp_text reference S42 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) + (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 57 mirror_thumb_bottom)) + (pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) + (net 58 P7)) + ) + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) (tstamp 0) + (at 134.527466 34.357943 203) + (fp_text reference D42 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 57 mirror_thumb_bottom)) + (pad 1 smd rect (at -1.65 0 203) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) + (net 3 P16)) + (pad 2 smd rect (at 1.65 0 203) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) + (net 57 mirror_thumb_bottom)) + (pad 1 thru_hole circle (at 3.81 0 203) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) + (net 57 mirror_thumb_bottom)) + (pad 2 thru_hole rect (at -3.81 0 203) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) + (net 3 P16)) + ) + + (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tedit 0) (tstamp 5BF2CC94) + (at 111.57381 31.536576 90) + (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") + (tags "SPST Tactile Switch") + (fp_text reference B1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer F.SilkS) (width 0.15)) + (pad 1 smd rect (at -3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) + (net 59 RST)) + (pad 1 smd rect (at 3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) + (net 59 RST)) + (pad 2 smd rect (at -3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) + (net 60 GND)) + (pad 2 smd rect (at 3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) + (net 60 GND)) + ) + + (module ProMicro (layer F.Cu) (tedit 5B307E4C) (tstamp 0) + (at 111.57381 0.557391 270) + (fp_text reference MCU1 (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_text value "" (at 0 0) (layer F.SilkS) hide + (effects (font (size 1.27 1.27) (thickness 0.15))) + ) + (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) + (fp_text user RAW (at -13.97 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user GND (at -11.43 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user RST (at -8.89 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user VCC (at -6.35 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P21 (at -3.81 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P20 (at -1.27 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P19 (at 1.27 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P18 (at 3.81 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P15 (at 6.35 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P14 (at 8.89 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P16 (at 11.43 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P10 (at 13.97 4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P01 (at -13.97 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P00 (at -11.43 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user GND (at -8.89 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user GND (at -6.35 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P02 (at -3.81 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P03 (at -1.27 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P04 (at 1.27 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P05 (at 3.81 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P06 (at 6.35 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P07 (at 8.89 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P08 (at 11.43 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (fp_text user P09 (at 13.97 -4.8) (layer F.SilkS) + (effects (font (size 0.8 0.8) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at -13.97 7.62 270) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 61 RAW)) + (pad 2 thru_hole circle (at -11.43 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 60 GND)) + (pad 3 thru_hole circle (at -8.89 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 59 RST)) + (pad 4 thru_hole circle (at -6.35 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 62 VCC)) + (pad 5 thru_hole circle (at -3.81 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 2 P21)) + (pad 6 thru_hole circle (at -1.27 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 11 P20)) + (pad 7 thru_hole circle (at 1.27 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 16 P19)) + (pad 8 thru_hole circle (at 3.81 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 21 P18)) + (pad 9 thru_hole circle (at 6.35 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 26 P15)) + (pad 10 thru_hole circle (at 8.89 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 31 P14)) + (pad 11 thru_hole circle (at 11.43 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 3 P16)) + (pad 12 thru_hole circle (at 13.97 7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 5 P10)) + (pad 13 thru_hole circle (at -13.97 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 63 P1)) + (pad 14 thru_hole circle (at -11.43 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 64 P0)) + (pad 15 thru_hole circle (at -8.89 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 60 GND)) + (pad 16 thru_hole circle (at -6.35 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 60 GND)) + (pad 17 thru_hole circle (at -3.81 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 33 P2)) + (pad 18 thru_hole circle (at -1.27 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 38 P3)) + (pad 19 thru_hole circle (at 1.27 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 43 P4)) + (pad 20 thru_hole circle (at 3.81 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 48 P5)) + (pad 21 thru_hole circle (at 6.35 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 53 P6)) + (pad 22 thru_hole circle (at 8.89 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 58 P7)) + (pad 23 thru_hole circle (at 11.43 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 9 P8)) + (pad 24 thru_hole circle (at 13.97 -7.62) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) + (net 7 P9)) + ) + + (gr_text "23treus v3\n@foosinn" (at 111.76 -22.225) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_line (start 118.58668 -26.229938) (end 104.560941 -26.229938) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 104.560941 -26.229938) (end 73.879799 -51.203275) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 73.879799 -51.203275) (end 55.469702 -59.017897) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 55.469702 -59.017897) (end 16.973937 -65.581136) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 16.973937 -65.581136) (end -13.11236 5.297737) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start -13.11236 5.297737) (end 5.297737 13.11236) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 5.297737 13.11236) (end 56.064547 36.834313) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 56.064547 36.834313) (end 74.474644 44.648935) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 74.474644 44.648935) (end 148.672976 44.648935) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 148.672976 44.648935) (end 167.083073 36.834313) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 167.083073 36.834313) (end 217.849883 13.11236) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 217.849883 13.11236) (end 236.25998 5.297737) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 236.25998 5.297737) (end 206.173683 -65.581136) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 206.173683 -65.581136) (end 167.677919 -59.017897) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 167.677919 -59.017897) (end 149.267822 -51.203275) (angle 90) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 149.267822 -51.203275) (end 118.58668 -26.229938) (angle 90) (layer Edge.Cuts) (width 0.15)) + + (segment (start -6.413278 2.161339) (end -5.460779 3.113838) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -6.413278 -4.222454) (end -6.413278 2.161339) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -5.52932 -5.106412) (end -6.413278 -4.222454) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -5.460779 3.113838) (end -4.506162 3.113838) (width 0.25) (layer F.Cu) (net 1)) + (segment (start -4.316469 3.113838) (end -3.472489 3.957818) (width 0.25) (layer F.Cu) (net 1)) + (segment (start -5.460779 3.113838) (end -4.316469 3.113838) (width 0.25) (layer F.Cu) (net 1)) + (segment (start -4.316469 3.113838) (end -3.472489 3.957818) (width 0.25) (layer B.Cu) (net 1)) + (segment (start -5.460779 3.113838) (end -4.316469 3.113838) (width 0.25) (layer B.Cu) (net 1)) + (segment (start 7.362503 -2.393513) (end 7.362503 -2.162497) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 14.786394 -9.586388) (end 14.786394 -19.883105) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 7.362503 -2.162497) (end 14.786394 -9.586388) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 22.210286 -27.306997) (end 22.210286 -37.372697) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 14.786394 -19.883105) (end 22.210286 -27.306997) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 22.210286 -38.872697) (end 29.634177 -46.296588) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 22.210286 -37.372697) (end 22.210286 -38.872697) (width 0.25) (layer B.Cu) (net 2)) + (via (at 102.87 -22.86) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 102.752509 -22.742509) (end 102.87 -22.86) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 102.752509 -4.45391) (end 102.752509 -22.742509) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 103.95381 -3.252609) (end 102.752509 -4.45391) (width 0.25) (layer B.Cu) (net 2)) + (via (at 29.634177 -49.740823) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 29.634177 -49.740823) (end 29.634177 -54.86229) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 102.87 -22.86) (end 80.129635 -45.600365) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 29.634177 -46.296588) (end 29.634177 -49.740823) (width 0.25) (layer B.Cu) (net 2)) + (segment (start 59.128774 -51.557306) (end 57.376772 -51.557306) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 80.129635 -45.600365) (end 65.085715 -45.600365) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 43.643092 -49.839978) (end 42.437264 -51.045806) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 65.085715 -45.600365) (end 59.128774 -51.557306) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 40.211118 -51.045806) (end 38.70123 -49.535918) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 38.70123 -49.535918) (end 29.839082 -49.535918) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 57.376772 -51.557306) (end 55.659444 -49.839978) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 55.659444 -49.839978) (end 43.643092 -49.839978) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 42.437264 -51.045806) (end 40.211118 -51.045806) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 29.839082 -49.535918) (end 29.634177 -49.740823) (width 0.25) (layer F.Cu) (net 2)) + (segment (start 0.709487 5.24723) (end 1.553467 6.09121) (width 0.25) (layer F.Cu) (net 3)) + (segment (start -0.434823 5.24723) (end 0.709487 5.24723) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 15.041816 5.413224) (end 18.617694 8.989102) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 2.231453 5.413224) (end 15.041816 5.413224) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 1.553467 6.09121) (end 2.231453 5.413224) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 19.762004 8.989102) (end 20.605984 9.833082) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 18.617694 8.989102) (end 19.762004 8.989102) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 37.824672 11.5742) (end 38.060942 11.81047) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 22.347102 11.5742) (end 37.824672 11.5742) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 20.605984 9.833082) (end 22.347102 11.5742) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 39.205252 11.81047) (end 40.049232 12.65445) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 38.060942 11.81047) (end 39.205252 11.81047) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 53.333399 23.836885) (end 53.596879 23.836885) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 42.150964 12.65445) (end 53.333399 23.836885) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 40.049232 12.65445) (end 42.150964 12.65445) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 54.741189 23.836885) (end 55.585169 24.680865) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 53.596879 23.836885) (end 54.741189 23.836885) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 56.639143 24.680865) (end 68.742084 36.783806) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 55.585169 24.680865) (end 56.639143 24.680865) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 69.886394 36.783806) (end 70.730374 37.627786) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 68.742084 36.783806) (end 69.886394 36.783806) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 87.513851 37.627786) (end 90.138988 35.002649) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 70.730374 37.627786) (end 87.513851 37.627786) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 91.283298 35.002649) (end 92.127278 35.846629) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 90.138988 35.002649) (end 91.283298 35.002649) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 132.635406 37.12413) (end 136.046299 33.713237) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 92.127278 35.846629) (end 93.404779 37.12413) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 137.190609 33.713237) (end 138.034589 32.869257) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 136.046299 33.713237) (end 137.190609 33.713237) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 140.659726 35.494394) (end 157.443202 35.494394) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 138.034589 32.869257) (end 140.659726 35.494394) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 158.587512 35.494394) (end 159.431492 34.650414) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 157.443202 35.494394) (end 158.587512 35.494394) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 172.500207 22.547473) (end 172.588408 22.547473) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 160.397266 34.650414) (end 172.500207 22.547473) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 159.431492 34.650414) (end 160.397266 34.650414) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 173.732718 22.547473) (end 174.576698 21.703493) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 172.588408 22.547473) (end 173.732718 22.547473) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 187.860864 10.521058) (end 188.124344 10.521058) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 176.678429 21.703493) (end 187.860864 10.521058) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 174.576698 21.703493) (end 176.678429 21.703493) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 189.268654 10.521058) (end 190.112634 9.677078) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 188.124344 10.521058) (end 189.268654 10.521058) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 191.546139 11.110583) (end 204.156699 11.110583) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 204.156699 11.110583) (end 207.567592 7.69969) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 190.112634 9.677078) (end 191.546139 11.110583) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 208.711902 7.69969) (end 209.555882 6.85571) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 207.567592 7.69969) (end 208.711902 7.69969) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 224.188541 7.533696) (end 228.608399 3.113838) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 210.233868 7.533696) (end 224.188541 7.533696) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 209.555882 6.85571) (end 210.233868 7.533696) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 227.764419 3.957818) (end 228.608399 3.113838) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 226.620109 3.957818) (end 227.764419 3.957818) (width 0.25) (layer F.Cu) (net 3)) + (via (at 102.57587 37.12413) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3)) + (segment (start 102.752509 36.947491) (end 102.57587 37.12413) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 102.752509 13.188692) (end 102.752509 36.947491) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 103.95381 11.987391) (end 102.752509 13.188692) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 102.57587 37.12413) (end 132.635406 37.12413) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 93.404779 37.12413) (end 102.57587 37.12413) (width 0.25) (layer F.Cu) (net 3)) + (segment (start 0.709487 5.24723) (end 1.553467 6.09121) (width 0.25) (layer B.Cu) (net 3)) + (segment (start -0.434823 5.24723) (end 0.709487 5.24723) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 19.762004 8.989102) (end 20.605984 9.833082) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 18.617694 8.989102) (end 19.762004 8.989102) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 39.205252 11.81047) (end 40.049232 12.65445) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 38.060942 11.81047) (end 39.205252 11.81047) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 54.741189 23.836885) (end 55.585169 24.680865) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 53.596879 23.836885) (end 54.741189 23.836885) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 69.886394 36.783806) (end 70.730374 37.627786) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 68.742084 36.783806) (end 69.886394 36.783806) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 91.283298 35.002649) (end 92.127278 35.846629) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 90.138988 35.002649) (end 91.283298 35.002649) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 137.190609 33.713237) (end 138.034589 32.869257) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 136.046299 33.713237) (end 137.190609 33.713237) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 158.587512 35.494394) (end 159.431492 34.650414) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 157.443202 35.494394) (end 158.587512 35.494394) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 173.732718 22.547473) (end 174.576698 21.703493) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 172.588408 22.547473) (end 173.732718 22.547473) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 189.268654 10.521058) (end 190.112634 9.677078) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 188.124344 10.521058) (end 189.268654 10.521058) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 208.711902 7.69969) (end 209.555882 6.85571) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 207.567592 7.69969) (end 208.711902 7.69969) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 227.764419 3.957818) (end 228.608399 3.113838) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 226.620109 3.957818) (end 227.764419 3.957818) (width 0.25) (layer B.Cu) (net 3)) + (segment (start 1.571825 -14.767042) (end 1.963113 -14.375754) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.571825 -22.273258) (end 1.571825 -14.767042) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.894571 -22.596004) (end 1.571825 -22.273258) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 3.107423 -14.375754) (end 3.951403 -13.531774) (width 0.25) (layer F.Cu) (net 4)) + (segment (start 1.963113 -14.375754) (end 3.107423 -14.375754) (width 0.25) (layer F.Cu) (net 4)) + (segment (start 3.107423 -14.375754) (end 3.951403 -13.531774) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 1.963113 -14.375754) (end 3.107423 -14.375754) (width 0.25) (layer B.Cu) (net 4)) + (segment (start 8.133379 -12.242362) (end 8.977359 -11.398382) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 6.989069 -12.242362) (end 8.133379 -12.242362) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 22.465708 -12.076368) (end 26.041586 -8.50049) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 9.655345 -12.076368) (end 22.465708 -12.076368) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 8.977359 -11.398382) (end 9.655345 -12.076368) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 27.185896 -8.50049) (end 28.029876 -7.65651) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 26.041586 -8.50049) (end 27.185896 -8.50049) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 30.007263 -5.679123) (end 45.484833 -5.679123) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 28.029876 -7.65651) (end 30.007263 -5.679123) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 46.629143 -5.679123) (end 47.473123 -4.835143) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 45.484833 -5.679123) (end 46.629143 -5.679123) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 60.75729 6.347293) (end 61.02077 6.347293) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 49.574854 -4.835143) (end 60.75729 6.347293) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 47.473123 -4.835143) (end 49.574854 -4.835143) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 62.16508 6.347293) (end 63.00906 7.191273) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 61.02077 6.347293) (end 62.16508 6.347293) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 76.077775 19.294214) (end 76.165975 19.294214) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 63.974834 7.191273) (end 76.077775 19.294214) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 63.00906 7.191273) (end 63.974834 7.191273) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 77.310285 19.294214) (end 78.154265 20.138194) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 76.165975 19.294214) (end 77.310285 19.294214) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 146.608418 21.415695) (end 150.019311 18.004802) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 78.154265 20.138194) (end 79.431766 21.415695) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 151.163621 18.004802) (end 152.007601 17.160822) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 150.019311 18.004802) (end 151.163621 18.004802) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 153.061575 17.160822) (end 165.164516 5.057881) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 152.007601 17.160822) (end 153.061575 17.160822) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 166.308826 5.057881) (end 167.152806 4.213901) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 165.164516 5.057881) (end 166.308826 5.057881) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 169.518017 4.213901) (end 180.700453 -6.968535) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 167.152806 4.213901) (end 169.518017 4.213901) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 181.844763 -6.968535) (end 182.688743 -7.812515) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 180.700453 -6.968535) (end 181.844763 -6.968535) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 196.732808 -6.379009) (end 200.143701 -9.789902) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 184.122249 -6.379009) (end 196.732808 -6.379009) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 182.688743 -7.812515) (end 184.122249 -6.379009) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 201.288011 -9.789902) (end 202.131991 -10.633882) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 200.143701 -9.789902) (end 201.288011 -9.789902) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 215.620339 -9.955896) (end 219.196217 -13.531774) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 202.809977 -9.955896) (end 215.620339 -9.955896) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 202.131991 -10.633882) (end 202.809977 -9.955896) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 220.340527 -13.531774) (end 221.184507 -14.375754) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 219.196217 -13.531774) (end 220.340527 -13.531774) (width 0.25) (layer F.Cu) (net 5)) + (via (at 103.965695 21.415695) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 5)) + (segment (start 103.95381 21.40381) (end 103.965695 21.415695) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 103.95381 14.527391) (end 103.95381 21.40381) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 103.965695 21.415695) (end 146.608418 21.415695) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 79.431766 21.415695) (end 103.965695 21.415695) (width 0.25) (layer F.Cu) (net 5)) + (segment (start 8.133379 -12.242362) (end 8.977359 -11.398382) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 6.989069 -12.242362) (end 8.133379 -12.242362) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 27.185896 -8.50049) (end 28.029876 -7.65651) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 26.041586 -8.50049) (end 27.185896 -8.50049) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 46.629143 -5.679123) (end 47.473123 -4.835143) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 45.484833 -5.679123) (end 46.629143 -5.679123) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 62.16508 6.347293) (end 63.00906 7.191273) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 61.02077 6.347293) (end 62.16508 6.347293) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 77.310285 19.294214) (end 78.154265 20.138194) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 76.165975 19.294214) (end 77.310285 19.294214) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 151.163621 18.004802) (end 152.007601 17.160822) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 150.019311 18.004802) (end 151.163621 18.004802) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 166.308826 5.057881) (end 167.152806 4.213901) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 165.164516 5.057881) (end 166.308826 5.057881) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 181.844763 -6.968535) (end 182.688743 -7.812515) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 180.700453 -6.968535) (end 181.844763 -6.968535) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 201.288011 -9.789902) (end 202.131991 -10.633882) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 200.143701 -9.789902) (end 201.288011 -9.789902) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 220.340527 -13.531774) (end 221.184507 -14.375754) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 219.196217 -13.531774) (end 220.340527 -13.531774) (width 0.25) (layer B.Cu) (net 5)) + (segment (start 8.995717 -32.256633) (end 9.387004 -31.865346) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 8.995717 -39.76285) (end 8.995717 -32.256633) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 9.318463 -40.085596) (end 8.995717 -39.76285) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 10.531314 -31.865346) (end 11.375294 -31.021366) (width 0.25) (layer F.Cu) (net 6)) + (segment (start 9.387004 -31.865346) (end 10.531314 -31.865346) (width 0.25) (layer F.Cu) (net 6)) + (segment (start 10.531314 -31.865346) (end 11.375294 -31.021366) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 9.387004 -31.865346) (end 10.531314 -31.865346) (width 0.25) (layer B.Cu) (net 6)) + (segment (start 15.55727 -29.731954) (end 16.40125 -28.887974) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 14.41296 -29.731954) (end 15.55727 -29.731954) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 19.299142 -25.990082) (end 33.465477 -25.990082) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 16.40125 -28.887974) (end 19.299142 -25.990082) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 34.609787 -25.990082) (end 35.453767 -25.146102) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 33.465477 -25.990082) (end 34.609787 -25.990082) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 37.431154 -23.168715) (end 52.908725 -23.168715) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 35.453767 -25.146102) (end 37.431154 -23.168715) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 54.053035 -23.168715) (end 54.897015 -22.324735) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 52.908725 -23.168715) (end 54.053035 -23.168715) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 63.661395 -11.142299) (end 68.444661 -11.142299) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 54.897015 -19.906679) (end 63.661395 -11.142299) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 54.897015 -22.324735) (end 54.897015 -19.906679) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 69.588971 -11.142299) (end 70.432951 -10.298319) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 68.444661 -11.142299) (end 69.588971 -11.142299) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 78.806601 1.804621) (end 83.589867 1.804621) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 70.432951 -6.569029) (end 78.806601 1.804621) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 70.432951 -10.298319) (end 70.432951 -6.569029) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 84.734177 1.804621) (end 85.578157 2.648601) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 83.589867 1.804621) (end 84.734177 1.804621) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 127.381936 15.728692) (end 142.595419 0.515209) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 85.578157 2.648601) (end 98.658248 15.728692) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 143.739729 0.515209) (end 144.583709 -0.328771) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 142.595419 0.515209) (end 143.739729 0.515209) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 145.637685 -0.328771) (end 157.740625 -12.431711) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 144.583709 -0.328771) (end 145.637685 -0.328771) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 158.884935 -12.431711) (end 159.728915 -13.275691) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 157.740625 -12.431711) (end 158.884935 -12.431711) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 162.094125 -13.275691) (end 173.276561 -24.458127) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 159.728915 -13.275691) (end 162.094125 -13.275691) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 174.420871 -24.458127) (end 175.264851 -25.302107) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 173.276561 -24.458127) (end 174.420871 -24.458127) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 189.308916 -23.868601) (end 192.719809 -27.279494) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 176.698357 -23.868601) (end 189.308916 -23.868601) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 175.264851 -25.302107) (end 176.698357 -23.868601) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 193.864119 -27.279494) (end 194.708099 -28.123474) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 192.719809 -27.279494) (end 193.864119 -27.279494) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 208.196448 -27.445488) (end 211.772326 -31.021366) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 195.386085 -27.445488) (end 208.196448 -27.445488) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 194.708099 -28.123474) (end 195.386085 -27.445488) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 212.916636 -31.021366) (end 213.760616 -31.865346) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 211.772326 -31.021366) (end 212.916636 -31.021366) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 120.572391 14.527391) (end 121.773692 15.728692) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 119.19381 14.527391) (end 120.572391 14.527391) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 121.773692 15.728692) (end 127.381936 15.728692) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 98.658248 15.728692) (end 121.773692 15.728692) (width 0.25) (layer F.Cu) (net 7)) + (segment (start 15.55727 -29.731954) (end 16.40125 -28.887974) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 14.41296 -29.731954) (end 15.55727 -29.731954) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 34.609787 -25.990082) (end 35.453767 -25.146102) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 33.465477 -25.990082) (end 34.609787 -25.990082) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 54.053035 -23.168715) (end 54.897015 -22.324735) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 52.908725 -23.168715) (end 54.053035 -23.168715) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 69.588971 -11.142299) (end 70.432951 -10.298319) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 68.444661 -11.142299) (end 69.588971 -11.142299) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 84.734177 1.804621) (end 85.578157 2.648601) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 83.589867 1.804621) (end 84.734177 1.804621) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 143.739729 0.515209) (end 144.583709 -0.328771) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 142.595419 0.515209) (end 143.739729 0.515209) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 158.884935 -12.431711) (end 159.728915 -13.275691) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 157.740625 -12.431711) (end 158.884935 -12.431711) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 174.420871 -24.458127) (end 175.264851 -25.302107) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 173.276561 -24.458127) (end 174.420871 -24.458127) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 193.864119 -27.279494) (end 194.708099 -28.123474) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 192.719809 -27.279494) (end 193.864119 -27.279494) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 212.916636 -31.021366) (end 213.760616 -31.865346) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 211.772326 -31.021366) (end 212.916636 -31.021366) (width 0.25) (layer B.Cu) (net 7)) + (segment (start 15.858397 -50.307437) (end 16.810896 -49.354938) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 15.858397 -56.691232) (end 15.858397 -50.307437) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 16.742354 -57.575189) (end 15.858397 -56.691232) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 17.955206 -49.354938) (end 18.799186 -48.510958) (width 0.25) (layer F.Cu) (net 8)) + (segment (start 16.810896 -49.354938) (end 17.955206 -49.354938) (width 0.25) (layer F.Cu) (net 8)) + (segment (start 17.955206 -49.354938) (end 18.799186 -48.510958) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 16.810896 -49.354938) (end 17.955206 -49.354938) (width 0.25) (layer B.Cu) (net 8)) + (segment (start 22.981162 -47.221546) (end 23.825142 -46.377566) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 21.836852 -47.221546) (end 22.981162 -47.221546) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 37.313491 -47.055552) (end 40.889369 -43.479674) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 24.503128 -47.055552) (end 37.313491 -47.055552) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 23.825142 -46.377566) (end 24.503128 -47.055552) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 42.033679 -43.479674) (end 42.877659 -42.635694) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 40.889369 -43.479674) (end 42.033679 -43.479674) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 44.855046 -40.658307) (end 60.332616 -40.658307) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 42.877659 -42.635694) (end 44.855046 -40.658307) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 61.476926 -40.658307) (end 62.320906 -39.814327) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 60.332616 -40.658307) (end 61.476926 -40.658307) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 71.085287 -28.631891) (end 75.868553 -28.631891) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 62.320906 -37.396272) (end 71.085287 -28.631891) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 62.320906 -39.814327) (end 62.320906 -37.396272) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 77.012863 -28.631891) (end 77.856843 -27.787911) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 75.868553 -28.631891) (end 77.012863 -28.631891) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 77.856843 -24.05862) (end 86.230492 -15.684971) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 86.230492 -15.684971) (end 91.013758 -15.684971) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 77.856843 -27.787911) (end 77.856843 -24.05862) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 92.158068 -15.684971) (end 93.002048 -14.840991) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 91.013758 -15.684971) (end 92.158068 -15.684971) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 93.002048 -14.840991) (end 95.13544 -16.974383) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 136.315838 -16.974383) (end 137.159818 -17.818363) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 135.171528 -16.974383) (end 136.315838 -16.974383) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 150.228532 -29.921303) (end 150.316733 -29.921303) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 138.125592 -17.818363) (end 150.228532 -29.921303) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 137.159818 -17.818363) (end 138.125592 -17.818363) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 151.461043 -29.921303) (end 152.305023 -30.765283) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 150.316733 -29.921303) (end 151.461043 -29.921303) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 165.58919 -41.947719) (end 165.85267 -41.947719) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 154.406754 -30.765283) (end 165.58919 -41.947719) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 152.305023 -30.765283) (end 154.406754 -30.765283) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 166.99698 -41.947719) (end 167.84096 -42.791699) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 165.85267 -41.947719) (end 166.99698 -41.947719) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 181.885025 -41.358193) (end 185.295918 -44.769086) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 169.274466 -41.358193) (end 181.885025 -41.358193) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 167.84096 -42.791699) (end 169.274466 -41.358193) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 186.440228 -44.769086) (end 187.284208 -45.613066) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 185.295918 -44.769086) (end 186.440228 -44.769086) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 200.772557 -44.93508) (end 204.348435 -48.510958) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 187.962194 -44.93508) (end 200.772557 -44.93508) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 187.284208 -45.613066) (end 187.962194 -44.93508) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 205.492745 -48.510958) (end 206.336725 -49.354938) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 204.348435 -48.510958) (end 205.492745 -48.510958) (width 0.25) (layer F.Cu) (net 9)) + (via (at 112.395 12.065) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 9)) + (segment (start 112.472609 11.987391) (end 112.395 12.065) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 119.19381 11.987391) (end 112.472609 11.987391) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 112.395 -16.803766) (end 112.224383 -16.974383) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 112.395 12.065) (end 112.395 -16.803766) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 112.224383 -16.974383) (end 135.171528 -16.974383) (width 0.25) (layer F.Cu) (net 9)) + (via (at 112.224383 -16.974383) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 9)) + (segment (start 95.13544 -16.974383) (end 112.224383 -16.974383) (width 0.25) (layer F.Cu) (net 9)) + (segment (start 136.315838 -16.974383) (end 137.159818 -17.818363) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 135.171528 -16.974383) (end 136.315838 -16.974383) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 151.461043 -29.921303) (end 152.305023 -30.765283) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 150.316733 -29.921303) (end 151.461043 -29.921303) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 166.99698 -41.947719) (end 167.84096 -42.791699) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 165.85267 -41.947719) (end 166.99698 -41.947719) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 186.440228 -44.769086) (end 187.284208 -45.613066) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 185.295918 -44.769086) (end 186.440228 -44.769086) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 205.492745 -48.510958) (end 206.336725 -49.354938) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 204.348435 -48.510958) (end 205.492745 -48.510958) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 22.981162 -47.221546) (end 23.825142 -46.377566) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 21.836852 -47.221546) (end 22.981162 -47.221546) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 42.033679 -43.479674) (end 42.877659 -42.635694) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 40.889369 -43.479674) (end 42.033679 -43.479674) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 61.476926 -40.658307) (end 62.320906 -39.814327) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 60.332616 -40.658307) (end 61.476926 -40.658307) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 77.012863 -28.631891) (end 77.856843 -27.787911) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 75.868553 -28.631891) (end 77.012863 -28.631891) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 92.158068 -15.684971) (end 93.002048 -14.840991) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 91.013758 -15.684971) (end 92.158068 -15.684971) (width 0.25) (layer B.Cu) (net 9)) + (segment (start 13.200451 6.464423) (end 13.591738 6.85571) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 13.200451 -1.041794) (end 13.200451 6.464423) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 13.523197 -1.36454) (end 13.200451 -1.041794) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 14.736048 6.85571) (end 15.580028 7.69969) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 13.591738 6.85571) (end 14.736048 6.85571) (width 0.25) (layer B.Cu) (net 10)) + (segment (start 14.736048 6.85571) (end 15.580028 7.69969) (width 0.25) (layer F.Cu) (net 10)) + (segment (start 13.591738 6.85571) (end 14.736048 6.85571) (width 0.25) (layer F.Cu) (net 10)) + (segment (start 41.262803 -33.630825) (end 41.262803 -33.642803) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 48.686694 -41.066694) (end 48.686694 -51.120418) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 41.262803 -33.642803) (end 48.686694 -41.066694) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 33.838911 -16.141233) (end 33.921233 -16.141233) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 33.921233 -16.141233) (end 41.262803 -23.482803) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 26.41502 1.348359) (end 26.591641 1.348359) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 33.838911 -5.898911) (end 33.838911 -16.141233) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 26.591641 1.348359) (end 33.838911 -5.898911) (width 0.25) (layer B.Cu) (net 11)) + (via (at 41.262803 -27.927803) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 11)) + (segment (start 47.886157 -27.927803) (end 41.262803 -27.927803) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 50.885012 -24.928948) (end 47.886157 -27.927803) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 71.198385 -18.083732) (end 64.353169 -24.928948) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 72.991216 -13.228714) (end 71.198385 -15.021545) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 71.198385 -15.021545) (end 71.198385 -18.083732) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 104.530435 3.028692) (end 94.927576 3.028692) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 105.155111 2.404016) (end 104.530435 3.028692) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 64.353169 -24.928948) (end 50.885012 -24.928948) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 105.155111 0.488692) (end 105.155111 2.404016) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 103.95381 -0.712609) (end 105.155111 0.488692) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 41.262803 -23.482803) (end 41.262803 -27.927803) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 78.67017 -13.228714) (end 72.991216 -13.228714) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 94.927576 3.028692) (end 78.67017 -13.228714) (width 0.25) (layer F.Cu) (net 11)) + (segment (start 41.262803 -27.927803) (end 41.262803 -33.630825) (width 0.25) (layer B.Cu) (net 11)) + (segment (start 20.063131 -11.586381) (end 21.01563 -10.633882) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 20.063131 -15.735856) (end 20.063131 -11.586381) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 20.947088 -16.619813) (end 20.063131 -15.735856) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 20.947088 -18.854132) (end 20.947088 -16.619813) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 22.15994 -10.633882) (end 23.00392 -9.789902) (width 0.25) (layer F.Cu) (net 12)) + (segment (start 21.01563 -10.633882) (end 22.15994 -10.633882) (width 0.25) (layer F.Cu) (net 12)) + (segment (start 22.15994 -10.633882) (end 23.00392 -9.789902) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 21.01563 -10.633882) (end 22.15994 -10.633882) (width 0.25) (layer B.Cu) (net 12)) + (segment (start 28.048234 -28.514761) (end 28.439521 -28.123474) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 28.048234 -36.020978) (end 28.048234 -28.514761) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 28.37098 -36.343724) (end 28.048234 -36.020978) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 29.583831 -28.123474) (end 30.427811 -27.279494) (width 0.25) (layer F.Cu) (net 13)) + (segment (start 28.439521 -28.123474) (end 29.583831 -28.123474) (width 0.25) (layer F.Cu) (net 13)) + (segment (start 29.583831 -28.123474) (end 30.427811 -27.279494) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 28.439521 -28.123474) (end 29.583831 -28.123474) (width 0.25) (layer B.Cu) (net 13)) + (segment (start 34.910914 -52.94936) (end 35.794871 -53.833317) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 34.910914 -46.565565) (end 34.910914 -52.94936) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 35.863413 -45.613066) (end 34.910914 -46.565565) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 37.007723 -45.613066) (end 37.851703 -44.769086) (width 0.25) (layer F.Cu) (net 14)) + (segment (start 35.863413 -45.613066) (end 37.007723 -45.613066) (width 0.25) (layer F.Cu) (net 14)) + (segment (start 37.007723 -45.613066) (end 37.851703 -44.769086) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 35.863413 -45.613066) (end 37.007723 -45.613066) (width 0.25) (layer B.Cu) (net 14)) + (segment (start 34.179296 9.677078) (end 35.023276 10.521058) (width 0.25) (layer F.Cu) (net 15)) + (segment (start 33.034986 9.677078) (end 34.179296 9.677078) (width 0.25) (layer F.Cu) (net 15)) + (segment (start 34.179296 9.677078) (end 35.023276 10.521058) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 33.034986 9.677078) (end 34.179296 9.677078) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 32.082487 2.340785) (end 32.966445 1.456827) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 32.082487 8.724579) (end 32.082487 2.340785) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 33.034986 9.677078) (end 32.082487 8.724579) (width 0.25) (layer B.Cu) (net 15)) + (segment (start 53.282159 -3.254165) (end 53.282159 -13.319866) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 45.858268 4.169726) (end 53.282159 -3.254165) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 53.282159 -13.319866) (end 53.324866 -13.319866) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 53.324866 -13.319866) (end 60.706051 -20.701051) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 60.706051 -30.809458) (end 60.706051 -30.861051) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 68.129942 -38.284942) (end 68.129942 -48.29905) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 60.706051 -30.861051) (end 68.129942 -38.284942) (width 0.25) (layer B.Cu) (net 16)) + (via (at 60.706051 -25.653949) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 16)) + (segment (start 75.233195 -25.653949) (end 60.706051 -25.653949) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 103.95381 1.827391) (end 102.714535 1.827391) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 60.706051 -25.653949) (end 60.706051 -30.809458) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 102.714535 1.827391) (end 75.233195 -25.653949) (width 0.25) (layer F.Cu) (net 16)) + (segment (start 60.706051 -20.701051) (end 60.706051 -25.653949) (width 0.25) (layer B.Cu) (net 16)) + (segment (start 41.603187 -7.812515) (end 42.447167 -6.968535) (width 0.25) (layer F.Cu) (net 17)) + (segment (start 40.458877 -7.812515) (end 41.603187 -7.812515) (width 0.25) (layer F.Cu) (net 17)) + (segment (start 41.603187 -7.812515) (end 42.447167 -6.968535) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 40.458877 -7.812515) (end 41.603187 -7.812515) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 40.06759 -8.203802) (end 40.458877 -7.812515) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 40.06759 -15.710019) (end 40.06759 -8.203802) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 40.390336 -16.032765) (end 40.06759 -15.710019) (width 0.25) (layer B.Cu) (net 17)) + (segment (start 46.93027 -32.638399) (end 47.814228 -33.522357) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 46.93027 -26.254606) (end 46.93027 -32.638399) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.882769 -25.302107) (end 46.93027 -26.254606) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 49.027079 -25.302107) (end 49.871059 -24.458127) (width 0.25) (layer F.Cu) (net 18)) + (segment (start 47.882769 -25.302107) (end 49.027079 -25.302107) (width 0.25) (layer F.Cu) (net 18)) + (segment (start 49.027079 -25.302107) (end 49.871059 -24.458127) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 47.882769 -25.302107) (end 49.027079 -25.302107) (width 0.25) (layer B.Cu) (net 18)) + (segment (start 54.354161 -50.127991) (end 55.238119 -51.011949) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 54.354161 -43.744198) (end 54.354161 -50.127991) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 55.30666 -42.791699) (end 54.354161 -43.744198) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 56.45097 -42.791699) (end 57.29495 -41.947719) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 55.30666 -42.791699) (end 56.45097 -42.791699) (width 0.25) (layer B.Cu) (net 19)) + (segment (start 56.45097 -42.791699) (end 57.29495 -41.947719) (width 0.25) (layer F.Cu) (net 19)) + (segment (start 55.30666 -42.791699) (end 56.45097 -42.791699) (width 0.25) (layer F.Cu) (net 19)) + (segment (start 47.618424 14.3672) (end 48.502381 13.483243) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 47.618424 20.750994) (end 47.618424 14.3672) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 48.570923 21.703493) (end 47.618424 20.750994) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 49.715233 21.703493) (end 50.559213 22.547473) (width 0.25) (layer F.Cu) (net 20)) + (segment (start 48.570923 21.703493) (end 49.715233 21.703493) (width 0.25) (layer F.Cu) (net 20)) + (segment (start 49.715233 21.703493) (end 50.559213 22.547473) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 48.570923 21.703493) (end 49.715233 21.703493) (width 0.25) (layer B.Cu) (net 20)) + (segment (start 68.818096 8.77225) (end 68.818096 -1.29345) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 61.394204 16.196142) (end 68.818096 8.77225) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 76.241987 -9.40564) (end 76.241987 -18.783042) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 68.818096 -1.981749) (end 76.241987 -9.40564) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 68.818096 -1.29345) (end 68.818096 -1.981749) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 76.241987 -18.783042) (end 76.568042 -18.783042) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 83.665879 -25.880879) (end 83.665879 -36.272635) (width 0.25) (layer B.Cu) (net 21)) + (segment (start 76.568042 -18.783042) (end 83.665879 -25.880879) (width 0.25) (layer B.Cu) (net 21)) + (via (at 76.2 -9.525) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 21)) + (segment (start 85.137763 -1.123708) (end 81.912006 -1.123708) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 90.628862 4.367391) (end 85.137763 -1.123708) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 76.2 -6.835714) (end 76.2 -9.525) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 81.912006 -1.123708) (end 76.2 -6.835714) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 103.95381 4.367391) (end 90.628862 4.367391) (width 0.25) (layer F.Cu) (net 21)) + (segment (start 55.042315 -3.122391) (end 55.926273 -4.006349) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.042315 3.261402) (end 55.042315 -3.122391) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.994814 4.213901) (end 55.042315 3.261402) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 57.139124 4.213901) (end 57.983104 5.057881) (width 0.25) (layer F.Cu) (net 22)) + (segment (start 55.994814 4.213901) (end 57.139124 4.213901) (width 0.25) (layer F.Cu) (net 22)) + (segment (start 57.139124 4.213901) (end 57.983104 5.057881) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 55.994814 4.213901) (end 57.139124 4.213901) (width 0.25) (layer B.Cu) (net 22)) + (segment (start 64.563015 -13.275691) (end 65.406995 -12.431711) (width 0.25) (layer F.Cu) (net 23)) + (segment (start 63.418705 -13.275691) (end 64.563015 -13.275691) (width 0.25) (layer F.Cu) (net 23)) + (segment (start 63.027418 -13.666978) (end 63.418705 -13.275691) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 63.027418 -21.173195) (end 63.027418 -13.666978) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 63.350164 -21.495941) (end 63.027418 -21.173195) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 64.563015 -13.275691) (end 65.406995 -12.431711) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 63.418705 -13.275691) (end 64.563015 -13.275691) (width 0.25) (layer B.Cu) (net 23)) + (segment (start 71.986907 -30.765283) (end 72.830887 -29.921303) (width 0.25) (layer F.Cu) (net 24)) + (segment (start 70.842597 -30.765283) (end 71.986907 -30.765283) (width 0.25) (layer F.Cu) (net 24)) + (segment (start 69.890098 -38.101576) (end 70.774056 -38.985534) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 69.890098 -31.717782) (end 69.890098 -38.101576) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 70.842597 -30.765283) (end 69.890098 -31.717782) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 71.986907 -30.765283) (end 72.830887 -29.921303) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 70.842597 -30.765283) (end 71.986907 -30.765283) (width 0.25) (layer B.Cu) (net 24)) + (segment (start 62.763629 27.314122) (end 63.647587 26.430164) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 62.763629 33.697915) (end 62.763629 27.314122) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 63.716128 34.650414) (end 62.763629 33.697915) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 63.716128 34.650414) (end 64.495414 34.650414) (width 0.25) (layer F.Cu) (net 25)) + (segment (start 64.860438 34.650414) (end 65.704418 35.494394) (width 0.25) (layer F.Cu) (net 25)) + (segment (start 63.716128 34.650414) (end 64.860438 34.650414) (width 0.25) (layer F.Cu) (net 25)) + (segment (start 64.860438 34.650414) (end 65.704418 35.494394) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 63.716128 34.650414) (end 64.860438 34.650414) (width 0.25) (layer B.Cu) (net 25)) + (segment (start 98.811084 -13.260013) (end 91.387193 -5.836122) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 98.811084 -23.325714) (end 98.811084 -13.260013) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 91.387193 -5.836122) (end 91.387193 4.229578) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 83.963301 21.719172) (end 76.53941 29.143063) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 83.963301 11.65347) (end 83.963301 21.719172) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 93.902391 6.907391) (end 91.305886 4.310886) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 103.95381 6.907391) (end 93.902391 6.907391) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 91.305886 4.310886) (end 83.963301 11.65347) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 91.387193 4.229578) (end 91.305886 4.310886) (width 0.25) (layer B.Cu) (net 26)) + (segment (start 70.18752 9.824529) (end 71.071478 8.940571) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 70.18752 16.208323) (end 70.18752 9.824529) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 71.140019 17.160822) (end 70.18752 16.208323) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 72.284329 17.160822) (end 73.128309 18.004802) (width 0.25) (layer F.Cu) (net 27)) + (segment (start 71.140019 17.160822) (end 72.284329 17.160822) (width 0.25) (layer F.Cu) (net 27)) + (segment (start 72.284329 17.160822) (end 73.128309 18.004802) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 71.140019 17.160822) (end 72.284329 17.160822) (width 0.25) (layer B.Cu) (net 27)) + (segment (start 77.611412 -7.665063) (end 78.49537 -8.549021) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 77.611412 -1.28127) (end 77.611412 -7.665063) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 78.563911 -0.328771) (end 77.611412 -1.28127) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 79.708221 -0.328771) (end 80.552201 0.515209) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 78.563911 -0.328771) (end 79.708221 -0.328771) (width 0.25) (layer B.Cu) (net 28)) + (segment (start 79.708221 -0.328771) (end 80.552201 0.515209) (width 0.25) (layer F.Cu) (net 28)) + (segment (start 78.563911 -0.328771) (end 79.708221 -0.328771) (width 0.25) (layer F.Cu) (net 28)) + (segment (start 85.596515 -25.715867) (end 85.919261 -26.038613) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 85.596515 -18.20965) (end 85.596515 -25.715867) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 85.987802 -17.818363) (end 85.596515 -18.20965) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 87.132112 -17.818363) (end 87.976092 -16.974383) (width 0.25) (layer F.Cu) (net 29)) + (segment (start 85.987802 -17.818363) (end 87.132112 -17.818363) (width 0.25) (layer F.Cu) (net 29)) + (segment (start 87.132112 -17.818363) (end 87.976092 -16.974383) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 85.987802 -17.818363) (end 87.132112 -17.818363) (width 0.25) (layer B.Cu) (net 29)) + (segment (start 84.721744 32.477969) (end 85.113032 32.869257) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 84.721744 27.206071) (end 84.721744 32.477969) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 85.04449 26.883325) (end 84.721744 27.206071) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 85.04449 24.649006) (end 85.04449 26.883325) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 86.257342 32.869257) (end 87.101322 33.713237) (width 0.25) (layer F.Cu) (net 30)) + (segment (start 85.113032 32.869257) (end 86.257342 32.869257) (width 0.25) (layer F.Cu) (net 30)) + (segment (start 86.257342 32.869257) (end 87.101322 33.713237) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 85.113032 32.869257) (end 86.257342 32.869257) (width 0.25) (layer B.Cu) (net 30)) + (segment (start 103.876201 9.525) (end 103.95381 9.447391) (width 0.25) (layer F.Cu) (net 31)) + (segment (start 97.936313 15.464888) (end 103.95381 9.447391) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 97.936313 27.361905) (end 97.936313 15.464888) (width 0.25) (layer B.Cu) (net 31)) + (segment (start 215.633386 1.477481) (end 215.633386 0.430248) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 220.247115 6.09121) (end 215.633386 1.477481) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 221.594153 6.09121) (end 220.247115 6.09121) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 222.738463 6.09121) (end 223.582443 5.24723) (width 0.25) (layer F.Cu) (net 32)) + (segment (start 221.594153 6.09121) (end 222.738463 6.09121) (width 0.25) (layer F.Cu) (net 32)) + (segment (start 222.738463 6.09121) (end 223.582443 5.24723) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 221.594153 6.09121) (end 222.738463 6.09121) (width 0.25) (layer B.Cu) (net 32)) + (segment (start 219.116404 -18.540151) (end 219.116404 -24.448408) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 226.540295 -11.11626) (end 219.116404 -18.540151) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 226.540295 -6.958816) (end 226.540295 -11.11626) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 219.116404 -28.605852) (end 211.692512 -36.029744) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 219.116404 -24.448408) (end 219.116404 -28.605852) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 204.268621 -53.519336) (end 204.268621 -59.427593) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 211.692512 -41.938) (end 211.692512 -46.095445) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 211.692512 -36.029744) (end 211.692512 -41.938) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 211.692512 -46.095445) (end 208.586479 -49.201479) (width 0.25) (layer B.Cu) (net 33)) + (segment (start 208.586479 -49.201479) (end 204.268621 -53.519336) (width 0.25) (layer B.Cu) (net 33)) + (via (at 208.586479 -49.201479) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 33)) + (segment (start 133.131548 -11.693799) (end 127.635 -11.693799) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 149.225 -27.787251) (end 133.131548 -11.693799) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 153.951307 -30.315273) (end 151.423285 -27.787251) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 154.593155 -30.315274) (end 153.951307 -30.315273) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 165.172458 -40.894577) (end 154.593155 -30.315274) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 151.423285 -27.787251) (end 149.225 -27.787251) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 182.057819 -40.894577) (end 165.172458 -40.894577) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 184.246621 -43.083379) (end 182.057819 -40.894577) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 202.16146 -43.083379) (end 184.246621 -43.083379) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 127.635 -11.693799) (end 119.19381 -3.252609) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 208.27956 -49.201479) (end 202.16146 -43.083379) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 208.586479 -49.201479) (end 208.27956 -49.201479) (width 0.25) (layer F.Cu) (net 33)) + (segment (start 208.209495 -16.01211) (end 208.209495 -17.059344) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 212.823223 -11.398382) (end 208.209495 -16.01211) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 214.170261 -11.398382) (end 212.823223 -11.398382) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 215.314571 -11.398382) (end 216.158551 -12.242362) (width 0.25) (layer F.Cu) (net 34)) + (segment (start 214.170261 -11.398382) (end 215.314571 -11.398382) (width 0.25) (layer F.Cu) (net 34)) + (segment (start 215.314571 -11.398382) (end 216.158551 -12.242362) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 214.170261 -11.398382) (end 215.314571 -11.398382) (width 0.25) (layer B.Cu) (net 34)) + (segment (start 205.399332 -28.887974) (end 200.785603 -33.501703) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 200.785603 -33.501703) (end 200.785603 -34.548936) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 206.74637 -28.887974) (end 205.399332 -28.887974) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 207.89068 -28.887974) (end 208.73466 -29.731954) (width 0.25) (layer F.Cu) (net 35)) + (segment (start 206.74637 -28.887974) (end 207.89068 -28.887974) (width 0.25) (layer F.Cu) (net 35)) + (segment (start 207.89068 -28.887974) (end 208.73466 -29.731954) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 206.74637 -28.887974) (end 207.89068 -28.887974) (width 0.25) (layer B.Cu) (net 35)) + (segment (start 193.361712 -50.991295) (end 193.361712 -52.038529) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 197.975441 -46.377566) (end 193.361712 -50.991295) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 199.322479 -46.377566) (end 197.975441 -46.377566) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 200.466789 -46.377566) (end 201.310769 -47.221546) (width 0.25) (layer F.Cu) (net 36)) + (segment (start 199.322479 -46.377566) (end 200.466789 -46.377566) (width 0.25) (layer F.Cu) (net 36)) + (segment (start 200.466789 -46.377566) (end 201.310769 -47.221546) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 199.322479 -46.377566) (end 200.466789 -46.377566) (width 0.25) (layer B.Cu) (net 36)) + (segment (start 196.58087 5.219354) (end 196.58087 4.17212) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 201.194598 9.833082) (end 196.58087 5.219354) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 202.541636 9.833082) (end 201.194598 9.833082) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 203.685946 9.833082) (end 204.529926 8.989102) (width 0.25) (layer F.Cu) (net 37)) + (segment (start 202.541636 9.833082) (end 203.685946 9.833082) (width 0.25) (layer F.Cu) (net 37)) + (segment (start 203.685946 9.833082) (end 204.529926 8.989102) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 202.541636 9.833082) (end 203.685946 9.833082) (width 0.25) (layer B.Cu) (net 37)) + (segment (start 207.487779 -13.282644) (end 200.063887 -20.706536) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 207.487779 -3.216944) (end 207.487779 -13.282644) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 200.063887 -30.772237) (end 192.639996 -38.196128) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 200.063887 -20.706536) (end 200.063887 -30.772237) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 192.639996 -48.261829) (end 185.216104 -55.685721) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 119.19381 -0.712609) (end 123.267609 -0.712609) (width 0.25) (layer F.Cu) (net 38)) + (segment (start 149.892241 -27.337241) (end 152.433651 -27.337241) (width 0.25) (layer F.Cu) (net 38)) + (segment (start 123.267609 -0.712609) (end 149.892241 -27.337241) (width 0.25) (layer F.Cu) (net 38)) + (via (at 192.639996 -40.405004) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 38)) + (segment (start 192.639996 -40.405004) (end 192.639996 -48.261829) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 192.639996 -38.196128) (end 192.639996 -40.405004) (width 0.25) (layer B.Cu) (net 38)) + (segment (start 165.500004 -40.403594) (end 165.500004 -40.405004) (width 0.25) (layer F.Cu) (net 38)) + (segment (start 152.433651 -27.337241) (end 165.500004 -40.403594) (width 0.25) (layer F.Cu) (net 38)) + (segment (start 165.500004 -40.405004) (end 192.639996 -40.405004) (width 0.25) (layer F.Cu) (net 38)) + (segment (start 189.156978 -12.270239) (end 189.156978 -13.317472) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 193.770707 -7.65651) (end 189.156978 -12.270239) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 195.117745 -7.65651) (end 193.770707 -7.65651) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 196.262055 -7.65651) (end 197.106035 -8.50049) (width 0.25) (layer F.Cu) (net 39)) + (segment (start 195.117745 -7.65651) (end 196.262055 -7.65651) (width 0.25) (layer F.Cu) (net 39)) + (segment (start 196.262055 -7.65651) (end 197.106035 -8.50049) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 195.117745 -7.65651) (end 196.262055 -7.65651) (width 0.25) (layer B.Cu) (net 39)) + (segment (start 181.733087 -29.75983) (end 181.733087 -30.807064) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 186.346815 -25.146102) (end 181.733087 -29.75983) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 187.693853 -25.146102) (end 186.346815 -25.146102) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 188.838163 -25.146102) (end 189.682143 -25.990082) (width 0.25) (layer F.Cu) (net 40)) + (segment (start 187.693853 -25.146102) (end 188.838163 -25.146102) (width 0.25) (layer F.Cu) (net 40)) + (segment (start 188.838163 -25.146102) (end 189.682143 -25.990082) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 187.693853 -25.146102) (end 188.838163 -25.146102) (width 0.25) (layer B.Cu) (net 40)) + (segment (start 174.309195 -47.249423) (end 174.309195 -48.296657) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 178.922924 -42.635694) (end 174.309195 -47.249423) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 180.269962 -42.635694) (end 178.922924 -42.635694) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 181.414272 -42.635694) (end 182.258252 -43.479674) (width 0.25) (layer F.Cu) (net 41)) + (segment (start 180.269962 -42.635694) (end 181.414272 -42.635694) (width 0.25) (layer F.Cu) (net 41)) + (segment (start 181.414272 -42.635694) (end 182.258252 -43.479674) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 180.269962 -42.635694) (end 181.414272 -42.635694) (width 0.25) (layer B.Cu) (net 41)) + (segment (start 181.75135 12.65445) (end 177.137622 8.040722) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 177.137622 8.040722) (end 177.137622 6.993487) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 183.098388 12.65445) (end 181.75135 12.65445) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 184.242698 12.65445) (end 185.086678 11.81047) (width 0.25) (layer F.Cu) (net 42)) + (segment (start 183.098388 12.65445) (end 184.242698 12.65445) (width 0.25) (layer F.Cu) (net 42)) + (segment (start 184.242698 12.65445) (end 185.086678 11.81047) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 183.098388 12.65445) (end 184.242698 12.65445) (width 0.25) (layer B.Cu) (net 42)) + (segment (start 188.044531 -10.461277) (end 180.620639 -17.885169) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 188.044531 -0.395577) (end 188.044531 -10.461277) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 180.133086 -28.438423) (end 173.196748 -35.374761) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 180.133086 -18.372722) (end 180.133086 -28.438423) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 180.620639 -17.885169) (end 180.133086 -18.372722) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 173.196748 -45.440461) (end 165.772856 -52.864353) (width 0.25) (layer B.Cu) (net 43)) + (via (at 173.196748 -39.211748) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 43)) + (segment (start 166.84209 -39.211748) (end 173.196748 -39.211748) (width 0.25) (layer F.Cu) (net 43)) + (segment (start 125.802951 1.827391) (end 166.84209 -39.211748) (width 0.25) (layer F.Cu) (net 43)) + (segment (start 119.19381 1.827391) (end 125.802951 1.827391) (width 0.25) (layer F.Cu) (net 43)) + (segment (start 173.196748 -39.211748) (end 173.196748 -45.440461) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 173.196748 -35.374761) (end 173.196748 -39.211748) (width 0.25) (layer B.Cu) (net 43)) + (segment (start 169.71373 -9.448872) (end 169.71373 -10.496105) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 174.327459 -4.835143) (end 169.71373 -9.448872) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 175.674497 -4.835143) (end 174.327459 -4.835143) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 176.818807 -4.835143) (end 177.662787 -5.679123) (width 0.25) (layer F.Cu) (net 44)) + (segment (start 175.674497 -4.835143) (end 176.818807 -4.835143) (width 0.25) (layer F.Cu) (net 44)) + (segment (start 176.818807 -4.835143) (end 177.662787 -5.679123) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 175.674497 -4.835143) (end 176.818807 -4.835143) (width 0.25) (layer B.Cu) (net 44)) + (segment (start 166.903567 -22.324735) (end 162.289839 -26.938463) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 162.289839 -26.938463) (end 162.289839 -27.985697) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 168.250605 -22.324735) (end 166.903567 -22.324735) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 169.394915 -22.324735) (end 170.238895 -23.168715) (width 0.25) (layer F.Cu) (net 45)) + (segment (start 168.250605 -22.324735) (end 169.394915 -22.324735) (width 0.25) (layer F.Cu) (net 45)) + (segment (start 169.394915 -22.324735) (end 170.238895 -23.168715) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 168.250605 -22.324735) (end 169.394915 -22.324735) (width 0.25) (layer B.Cu) (net 45)) + (segment (start 154.865947 -44.428056) (end 154.865947 -45.475289) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 159.479676 -39.814327) (end 154.865947 -44.428056) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 160.826714 -39.814327) (end 159.479676 -39.814327) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 161.971024 -39.814327) (end 162.815004 -40.658307) (width 0.25) (layer F.Cu) (net 46)) + (segment (start 160.826714 -39.814327) (end 161.971024 -39.814327) (width 0.25) (layer F.Cu) (net 46)) + (segment (start 161.971024 -39.814327) (end 162.815004 -40.658307) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 160.826714 -39.814327) (end 161.971024 -39.814327) (width 0.25) (layer B.Cu) (net 46)) + (segment (start 161.601685 20.067136) (end 161.601685 19.019903) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 166.215414 24.680865) (end 161.601685 20.067136) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 167.562452 24.680865) (end 166.215414 24.680865) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 168.706762 24.680865) (end 169.550742 23.836885) (width 0.25) (layer F.Cu) (net 47)) + (segment (start 167.562452 24.680865) (end 168.706762 24.680865) (width 0.25) (layer F.Cu) (net 47)) + (segment (start 168.706762 24.680865) (end 169.550742 23.836885) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 167.562452 24.680865) (end 168.706762 24.680865) (width 0.25) (layer B.Cu) (net 47)) + (segment (start 172.508594 1.565138) (end 165.084703 -5.858753) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 172.508594 11.630839) (end 172.508594 1.565138) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 165.084703 -5.858753) (end 165.084703 -15.924453) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 157.660811 -33.414047) (end 150.23692 -40.837938) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 157.660811 -23.348345) (end 157.660811 -33.414047) (width 0.25) (layer B.Cu) (net 48)) + (via (at 162.577078 -18.432078) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 48)) + (segment (start 158.215628 -14.070628) (end 162.577078 -18.432078) (width 0.25) (layer F.Cu) (net 48)) + (segment (start 141.649356 -1.123708) (end 154.596276 -14.070628) (width 0.25) (layer F.Cu) (net 48)) + (segment (start 135.853113 -1.123708) (end 141.649356 -1.123708) (width 0.25) (layer F.Cu) (net 48)) + (segment (start 154.596276 -14.070628) (end 158.215628 -14.070628) (width 0.25) (layer F.Cu) (net 48)) + (segment (start 119.19381 4.367391) (end 130.362014 4.367391) (width 0.25) (layer F.Cu) (net 48)) + (segment (start 130.362014 4.367391) (end 135.853113 -1.123708) (width 0.25) (layer F.Cu) (net 48)) + (segment (start 162.577078 -18.432078) (end 157.660811 -23.348345) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 165.084703 -15.924453) (end 162.577078 -18.432078) (width 0.25) (layer B.Cu) (net 48)) + (segment (start 154.177794 2.577545) (end 154.177794 1.530311) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 158.791522 7.191273) (end 154.177794 2.577545) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 160.13856 7.191273) (end 158.791522 7.191273) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 160.13856 7.191273) (end 161.083727 7.191273) (width 0.25) (layer F.Cu) (net 49)) + (segment (start 161.28287 7.191273) (end 162.12685 6.347293) (width 0.25) (layer F.Cu) (net 49)) + (segment (start 160.13856 7.191273) (end 161.28287 7.191273) (width 0.25) (layer F.Cu) (net 49)) + (segment (start 161.28287 7.191273) (end 162.12685 6.347293) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 160.13856 7.191273) (end 161.28287 7.191273) (width 0.25) (layer B.Cu) (net 49)) + (segment (start 146.753902 -14.912048) (end 146.753902 -15.959281) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 151.367631 -10.298319) (end 146.753902 -14.912048) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 152.714669 -10.298319) (end 151.367631 -10.298319) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 153.858979 -10.298319) (end 154.702959 -11.142299) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 152.714669 -10.298319) (end 153.858979 -10.298319) (width 0.25) (layer B.Cu) (net 50)) + (segment (start 153.858979 -10.298319) (end 154.702959 -11.142299) (width 0.25) (layer F.Cu) (net 50)) + (segment (start 152.714669 -10.298319) (end 153.858979 -10.298319) (width 0.25) (layer F.Cu) (net 50)) + (segment (start 139.330011 -32.401639) (end 139.330011 -33.448874) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 143.943739 -27.787911) (end 139.330011 -32.401639) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 145.290777 -27.787911) (end 143.943739 -27.787911) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 146.435087 -27.787911) (end 147.279067 -28.631891) (width 0.25) (layer F.Cu) (net 51)) + (segment (start 145.290777 -27.787911) (end 146.435087 -27.787911) (width 0.25) (layer F.Cu) (net 51)) + (segment (start 146.435087 -27.787911) (end 147.279067 -28.631891) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 145.290777 -27.787911) (end 146.435087 -27.787911) (width 0.25) (layer B.Cu) (net 51)) + (segment (start 146.45648 33.014058) (end 146.45648 31.966824) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 151.070208 37.627786) (end 146.45648 33.014058) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 152.417246 37.627786) (end 151.070208 37.627786) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 153.561556 37.627786) (end 154.405536 36.783806) (width 0.25) (layer F.Cu) (net 52)) + (segment (start 152.417246 37.627786) (end 153.561556 37.627786) (width 0.25) (layer F.Cu) (net 52)) + (segment (start 153.561556 37.627786) (end 154.405536 36.783806) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 152.417246 37.627786) (end 153.561556 37.627786) (width 0.25) (layer B.Cu) (net 52)) + (segment (start 157.363389 14.512059) (end 149.939497 7.088167) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 157.363389 24.57776) (end 157.363389 14.512059) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 149.939497 -2.977534) (end 142.515606 -10.401425) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 149.939497 7.088167) (end 149.939497 -2.977534) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 142.515606 -20.467125) (end 135.091714 -27.891017) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 142.515606 -10.401425) (end 142.515606 -20.467125) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 148.882422 6.031092) (end 149.939497 7.088167) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 120.070109 6.031092) (end 148.882422 6.031092) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 119.19381 6.907391) (end 120.070109 6.031092) (width 0.25) (layer B.Cu) (net 53)) + (segment (start 139.032588 15.524465) (end 139.032588 14.477231) (width 0.25) (layer B.Cu) (net 54)) + (segment (start 143.646317 20.138194) (end 139.032588 15.524465) (width 0.25) (layer B.Cu) (net 54)) + (segment (start 144.993355 20.138194) (end 143.646317 20.138194) (width 0.25) (layer B.Cu) (net 54)) + (segment (start 146.137665 20.138194) (end 146.981645 19.294214) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 144.993355 20.138194) (end 146.137665 20.138194) (width 0.25) (layer F.Cu) (net 54)) + (segment (start 146.137665 20.138194) (end 146.981645 19.294214) (width 0.25) (layer B.Cu) (net 54)) + (segment (start 144.993355 20.138194) (end 146.137665 20.138194) (width 0.25) (layer B.Cu) (net 54)) + (segment (start 131.608697 -1.965127) (end 131.608697 -3.012361) (width 0.25) (layer B.Cu) (net 55)) + (segment (start 136.222425 2.648601) (end 131.608697 -1.965127) (width 0.25) (layer B.Cu) (net 55)) + (segment (start 137.569463 2.648601) (end 136.222425 2.648601) (width 0.25) (layer B.Cu) (net 55)) + (segment (start 138.713773 2.648601) (end 139.557753 1.804621) (width 0.25) (layer F.Cu) (net 55)) + (segment (start 137.569463 2.648601) (end 138.713773 2.648601) (width 0.25) (layer F.Cu) (net 55)) + (segment (start 138.713773 2.648601) (end 139.557753 1.804621) (width 0.25) (layer B.Cu) (net 55)) + (segment (start 137.569463 2.648601) (end 138.713773 2.648601) (width 0.25) (layer B.Cu) (net 55)) + (segment (start 124.184805 -19.45472) (end 124.184805 -20.501953) (width 0.25) (layer B.Cu) (net 56)) + (segment (start 128.798534 -14.840991) (end 124.184805 -19.45472) (width 0.25) (layer B.Cu) (net 56)) + (segment (start 130.145572 -14.840991) (end 128.798534 -14.840991) (width 0.25) (layer B.Cu) (net 56)) + (segment (start 131.289882 -14.840991) (end 132.133862 -15.684971) (width 0.25) (layer F.Cu) (net 56)) + (segment (start 130.145572 -14.840991) (end 131.289882 -14.840991) (width 0.25) (layer F.Cu) (net 56)) + (segment (start 131.289882 -14.840991) (end 132.133862 -15.684971) (width 0.25) (layer B.Cu) (net 56)) + (segment (start 130.145572 -14.840991) (end 131.289882 -14.840991) (width 0.25) (layer B.Cu) (net 56)) + (segment (start 129.220539 35.846629) (end 131.020343 35.846629) (width 0.25) (layer B.Cu) (net 57)) + (segment (start 125.059576 31.685666) (end 129.220539 35.846629) (width 0.25) (layer B.Cu) (net 57)) + (segment (start 125.059576 30.185666) (end 125.059576 31.685666) (width 0.25) (layer B.Cu) (net 57)) + (segment (start 132.164653 35.846629) (end 133.008633 35.002649) (width 0.25) (layer F.Cu) (net 57)) + (segment (start 131.020343 35.846629) (end 132.164653 35.846629) (width 0.25) (layer F.Cu) (net 57)) + (segment (start 132.164653 35.846629) (end 133.008633 35.002649) (width 0.25) (layer B.Cu) (net 57)) + (segment (start 131.020343 35.846629) (end 132.164653 35.846629) (width 0.25) (layer B.Cu) (net 57)) + (segment (start 121.969187 9.447391) (end 119.19381 9.447391) (width 0.25) (layer B.Cu) (net 58)) + (segment (start 135.318398 22.796602) (end 121.969187 9.447391) (width 0.25) (layer B.Cu) (net 58)) + (segment (start 135.966485 22.796602) (end 135.318398 22.796602) (width 0.25) (layer B.Cu) (net 58)) + (via (at 109.72381 28.436576) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 59)) + (segment (start 109.72381 -2.562609) (end 109.72381 28.436576) (width 0.25) (layer B.Cu) (net 59)) + (segment (start 103.95381 -8.332609) (end 109.72381 -2.562609) (width 0.25) (layer B.Cu) (net 59)) + (segment (start 109.72381 34.636576) (end 109.72381 28.436576) (width 0.25) (layer F.Cu) (net 59)) + (via (at 113.42381 28.436576) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 60)) + (segment (start 113.42381 -2.562609) (end 113.42381 28.436576) (width 0.25) (layer B.Cu) (net 60)) + (segment (start 119.19381 -8.332609) (end 113.42381 -2.562609) (width 0.25) (layer B.Cu) (net 60)) + (segment (start 113.42381 34.636576) (end 113.42381 28.436576) (width 0.25) (layer F.Cu) (net 60)) + (segment (start 116.65381 -10.872609) (end 119.19381 -8.332609) (width 0.25) (layer F.Cu) (net 60)) + (segment (start 103.95381 -10.872609) (end 116.65381 -10.872609) (width 0.25) (layer F.Cu) (net 60)) + (segment (start 119.19381 -8.332609) (end 119.19381 -5.792609) (width 0.25) (layer B.Cu) (net 60)) + + (zone (net 60) (net_name GND) (layer B.Cu) (tstamp 623E32D6) (hatch edge 0.508) + (connect_pads (clearance 0.508)) + (min_thickness 0.254) + (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 272.415 60.96) (xy -31.115 71.12) (xy -14.605 -97.155) (xy 243.84 -99.695) + ) + ) + (filled_polygon + (pts + (xy 235.329002 4.921599) (xy 217.592898 12.450129) (xy 217.580911 12.454355) (xy 217.560767 12.463768) (xy 217.54036 12.47243) + (xy 217.529235 12.478502) (xy 166.794015 36.185695) (xy 148.528528 43.938935) (xy 74.619095 43.938935) (xy 58.636465 37.154712) + (xy 67.45537 37.154712) (xy 67.466544 37.279296) (xy 67.501808 37.399306) (xy 67.559807 37.510131) (xy 67.638313 37.607511) + (xy 67.734308 37.687704) (xy 67.844104 37.747628) (xy 68.672559 38.099286) (xy 68.791935 38.13664) (xy 68.916305 38.149986) + (xy 68.931608 38.148613) (xy 68.937811 38.217771) (xy 68.973075 38.337781) (xy 69.031074 38.448606) (xy 69.10958 38.545986) + (xy 69.205575 38.626179) (xy 69.31537 38.686103) (xy 70.952028 39.380823) (xy 71.071405 39.418177) (xy 71.195775 39.431523) + (xy 71.320359 39.420349) (xy 71.440369 39.385085) (xy 71.551194 39.327086) (xy 71.648574 39.24858) (xy 71.728767 39.152585) + (xy 71.788691 39.04279) (xy 72.483411 37.406132) (xy 72.520765 37.286755) (xy 72.534111 37.162385) (xy 72.522937 37.037801) + (xy 72.487673 36.917791) (xy 72.429674 36.806966) (xy 72.351168 36.709586) (xy 72.255173 36.629393) (xy 72.145378 36.569469) + (xy 70.50872 35.874749) (xy 70.389343 35.837395) (xy 70.264973 35.824049) (xy 70.140389 35.835223) (xy 70.020379 35.870487) + (xy 69.909554 35.928486) (xy 69.855499 35.972064) (xy 69.845855 35.960101) (xy 69.74986 35.879908) (xy 69.640064 35.819984) + (xy 68.811609 35.468326) (xy 68.692233 35.430972) (xy 68.567863 35.417626) (xy 68.443279 35.4288) (xy 68.323269 35.464064) + (xy 68.212444 35.522063) (xy 68.115064 35.600569) (xy 68.034871 35.696564) (xy 67.974947 35.80636) (xy 67.50607 36.910966) + (xy 67.468716 37.030342) (xy 67.45537 37.154712) (xy 58.636465 37.154712) (xy 56.353662 36.18572) (xy 30.719969 24.207791) + (xy 52.310165 24.207791) (xy 52.321339 24.332375) (xy 52.356603 24.452385) (xy 52.414602 24.56321) (xy 52.493108 24.66059) + (xy 52.589103 24.740783) (xy 52.698899 24.800707) (xy 53.527354 25.152365) (xy 53.64673 25.189719) (xy 53.7711 25.203065) + (xy 53.786403 25.201692) (xy 53.792606 25.27085) (xy 53.82787 25.39086) (xy 53.885869 25.501685) (xy 53.964375 25.599065) + (xy 54.06037 25.679258) (xy 54.170165 25.739182) (xy 55.806823 26.433902) (xy 55.9262 26.471256) (xy 56.05057 26.484602) + (xy 56.175154 26.473428) (xy 56.295164 26.438164) (xy 56.405989 26.380165) (xy 56.503369 26.301659) (xy 56.583562 26.205664) + (xy 56.643486 26.095869) (xy 57.032179 25.180164) (xy 61.734515 25.180164) (xy 61.734515 27.680164) (xy 61.746775 27.804646) + (xy 61.783085 27.924344) (xy 61.84205 28.034658) (xy 61.921402 28.131349) (xy 62.00363 28.198831) (xy 62.003629 33.660592) + (xy 61.999953 33.697915) (xy 62.003629 33.735237) (xy 62.003629 33.735247) (xy 62.014626 33.8469) (xy 62.044344 33.944868) + (xy 62.058083 33.990161) (xy 62.128655 34.122191) (xy 62.1685 34.170741) (xy 62.188172 34.194712) (xy 62.128628 34.494059) + (xy 62.128628 34.806769) (xy 62.189635 35.113471) (xy 62.309304 35.402377) (xy 62.483036 35.662386) (xy 62.704156 35.883506) + (xy 62.964165 36.057238) (xy 63.253071 36.176907) (xy 63.559773 36.237914) (xy 63.872483 36.237914) (xy 64.179185 36.176907) + (xy 64.450777 36.06441) (xy 64.464142 36.109894) (xy 64.522141 36.220719) (xy 64.600647 36.318099) (xy 64.696642 36.398292) + (xy 64.806438 36.458216) (xy 65.634893 36.809874) (xy 65.754269 36.847228) (xy 65.878639 36.860574) (xy 66.003223 36.8494) + (xy 66.123233 36.814136) (xy 66.234058 36.756137) (xy 66.331438 36.677631) (xy 66.411631 36.581636) (xy 66.471555 36.47184) + (xy 66.937748 35.373555) (xy 88.852274 35.373555) (xy 88.863448 35.498139) (xy 88.898712 35.618149) (xy 88.956711 35.728974) + (xy 89.035217 35.826354) (xy 89.131212 35.906547) (xy 89.241008 35.966471) (xy 90.069463 36.318129) (xy 90.188839 36.355483) + (xy 90.313209 36.368829) (xy 90.328512 36.367456) (xy 90.334715 36.436614) (xy 90.369979 36.556624) (xy 90.427978 36.667449) + (xy 90.506484 36.764829) (xy 90.602479 36.845022) (xy 90.712274 36.904946) (xy 92.348932 37.599666) (xy 92.468309 37.63702) + (xy 92.592679 37.650366) (xy 92.717263 37.639192) (xy 92.837273 37.603928) (xy 92.948098 37.545929) (xy 93.045478 37.467423) + (xy 93.125671 37.371428) (xy 93.185595 37.261633) (xy 93.880315 35.624975) (xy 93.917669 35.505598) (xy 93.931015 35.381228) + (xy 93.919841 35.256644) (xy 93.884577 35.136634) (xy 93.826578 35.025809) (xy 93.748072 34.928429) (xy 93.652077 34.848236) + (xy 93.542282 34.788312) (xy 91.905624 34.093592) (xy 91.786247 34.056238) (xy 91.661877 34.042892) (xy 91.537293 34.054066) + (xy 91.417283 34.08933) (xy 91.306458 34.147329) (xy 91.252403 34.190907) (xy 91.242759 34.178944) (xy 91.146764 34.098751) + (xy 91.036968 34.038827) (xy 90.208513 33.687169) (xy 90.089137 33.649815) (xy 89.964767 33.636469) (xy 89.840183 33.647643) + (xy 89.720173 33.682907) (xy 89.609348 33.740906) (xy 89.511968 33.819412) (xy 89.431775 33.915407) (xy 89.371851 34.025203) + (xy 88.902974 35.129809) (xy 88.86562 35.249185) (xy 88.852274 35.373555) (xy 66.937748 35.373555) (xy 66.940432 35.367234) + (xy 66.977786 35.247858) (xy 66.991132 35.123488) (xy 66.979958 34.998904) (xy 66.944694 34.878894) (xy 66.886695 34.768069) + (xy 66.808189 34.670689) (xy 66.712194 34.590496) (xy 66.602398 34.530572) (xy 65.773943 34.178914) (xy 65.654567 34.14156) + (xy 65.530197 34.128214) (xy 65.422943 34.137834) (xy 65.400439 34.110413) (xy 65.284714 34.01544) (xy 65.152685 33.944868) + (xy 65.140669 33.941223) (xy 65.122952 33.898451) (xy 64.94922 33.638442) (xy 64.7281 33.417322) (xy 64.468091 33.24359) + (xy 64.179185 33.123921) (xy 63.872483 33.062914) (xy 63.559773 33.062914) (xy 63.523629 33.070104) (xy 63.523629 30.675929) + (xy 63.553536 30.705836) (xy 63.796904 30.86845) (xy 64.067321 30.98046) (xy 64.354394 31.037562) (xy 64.64709 31.037562) + (xy 64.934163 30.98046) (xy 65.20458 30.86845) (xy 65.447948 30.705836) (xy 65.654916 30.498868) (xy 65.81753 30.2555) + (xy 65.92954 29.985083) (xy 65.978765 29.73761) (xy 66.039485 29.762761) (xy 66.451962 29.844808) (xy 66.87252 29.844808) + (xy 67.219959 29.775698) (xy 67.134907 29.86075) (xy 66.847206 30.291325) (xy 66.649034 30.769754) (xy 66.548007 31.277652) + (xy 66.548007 31.7955) (xy 66.649034 32.303398) (xy 66.847206 32.781827) (xy 67.134907 33.212402) (xy 67.501081 33.578576) + (xy 67.931656 33.866277) (xy 68.410085 34.064449) (xy 68.917983 34.165476) (xy 69.435831 34.165476) (xy 69.943729 34.064449) + (xy 70.422158 33.866277) (xy 70.852733 33.578576) (xy 71.056167 33.375142) (xy 72.367172 33.375142) (xy 72.367172 33.667838) + (xy 72.424274 33.954911) (xy 72.536284 34.225328) (xy 72.698898 34.468696) (xy 72.905866 34.675664) (xy 73.149234 34.838278) + (xy 73.419651 34.950288) (xy 73.706724 35.00739) (xy 73.99942 35.00739) (xy 74.286493 34.950288) (xy 74.55691 34.838278) + (xy 74.800278 34.675664) (xy 75.007246 34.468696) (xy 75.16986 34.225328) (xy 75.28187 33.954911) (xy 75.338972 33.667838) + (xy 75.338972 33.375142) (xy 75.28187 33.088069) (xy 75.16986 32.817652) (xy 75.007246 32.574284) (xy 74.800278 32.367316) + (xy 74.55691 32.204702) (xy 74.286493 32.092692) (xy 73.99942 32.03559) (xy 73.706724 32.03559) (xy 73.419651 32.092692) + (xy 73.149234 32.204702) (xy 72.905866 32.367316) (xy 72.698898 32.574284) (xy 72.536284 32.817652) (xy 72.424274 33.088069) + (xy 72.367172 33.375142) (xy 71.056167 33.375142) (xy 71.218907 33.212402) (xy 71.506608 32.781827) (xy 71.70478 32.303398) + (xy 71.805807 31.7955) (xy 71.805807 31.277652) (xy 71.70478 30.769754) (xy 71.506608 30.291325) (xy 71.218907 29.86075) + (xy 70.852733 29.494576) (xy 70.422158 29.206875) (xy 69.943729 29.008703) (xy 69.435831 28.907676) (xy 68.917983 28.907676) + (xy 68.410085 29.008703) (xy 68.343723 29.036191) (xy 68.554253 28.72111) (xy 68.715194 28.332564) (xy 68.797241 27.920087) + (xy 68.797241 27.642589) (xy 71.364903 27.642589) (xy 71.364903 28.063147) (xy 71.44695 28.475624) (xy 71.607891 28.86417) + (xy 71.84154 29.213851) (xy 72.13892 29.511231) (xy 72.488601 29.74488) (xy 72.877147 29.905821) (xy 73.289624 29.987868) + (xy 73.710182 29.987868) (xy 74.122659 29.905821) (xy 74.511205 29.74488) (xy 74.626338 29.667951) (xy 74.626338 30.393063) + (xy 74.638598 30.517545) (xy 74.674908 30.637243) (xy 74.733873 30.747557) (xy 74.813225 30.844248) (xy 74.909916 30.9236) + (xy 75.02023 30.982565) (xy 75.139928 31.018875) (xy 75.26441 31.031135) (xy 77.81441 31.031135) (xy 77.938892 31.018875) + (xy 78.05859 30.982565) (xy 78.168904 30.9236) (xy 78.265595 30.844248) (xy 78.344947 30.747557) (xy 78.403912 30.637243) + (xy 78.440222 30.517545) (xy 78.452482 30.393063) (xy 78.452482 28.304792) (xy 83.131418 23.625857) (xy 83.131418 25.899006) + (xy 83.143678 26.023488) (xy 83.179988 26.143186) (xy 83.238953 26.2535) (xy 83.318305 26.350191) (xy 83.414996 26.429543) + (xy 83.52531 26.488508) (xy 83.645008 26.524818) (xy 83.76949 26.537078) (xy 84.284491 26.537078) (xy 84.284491 26.568523) + (xy 84.210747 26.642267) (xy 84.181743 26.66607) (xy 84.155124 26.698506) (xy 84.08677 26.781795) (xy 84.064586 26.823298) + (xy 84.016198 26.913825) (xy 83.972741 27.057086) (xy 83.961744 27.168739) (xy 83.961744 27.168749) (xy 83.958068 27.206071) + (xy 83.961744 27.243394) (xy 83.961745 31.77548) (xy 83.87994 31.857285) (xy 83.706208 32.117294) (xy 83.586539 32.4062) + (xy 83.525532 32.712902) (xy 83.525532 33.025612) (xy 83.586539 33.332314) (xy 83.706208 33.62122) (xy 83.87994 33.881229) + (xy 84.10106 34.102349) (xy 84.361069 34.276081) (xy 84.649975 34.39575) (xy 84.956677 34.456757) (xy 85.269387 34.456757) + (xy 85.576089 34.39575) (xy 85.847681 34.283253) (xy 85.861046 34.328737) (xy 85.919045 34.439562) (xy 85.997551 34.536942) + (xy 86.093546 34.617135) (xy 86.203342 34.677059) (xy 87.031797 35.028717) (xy 87.151173 35.066071) (xy 87.275543 35.079417) + (xy 87.400127 35.068243) (xy 87.520137 35.032979) (xy 87.630962 34.97498) (xy 87.728342 34.896474) (xy 87.808535 34.800479) + (xy 87.868459 34.690683) (xy 88.337336 33.586077) (xy 88.37469 33.466701) (xy 88.388036 33.342331) (xy 88.376862 33.217747) + (xy 88.341598 33.097737) (xy 88.283599 32.986912) (xy 88.205093 32.889532) (xy 88.109098 32.809339) (xy 87.999302 32.749415) + (xy 87.170847 32.397757) (xy 87.051471 32.360403) (xy 86.927101 32.347057) (xy 86.819847 32.356677) (xy 86.797343 32.329256) + (xy 86.681618 32.234283) (xy 86.549589 32.163711) (xy 86.537573 32.160066) (xy 86.519856 32.117294) (xy 86.346124 31.857285) + (xy 86.125004 31.636165) (xy 85.864995 31.462433) (xy 85.576089 31.342764) (xy 85.481744 31.323998) (xy 85.481744 29.202787) + (xy 85.751297 29.256404) (xy 86.043993 29.256404) (xy 86.331066 29.199302) (xy 86.601483 29.087292) (xy 86.844851 28.924678) + (xy 87.051819 28.71771) (xy 87.214433 28.474342) (xy 87.326443 28.203925) (xy 87.375668 27.956452) (xy 87.436388 27.981603) + (xy 87.848865 28.06365) (xy 88.269423 28.06365) (xy 88.616862 27.99454) (xy 88.53181 28.079592) (xy 88.244109 28.510167) + (xy 88.045937 28.988596) (xy 87.94491 29.496494) (xy 87.94491 30.014342) (xy 88.045937 30.52224) (xy 88.244109 31.000669) + (xy 88.53181 31.431244) (xy 88.897984 31.797418) (xy 89.328559 32.085119) (xy 89.806988 32.283291) (xy 90.314886 32.384318) + (xy 90.832734 32.384318) (xy 91.340632 32.283291) (xy 91.819061 32.085119) (xy 92.249636 31.797418) (xy 92.45307 31.593984) + (xy 93.764075 31.593984) (xy 93.764075 31.88668) (xy 93.821177 32.173753) (xy 93.933187 32.44417) (xy 94.095801 32.687538) + (xy 94.302769 32.894506) (xy 94.546137 33.05712) (xy 94.816554 33.16913) (xy 95.103627 33.226232) (xy 95.396323 33.226232) + (xy 95.683396 33.16913) (xy 95.953813 33.05712) (xy 96.197181 32.894506) (xy 96.404149 32.687538) (xy 96.566763 32.44417) + (xy 96.678773 32.173753) (xy 96.735875 31.88668) (xy 96.735875 31.593984) (xy 96.678773 31.306911) (xy 96.566763 31.036494) + (xy 96.404149 30.793126) (xy 96.197181 30.586158) (xy 95.953813 30.423544) (xy 95.683396 30.311534) (xy 95.396323 30.254432) + (xy 95.103627 30.254432) (xy 94.816554 30.311534) (xy 94.546137 30.423544) (xy 94.302769 30.586158) (xy 94.095801 30.793126) + (xy 93.933187 31.036494) (xy 93.821177 31.306911) (xy 93.764075 31.593984) (xy 92.45307 31.593984) (xy 92.61581 31.431244) + (xy 92.903511 31.000669) (xy 93.101683 30.52224) (xy 93.20271 30.014342) (xy 93.20271 29.496494) (xy 93.101683 28.988596) + (xy 92.903511 28.510167) (xy 92.61581 28.079592) (xy 92.249636 27.713418) (xy 91.819061 27.425717) (xy 91.340632 27.227545) + (xy 90.832734 27.126518) (xy 90.314886 27.126518) (xy 89.806988 27.227545) (xy 89.740626 27.255033) (xy 89.951156 26.939952) + (xy 90.112097 26.551406) (xy 90.194144 26.138929) (xy 90.194144 25.718371) (xy 90.112097 25.305894) (xy 89.951156 24.917348) + (xy 89.717507 24.567667) (xy 89.420127 24.270287) (xy 89.070446 24.036638) (xy 88.6819 23.875697) (xy 88.269423 23.79365) + (xy 87.848865 23.79365) (xy 87.436388 23.875697) (xy 87.047842 24.036638) (xy 86.957562 24.096961) (xy 86.957562 23.399006) + (xy 86.945302 23.274524) (xy 86.908992 23.154826) (xy 86.850027 23.044512) (xy 86.770675 22.947821) (xy 86.673984 22.868469) + (xy 86.56367 22.809504) (xy 86.443972 22.773194) (xy 86.31949 22.760934) (xy 83.996341 22.760934) (xy 84.474304 22.282971) + (xy 84.503302 22.259173) (xy 84.598275 22.143448) (xy 84.668847 22.011419) (xy 84.712304 21.868158) (xy 84.723301 21.756505) + (xy 84.723301 21.756496) (xy 84.726977 21.719173) (xy 84.723301 21.68185) (xy 84.723301 13.541542) (xy 85.238301 13.541542) + (xy 85.362783 13.529282) (xy 85.482481 13.492972) (xy 85.592795 13.434007) (xy 85.689486 13.354655) (xy 85.768838 13.257964) + (xy 85.827803 13.14765) (xy 85.864113 13.027952) (xy 85.876373 12.90347) (xy 85.876373 10.815199) (xy 91.305886 5.385688) + (xy 93.338592 7.418394) (xy 93.36239 7.447392) (xy 93.427372 7.500721) (xy 93.478115 7.542365) (xy 93.610144 7.612937) + (xy 93.753405 7.656394) (xy 93.902391 7.671068) (xy 93.939724 7.667391) (xy 102.644 7.667391) (xy 102.779906 7.870789) + (xy 102.990412 8.081295) (xy 103.13423 8.177391) (xy 102.990412 8.273487) (xy 102.779906 8.483993) (xy 102.614513 8.731522) + (xy 102.500588 9.006561) (xy 102.44251 9.298541) (xy 102.44251 9.596241) (xy 102.490234 9.836166) (xy 97.425311 14.901089) + (xy 97.396313 14.924887) (xy 97.372515 14.953885) (xy 97.372514 14.953886) (xy 97.301339 15.040612) (xy 97.230767 15.172642) + (xy 97.209346 15.24326) (xy 97.194491 15.292234) (xy 97.187311 15.315903) (xy 97.172637 15.464888) (xy 97.176314 15.50222) + (xy 97.176313 25.473833) (xy 96.954708 25.473833) (xy 96.949759 25.448954) (xy 96.788818 25.060408) (xy 96.555169 24.710727) + (xy 96.257789 24.413347) (xy 95.908108 24.179698) (xy 95.519562 24.018757) (xy 95.107085 23.93671) (xy 94.686527 23.93671) + (xy 94.27405 24.018757) (xy 93.885504 24.179698) (xy 93.535823 24.413347) (xy 93.238443 24.710727) (xy 93.004794 25.060408) + (xy 92.843853 25.448954) (xy 92.761806 25.861431) (xy 92.761806 26.281989) (xy 92.843853 26.694466) (xy 93.004794 27.083012) + (xy 93.238443 27.432693) (xy 93.535823 27.730073) (xy 93.885504 27.963722) (xy 94.27405 28.124663) (xy 94.686527 28.20671) + (xy 95.107085 28.20671) (xy 95.519562 28.124663) (xy 95.908108 27.963722) (xy 96.023241 27.886793) (xy 96.023241 28.611905) + (xy 96.035501 28.736387) (xy 96.071811 28.856085) (xy 96.130776 28.966399) (xy 96.210128 29.06309) (xy 96.306819 29.142442) + (xy 96.417133 29.201407) (xy 96.536831 29.237717) (xy 96.661313 29.249977) (xy 99.211313 29.249977) (xy 99.335795 29.237717) + (xy 99.455493 29.201407) (xy 99.565807 29.142442) (xy 99.662498 29.06309) (xy 99.74185 28.966399) (xy 99.800815 28.856085) + (xy 99.837125 28.736387) (xy 99.849385 28.611905) (xy 99.849385 26.111905) (xy 99.837125 25.987423) (xy 99.800815 25.867725) + (xy 99.74185 25.757411) (xy 99.662498 25.66072) (xy 99.565807 25.581368) (xy 99.455493 25.522403) (xy 99.335795 25.486093) + (xy 99.211313 25.473833) (xy 98.696313 25.473833) (xy 98.696313 15.779689) (xy 102.44251 12.033493) (xy 102.44251 12.136241) + (xy 102.490234 12.376166) (xy 102.241512 12.624888) (xy 102.212508 12.648691) (xy 102.170422 12.699974) (xy 102.117535 12.764416) + (xy 102.070189 12.852994) (xy 102.046963 12.896446) (xy 102.003506 13.039707) (xy 101.992509 13.15136) (xy 101.992509 13.15137) + (xy 101.988833 13.188692) (xy 101.992509 13.226014) (xy 101.99251 36.269135) (xy 101.916096 36.320193) (xy 101.771933 36.464356) + (xy 101.658665 36.633874) (xy 101.580644 36.822232) (xy 101.54087 37.022191) (xy 101.54087 37.226069) (xy 101.580644 37.426028) + (xy 101.658665 37.614386) (xy 101.771933 37.783904) (xy 101.916096 37.928067) (xy 102.085614 38.041335) (xy 102.273972 38.119356) + (xy 102.473931 38.15913) (xy 102.677809 38.15913) (xy 102.877768 38.119356) (xy 103.066126 38.041335) (xy 103.235644 37.928067) + (xy 103.379807 37.783904) (xy 103.493075 37.614386) (xy 103.571096 37.426028) (xy 103.61087 37.226069) (xy 103.61087 37.022191) + (xy 103.571096 36.822232) (xy 103.512509 36.680791) (xy 103.512509 22.348255) (xy 103.663797 22.410921) (xy 103.863756 22.450695) + (xy 104.067634 22.450695) (xy 104.267593 22.410921) (xy 104.455951 22.3329) (xy 104.625469 22.219632) (xy 104.769632 22.075469) + (xy 104.8829 21.905951) (xy 104.960921 21.717593) (xy 105.000695 21.517634) (xy 105.000695 21.313756) (xy 104.960921 21.113797) + (xy 104.8829 20.925439) (xy 104.769632 20.755921) (xy 104.71381 20.700099) (xy 104.71381 15.837201) (xy 104.917208 15.701295) + (xy 105.127714 15.490789) (xy 105.293107 15.24326) (xy 105.407032 14.968221) (xy 105.46511 14.676241) (xy 105.46511 14.378541) + (xy 105.407032 14.086561) (xy 105.293107 13.811522) (xy 105.127714 13.563993) (xy 104.917208 13.353487) (xy 104.77339 13.257391) + (xy 104.917208 13.161295) (xy 105.127714 12.950789) (xy 105.293107 12.70326) (xy 105.407032 12.428221) (xy 105.46511 12.136241) + (xy 105.46511 11.838541) (xy 105.407032 11.546561) (xy 105.293107 11.271522) (xy 105.127714 11.023993) (xy 104.917208 10.813487) + (xy 104.77339 10.717391) (xy 104.917208 10.621295) (xy 105.127714 10.410789) (xy 105.293107 10.16326) (xy 105.407032 9.888221) + (xy 105.46511 9.596241) (xy 105.46511 9.298541) (xy 105.407032 9.006561) (xy 105.293107 8.731522) (xy 105.127714 8.483993) + (xy 104.917208 8.273487) (xy 104.77339 8.177391) (xy 104.917208 8.081295) (xy 105.127714 7.870789) (xy 105.293107 7.62326) + (xy 105.407032 7.348221) (xy 105.46511 7.056241) (xy 105.46511 6.758541) (xy 105.407032 6.466561) (xy 105.293107 6.191522) + (xy 105.127714 5.943993) (xy 104.917208 5.733487) (xy 104.77339 5.637391) (xy 104.917208 5.541295) (xy 105.127714 5.330789) + (xy 105.293107 5.08326) (xy 105.407032 4.808221) (xy 105.46511 4.516241) (xy 105.46511 4.218541) (xy 105.407032 3.926561) + (xy 105.293107 3.651522) (xy 105.127714 3.403993) (xy 104.917208 3.193487) (xy 104.77339 3.097391) (xy 104.917208 3.001295) + (xy 105.127714 2.790789) (xy 105.293107 2.54326) (xy 105.407032 2.268221) (xy 105.46511 1.976241) (xy 105.46511 1.678541) + (xy 105.407032 1.386561) (xy 105.293107 1.111522) (xy 105.127714 0.863993) (xy 104.917208 0.653487) (xy 104.77339 0.557391) + (xy 104.917208 0.461295) (xy 105.127714 0.250789) (xy 105.293107 0.00326) (xy 105.407032 -0.271779) (xy 105.46511 -0.563759) + (xy 105.46511 -0.861459) (xy 105.407032 -1.153439) (xy 105.293107 -1.428478) (xy 105.127714 -1.676007) (xy 104.917208 -1.886513) + (xy 104.77339 -1.982609) (xy 104.917208 -2.078705) (xy 105.127714 -2.289211) (xy 105.293107 -2.53674) (xy 105.407032 -2.811779) + (xy 105.46511 -3.103759) (xy 105.46511 -3.401459) (xy 105.407032 -3.693439) (xy 105.293107 -3.968478) (xy 105.127714 -4.216007) + (xy 104.917208 -4.426513) (xy 104.77339 -4.522609) (xy 104.917208 -4.618705) (xy 105.127714 -4.829211) (xy 105.293107 -5.07674) + (xy 105.407032 -5.351779) (xy 105.46511 -5.643759) (xy 105.46511 -5.746508) (xy 108.96381 -2.247807) (xy 108.963811 27.732864) + (xy 108.919873 27.776802) (xy 108.806605 27.94632) (xy 108.728584 28.134678) (xy 108.68881 28.334637) (xy 108.68881 28.538515) + (xy 108.728584 28.738474) (xy 108.806605 28.926832) (xy 108.919873 29.09635) (xy 109.064036 29.240513) (xy 109.233554 29.353781) + (xy 109.421912 29.431802) (xy 109.621871 29.471576) (xy 109.825749 29.471576) (xy 110.025708 29.431802) (xy 110.214066 29.353781) + (xy 110.383584 29.240513) (xy 110.527747 29.09635) (xy 110.635112 28.935666) (xy 123.146504 28.935666) (xy 123.146504 31.435666) + (xy 123.158764 31.560148) (xy 123.195074 31.679846) (xy 123.254039 31.79016) (xy 123.333391 31.886851) (xy 123.430082 31.966203) + (xy 123.540396 32.025168) (xy 123.660094 32.061478) (xy 123.784576 32.073738) (xy 124.40525 32.073738) (xy 124.424602 32.109942) + (xy 124.46873 32.163711) (xy 124.519576 32.225667) (xy 124.548574 32.249465) (xy 128.65674 36.357632) (xy 128.680538 36.38663) + (xy 128.796263 36.481603) (xy 128.928292 36.552175) (xy 129.071553 36.595632) (xy 129.183206 36.606629) (xy 129.183215 36.606629) + (xy 129.220538 36.610305) (xy 129.257861 36.606629) (xy 129.618889 36.606629) (xy 129.787251 36.858601) (xy 130.008371 37.079721) + (xy 130.26838 37.253453) (xy 130.557286 37.373122) (xy 130.863988 37.434129) (xy 131.176698 37.434129) (xy 131.4834 37.373122) + (xy 131.772306 37.253453) (xy 132.032315 37.079721) (xy 132.253435 36.858601) (xy 132.427167 36.598592) (xy 132.444884 36.55582) + (xy 132.4569 36.552175) (xy 132.588929 36.481603) (xy 132.704654 36.38663) (xy 132.727158 36.359209) (xy 132.834412 36.368829) + (xy 132.958782 36.355483) (xy 133.078158 36.318129) (xy 133.906613 35.966471) (xy 134.016409 35.906547) (xy 134.112404 35.826354) + (xy 134.19091 35.728974) (xy 134.248909 35.618149) (xy 134.284173 35.498139) (xy 134.295347 35.373555) (xy 134.282001 35.249185) + (xy 134.244647 35.129809) (xy 133.77577 34.025203) (xy 133.715846 33.915407) (xy 133.635653 33.819412) (xy 133.538273 33.740906) + (xy 133.427448 33.682907) (xy 133.307438 33.647643) (xy 133.182854 33.636469) (xy 133.058484 33.649815) (xy 132.939108 33.687169) + (xy 132.110653 34.038827) (xy 132.000857 34.098751) (xy 131.904862 34.178944) (xy 131.826356 34.276324) (xy 131.768357 34.387149) + (xy 131.754992 34.432633) (xy 131.4834 34.320136) (xy 131.176698 34.259129) (xy 130.863988 34.259129) (xy 130.557286 34.320136) + (xy 130.26838 34.439805) (xy 130.008371 34.613537) (xy 129.787251 34.834657) (xy 129.618889 35.086629) (xy 129.535341 35.086629) + (xy 127.791043 33.342331) (xy 134.759585 33.342331) (xy 134.772931 33.466701) (xy 134.810285 33.586077) (xy 135.279162 34.690683) + (xy 135.339086 34.800479) (xy 135.419279 34.896474) (xy 135.516659 34.97498) (xy 135.627484 35.032979) (xy 135.747494 35.068243) + (xy 135.872078 35.079417) (xy 135.996448 35.066071) (xy 136.115824 35.028717) (xy 136.944279 34.677059) (xy 137.054075 34.617135) + (xy 137.15007 34.536942) (xy 137.159714 34.524979) (xy 137.213769 34.568557) (xy 137.324594 34.626556) (xy 137.444604 34.66182) + (xy 137.569188 34.672994) (xy 137.693558 34.659648) (xy 137.812935 34.622294) (xy 139.449593 33.927574) (xy 139.559388 33.86765) + (xy 139.655383 33.787457) (xy 139.733889 33.690077) (xy 139.791888 33.579252) (xy 139.827152 33.459242) (xy 139.838326 33.334658) + (xy 139.82498 33.210288) (xy 139.787626 33.090911) (xy 139.092906 31.454253) (xy 139.032982 31.344458) (xy 138.952789 31.248463) + (xy 138.855409 31.169957) (xy 138.744584 31.111958) (xy 138.624574 31.076694) (xy 138.49999 31.06552) (xy 138.37562 31.078866) + (xy 138.256243 31.11622) (xy 136.619585 31.81094) (xy 136.50979 31.870864) (xy 136.413795 31.951057) (xy 136.335289 32.048437) + (xy 136.27729 32.159262) (xy 136.242026 32.279272) (xy 136.235823 32.34843) (xy 136.22052 32.347057) (xy 136.09615 32.360403) + (xy 135.976774 32.397757) (xy 135.148319 32.749415) (xy 135.038523 32.809339) (xy 134.942528 32.889532) (xy 134.864022 32.986912) + (xy 134.806023 33.097737) (xy 134.770759 33.217747) (xy 134.759585 33.342331) (xy 127.791043 33.342331) (xy 127.655985 33.207273) + (xy 127.751297 33.226232) (xy 128.043993 33.226232) (xy 128.331066 33.16913) (xy 128.601483 33.05712) (xy 128.844851 32.894506) + (xy 129.051819 32.687538) (xy 129.214433 32.44417) (xy 129.326443 32.173753) (xy 129.383545 31.88668) (xy 129.383545 31.593984) + (xy 129.326443 31.306911) (xy 129.214433 31.036494) (xy 129.061695 30.807906) (xy 129.085531 30.798033) (xy 129.435212 30.564384) + (xy 129.732592 30.267004) (xy 129.94491 29.949247) (xy 129.94491 30.014342) (xy 130.045937 30.52224) (xy 130.244109 31.000669) + (xy 130.53181 31.431244) (xy 130.897984 31.797418) (xy 131.328559 32.085119) (xy 131.806988 32.283291) (xy 132.314886 32.384318) + (xy 132.832734 32.384318) (xy 133.340632 32.283291) (xy 133.819061 32.085119) (xy 134.249636 31.797418) (xy 134.61581 31.431244) + (xy 134.903511 31.000669) (xy 135.021083 30.716824) (xy 144.543408 30.716824) (xy 144.543408 33.216824) (xy 144.555668 33.341306) + (xy 144.591978 33.461004) (xy 144.650943 33.571318) (xy 144.730295 33.668009) (xy 144.826986 33.747361) (xy 144.9373 33.806326) + (xy 145.056998 33.842636) (xy 145.18148 33.854896) (xy 146.222517 33.854896) (xy 150.506409 38.138789) (xy 150.530207 38.167787) + (xy 150.645932 38.26276) (xy 150.777961 38.333332) (xy 150.921222 38.376789) (xy 151.014589 38.385985) (xy 151.184154 38.639758) + (xy 151.405274 38.860878) (xy 151.665283 39.03461) (xy 151.954189 39.154279) (xy 152.260891 39.215286) (xy 152.573601 39.215286) + (xy 152.880303 39.154279) (xy 153.169209 39.03461) (xy 153.429218 38.860878) (xy 153.650338 38.639758) (xy 153.82407 38.379749) + (xy 153.841787 38.336977) (xy 153.853803 38.333332) (xy 153.985832 38.26276) (xy 154.101557 38.167787) (xy 154.124061 38.140366) + (xy 154.231315 38.149986) (xy 154.355685 38.13664) (xy 154.475061 38.099286) (xy 155.303516 37.747628) (xy 155.413312 37.687704) + (xy 155.509307 37.607511) (xy 155.587813 37.510131) (xy 155.645812 37.399306) (xy 155.681076 37.279296) (xy 155.69225 37.154712) + (xy 155.678904 37.030342) (xy 155.64155 36.910966) (xy 155.172673 35.80636) (xy 155.112749 35.696564) (xy 155.032556 35.600569) + (xy 154.935176 35.522063) (xy 154.824351 35.464064) (xy 154.704341 35.4288) (xy 154.579757 35.417626) (xy 154.455387 35.430972) + (xy 154.336011 35.468326) (xy 153.507556 35.819984) (xy 153.39776 35.879908) (xy 153.301765 35.960101) (xy 153.223259 36.057481) + (xy 153.16526 36.168306) (xy 153.151895 36.21379) (xy 152.880303 36.101293) (xy 152.573601 36.040286) (xy 152.260891 36.040286) + (xy 151.954189 36.101293) (xy 151.665283 36.220962) (xy 151.405274 36.394694) (xy 151.184154 36.615814) (xy 151.16368 36.646456) + (xy 149.640712 35.123488) (xy 156.156488 35.123488) (xy 156.169834 35.247858) (xy 156.207188 35.367234) (xy 156.676065 36.47184) + (xy 156.735989 36.581636) (xy 156.816182 36.677631) (xy 156.913562 36.756137) (xy 157.024387 36.814136) (xy 157.144397 36.8494) + (xy 157.268981 36.860574) (xy 157.393351 36.847228) (xy 157.512727 36.809874) (xy 158.341182 36.458216) (xy 158.450978 36.398292) + (xy 158.546973 36.318099) (xy 158.556617 36.306136) (xy 158.610672 36.349714) (xy 158.721497 36.407713) (xy 158.841507 36.442977) + (xy 158.966091 36.454151) (xy 159.090461 36.440805) (xy 159.209838 36.403451) (xy 160.846496 35.708731) (xy 160.956291 35.648807) + (xy 161.052286 35.568614) (xy 161.130792 35.471234) (xy 161.188791 35.360409) (xy 161.224055 35.240399) (xy 161.235229 35.115815) + (xy 161.221883 34.991445) (xy 161.184529 34.872068) (xy 160.489809 33.23541) (xy 160.429885 33.125615) (xy 160.349692 33.02962) + (xy 160.252312 32.951114) (xy 160.141487 32.893115) (xy 160.021477 32.857851) (xy 159.896893 32.846677) (xy 159.772523 32.860023) + (xy 159.653146 32.897377) (xy 158.016488 33.592097) (xy 157.906693 33.652021) (xy 157.810698 33.732214) (xy 157.732192 33.829594) + (xy 157.674193 33.940419) (xy 157.638929 34.060429) (xy 157.632726 34.129587) (xy 157.617423 34.128214) (xy 157.493053 34.14156) + (xy 157.373677 34.178914) (xy 156.545222 34.530572) (xy 156.435426 34.590496) (xy 156.339431 34.670689) (xy 156.260925 34.768069) + (xy 156.202926 34.878894) (xy 156.167662 34.998904) (xy 156.156488 35.123488) (xy 149.640712 35.123488) (xy 149.510724 34.993501) + (xy 149.72797 34.950288) (xy 149.998387 34.838278) (xy 150.241755 34.675664) (xy 150.448723 34.468696) (xy 150.611337 34.225328) + (xy 150.723347 33.954911) (xy 150.780449 33.667838) (xy 150.780449 33.375142) (xy 150.723347 33.088069) (xy 150.611337 32.817652) + (xy 150.458599 32.589064) (xy 150.482435 32.579191) (xy 150.832116 32.345542) (xy 151.129496 32.048162) (xy 151.341814 31.730405) + (xy 151.341814 31.7955) (xy 151.442841 32.303398) (xy 151.641013 32.781827) (xy 151.928714 33.212402) (xy 152.294888 33.578576) + (xy 152.725463 33.866277) (xy 153.203892 34.064449) (xy 153.71179 34.165476) (xy 154.229638 34.165476) (xy 154.737536 34.064449) + (xy 155.215965 33.866277) (xy 155.64654 33.578576) (xy 156.012714 33.212402) (xy 156.300415 32.781827) (xy 156.498587 32.303398) + (xy 156.599614 31.7955) (xy 156.599614 31.277652) (xy 156.498587 30.769754) (xy 156.300415 30.291325) (xy 156.012714 29.86075) + (xy 155.64654 29.494576) (xy 155.51295 29.405314) (xy 157.160979 29.405314) (xy 157.160979 29.69801) (xy 157.218081 29.985083) + (xy 157.330091 30.2555) (xy 157.492705 30.498868) (xy 157.699673 30.705836) (xy 157.943041 30.86845) (xy 158.213458 30.98046) + (xy 158.500531 31.037562) (xy 158.793227 31.037562) (xy 159.0803 30.98046) (xy 159.350717 30.86845) (xy 159.594085 30.705836) + (xy 159.801053 30.498868) (xy 159.963667 30.2555) (xy 160.075677 29.985083) (xy 160.132779 29.69801) (xy 160.132779 29.405314) + (xy 160.075677 29.118241) (xy 159.963667 28.847824) (xy 159.801053 28.604456) (xy 159.594085 28.397488) (xy 159.350717 28.234874) + (xy 159.0803 28.122864) (xy 158.793227 28.065762) (xy 158.500531 28.065762) (xy 158.213458 28.122864) (xy 157.943041 28.234874) + (xy 157.699673 28.397488) (xy 157.492705 28.604456) (xy 157.330091 28.847824) (xy 157.218081 29.118241) (xy 157.160979 29.405314) + (xy 155.51295 29.405314) (xy 155.215965 29.206875) (xy 154.737536 29.008703) (xy 154.229638 28.907676) (xy 153.71179 28.907676) + (xy 153.203892 29.008703) (xy 152.725463 29.206875) (xy 152.294888 29.494576) (xy 151.928714 29.86075) (xy 151.641013 30.291325) + (xy 151.592511 30.408419) (xy 151.524086 30.064423) (xy 151.363145 29.675877) (xy 151.129496 29.326196) (xy 150.832116 29.028816) + (xy 150.482435 28.795167) (xy 150.093889 28.634226) (xy 149.681412 28.552179) (xy 149.260854 28.552179) (xy 148.848377 28.634226) + (xy 148.459831 28.795167) (xy 148.11015 29.028816) (xy 147.81277 29.326196) (xy 147.579121 29.675877) (xy 147.41818 30.064423) + (xy 147.41533 30.078752) (xy 145.18148 30.078752) (xy 145.056998 30.091012) (xy 144.9373 30.127322) (xy 144.826986 30.186287) + (xy 144.730295 30.265639) (xy 144.650943 30.36233) (xy 144.591978 30.472644) (xy 144.555668 30.592342) (xy 144.543408 30.716824) + (xy 135.021083 30.716824) (xy 135.101683 30.52224) (xy 135.20271 30.014342) (xy 135.20271 29.496494) (xy 135.101683 28.988596) + (xy 134.903511 28.510167) (xy 134.61581 28.079592) (xy 134.249636 27.713418) (xy 134.116046 27.624156) (xy 135.764075 27.624156) + (xy 135.764075 27.916852) (xy 135.821177 28.203925) (xy 135.933187 28.474342) (xy 136.095801 28.71771) (xy 136.302769 28.924678) + (xy 136.546137 29.087292) (xy 136.816554 29.199302) (xy 137.103627 29.256404) (xy 137.396323 29.256404) (xy 137.683396 29.199302) + (xy 137.953813 29.087292) (xy 138.197181 28.924678) (xy 138.404149 28.71771) (xy 138.566763 28.474342) (xy 138.678773 28.203925) + (xy 138.735875 27.916852) (xy 138.735875 27.624156) (xy 138.678773 27.337083) (xy 138.566763 27.066666) (xy 138.404149 26.823298) + (xy 138.197181 26.61633) (xy 137.953813 26.453716) (xy 137.683396 26.341706) (xy 137.396323 26.284604) (xy 137.103627 26.284604) + (xy 136.816554 26.341706) (xy 136.546137 26.453716) (xy 136.302769 26.61633) (xy 136.095801 26.823298) (xy 135.933187 27.066666) + (xy 135.821177 27.337083) (xy 135.764075 27.624156) (xy 134.116046 27.624156) (xy 133.819061 27.425717) (xy 133.340632 27.227545) + (xy 132.832734 27.126518) (xy 132.314886 27.126518) (xy 131.806988 27.227545) (xy 131.328559 27.425717) (xy 130.897984 27.713418) + (xy 130.53181 28.079592) (xy 130.244109 28.510167) (xy 130.195607 28.627261) (xy 130.127182 28.283265) (xy 129.966241 27.894719) + (xy 129.732592 27.545038) (xy 129.435212 27.247658) (xy 129.085531 27.014009) (xy 128.696985 26.853068) (xy 128.284508 26.771021) + (xy 127.86395 26.771021) (xy 127.451473 26.853068) (xy 127.062927 27.014009) (xy 126.713246 27.247658) (xy 126.415866 27.545038) + (xy 126.182217 27.894719) (xy 126.021276 28.283265) (xy 126.018426 28.297594) (xy 123.784576 28.297594) (xy 123.660094 28.309854) + (xy 123.540396 28.346164) (xy 123.430082 28.405129) (xy 123.333391 28.484481) (xy 123.254039 28.581172) (xy 123.195074 28.691486) + (xy 123.158764 28.811184) (xy 123.146504 28.935666) (xy 110.635112 28.935666) (xy 110.641015 28.926832) (xy 110.719036 28.738474) + (xy 110.75881 28.538515) (xy 110.75881 28.334637) (xy 110.719036 28.134678) (xy 110.641015 27.94632) (xy 110.527747 27.776802) + (xy 110.48381 27.732865) (xy 110.48381 -2.525287) (xy 110.487486 -2.56261) (xy 110.48381 -2.599933) (xy 110.48381 -2.599942) + (xy 110.472813 -2.711595) (xy 110.429356 -2.854856) (xy 110.358784 -2.986885) (xy 110.263811 -3.10261) (xy 110.234814 -3.126407) + (xy 105.417386 -7.943834) (xy 105.46511 -8.183759) (xy 105.46511 -8.481459) (xy 105.407032 -8.773439) (xy 105.293107 -9.048478) + (xy 105.127714 -9.296007) (xy 104.917208 -9.506513) (xy 104.754001 -9.615564) (xy 104.821373 -9.82544) (xy 103.95381 -10.693004) + (xy 103.939668 -10.678861) (xy 103.760063 -10.858467) (xy 103.774205 -10.872609) (xy 103.760063 -10.886752) (xy 103.939668 -11.066357) + (xy 103.95381 -11.052214) (xy 103.967952 -11.066357) (xy 104.147558 -10.886751) (xy 104.133415 -10.872609) (xy 105.000979 -10.005046) + (xy 105.252739 -10.085863) (xy 105.381267 -10.354388) (xy 105.454939 -10.642828) (xy 105.470923 -10.9401) (xy 105.428606 -11.234776) + (xy 105.329612 -11.515536) (xy 105.252739 -11.659355) (xy 105.000981 -11.740172) (xy 105.117001 -11.856192) (xy 105.037535 -11.935658) + (xy 105.07429 -11.946807) (xy 105.184604 -12.005772) (xy 105.281295 -12.085124) (xy 105.360647 -12.181815) (xy 105.419612 -12.292129) + (xy 105.455922 -12.411827) (xy 105.468182 -12.536309) (xy 105.468182 -14.288909) (xy 105.455922 -14.413391) (xy 105.419612 -14.533089) + (xy 105.360647 -14.643403) (xy 105.281295 -14.740094) (xy 105.184604 -14.819446) (xy 105.07429 -14.878411) (xy 104.954592 -14.914721) + (xy 104.83011 -14.926981) (xy 103.512509 -14.926981) (xy 103.512509 -17.076322) (xy 111.189383 -17.076322) (xy 111.189383 -16.872444) + (xy 111.229157 -16.672485) (xy 111.307178 -16.484127) (xy 111.420446 -16.314609) (xy 111.564609 -16.170446) (xy 111.635001 -16.123412) + (xy 111.635 11.361289) (xy 111.591063 11.405226) (xy 111.477795 11.574744) (xy 111.399774 11.763102) (xy 111.36 11.963061) + (xy 111.36 12.166939) (xy 111.399774 12.366898) (xy 111.477795 12.555256) (xy 111.591063 12.724774) (xy 111.735226 12.868937) + (xy 111.904744 12.982205) (xy 112.093102 13.060226) (xy 112.293061 13.1) (xy 112.496939 13.1) (xy 112.696898 13.060226) + (xy 112.885256 12.982205) (xy 113.054774 12.868937) (xy 113.198937 12.724774) (xy 113.312205 12.555256) (xy 113.390226 12.366898) + (xy 113.43 12.166939) (xy 113.43 11.963061) (xy 113.390226 11.763102) (xy 113.312205 11.574744) (xy 113.198937 11.405226) + (xy 113.155 11.361289) (xy 113.155 -3.401459) (xy 117.68251 -3.401459) (xy 117.68251 -3.103759) (xy 117.740588 -2.811779) + (xy 117.854513 -2.53674) (xy 118.019906 -2.289211) (xy 118.230412 -2.078705) (xy 118.37423 -1.982609) (xy 118.230412 -1.886513) + (xy 118.019906 -1.676007) (xy 117.854513 -1.428478) (xy 117.740588 -1.153439) (xy 117.68251 -0.861459) (xy 117.68251 -0.563759) + (xy 117.740588 -0.271779) (xy 117.854513 0.00326) (xy 118.019906 0.250789) (xy 118.230412 0.461295) (xy 118.37423 0.557391) + (xy 118.230412 0.653487) (xy 118.019906 0.863993) (xy 117.854513 1.111522) (xy 117.740588 1.386561) (xy 117.68251 1.678541) + (xy 117.68251 1.976241) (xy 117.740588 2.268221) (xy 117.854513 2.54326) (xy 118.019906 2.790789) (xy 118.230412 3.001295) + (xy 118.37423 3.097391) (xy 118.230412 3.193487) (xy 118.019906 3.403993) (xy 117.854513 3.651522) (xy 117.740588 3.926561) + (xy 117.68251 4.218541) (xy 117.68251 4.516241) (xy 117.740588 4.808221) (xy 117.854513 5.08326) (xy 118.019906 5.330789) + (xy 118.230412 5.541295) (xy 118.37423 5.637391) (xy 118.230412 5.733487) (xy 118.019906 5.943993) (xy 117.854513 6.191522) + (xy 117.740588 6.466561) (xy 117.68251 6.758541) (xy 117.68251 7.056241) (xy 117.740588 7.348221) (xy 117.854513 7.62326) + (xy 118.019906 7.870789) (xy 118.230412 8.081295) (xy 118.37423 8.177391) (xy 118.230412 8.273487) (xy 118.019906 8.483993) + (xy 117.854513 8.731522) (xy 117.740588 9.006561) (xy 117.68251 9.298541) (xy 117.68251 9.596241) (xy 117.740588 9.888221) + (xy 117.854513 10.16326) (xy 118.019906 10.410789) (xy 118.230412 10.621295) (xy 118.37423 10.717391) (xy 118.230412 10.813487) + (xy 118.019906 11.023993) (xy 117.854513 11.271522) (xy 117.740588 11.546561) (xy 117.68251 11.838541) (xy 117.68251 12.136241) + (xy 117.740588 12.428221) (xy 117.854513 12.70326) (xy 118.019906 12.950789) (xy 118.230412 13.161295) (xy 118.37423 13.257391) + (xy 118.230412 13.353487) (xy 118.019906 13.563993) (xy 117.854513 13.811522) (xy 117.740588 14.086561) (xy 117.68251 14.378541) + (xy 117.68251 14.676241) (xy 117.740588 14.968221) (xy 117.854513 15.24326) (xy 118.019906 15.490789) (xy 118.230412 15.701295) + (xy 118.477941 15.866688) (xy 118.75298 15.980613) (xy 119.04496 16.038691) (xy 119.34266 16.038691) (xy 119.63464 15.980613) + (xy 119.909679 15.866688) (xy 120.157208 15.701295) (xy 120.367714 15.490789) (xy 120.533107 15.24326) (xy 120.647032 14.968221) + (xy 120.70511 14.676241) (xy 120.70511 14.378541) (xy 120.647032 14.086561) (xy 120.533107 13.811522) (xy 120.367714 13.563993) + (xy 120.157208 13.353487) (xy 120.01339 13.257391) (xy 120.157208 13.161295) (xy 120.367714 12.950789) (xy 120.533107 12.70326) + (xy 120.647032 12.428221) (xy 120.70511 12.136241) (xy 120.70511 11.838541) (xy 120.647032 11.546561) (xy 120.533107 11.271522) + (xy 120.367714 11.023993) (xy 120.157208 10.813487) (xy 120.01339 10.717391) (xy 120.157208 10.621295) (xy 120.367714 10.410789) + (xy 120.50362 10.207391) (xy 121.654386 10.207391) (xy 133.46373 22.016736) (xy 133.137257 21.951796) (xy 132.716699 21.951796) + (xy 132.304222 22.033843) (xy 131.915676 22.194784) (xy 131.565995 22.428433) (xy 131.268615 22.725813) (xy 131.034966 23.075494) + (xy 130.874025 23.46404) (xy 130.791978 23.876517) (xy 130.791978 24.297075) (xy 130.874025 24.709552) (xy 131.034966 25.098098) + (xy 131.268615 25.447779) (xy 131.565995 25.745159) (xy 131.915676 25.978808) (xy 132.304222 26.139749) (xy 132.716699 26.221796) + (xy 133.137257 26.221796) (xy 133.549734 26.139749) (xy 133.93828 25.978808) (xy 134.287961 25.745159) (xy 134.585341 25.447779) + (xy 134.81899 25.098098) (xy 134.979931 24.709552) (xy 134.98488 24.684674) (xy 137.241485 24.684674) (xy 137.365967 24.672414) + (xy 137.485665 24.636104) (xy 137.595979 24.577139) (xy 137.69267 24.497787) (xy 137.772022 24.401096) (xy 137.830987 24.290782) + (xy 137.867297 24.171084) (xy 137.879557 24.046602) (xy 137.879557 21.546602) (xy 137.867297 21.42212) (xy 137.830987 21.302422) + (xy 137.772022 21.192108) (xy 137.69267 21.095417) (xy 137.595979 21.016065) (xy 137.485665 20.9571) (xy 137.365967 20.92079) + (xy 137.241485 20.90853) (xy 134.691485 20.90853) (xy 134.567003 20.92079) (xy 134.528936 20.932338) (xy 126.823829 13.227231) + (xy 137.119516 13.227231) (xy 137.119516 15.727231) (xy 137.131776 15.851713) (xy 137.168086 15.971411) (xy 137.227051 16.081725) + (xy 137.306403 16.178416) (xy 137.403094 16.257768) (xy 137.513408 16.316733) (xy 137.633106 16.353043) (xy 137.757588 16.365303) + (xy 138.798625 16.365303) (xy 143.082518 20.649197) (xy 143.106316 20.678195) (xy 143.135314 20.701993) (xy 143.22204 20.773168) + (xy 143.347094 20.840011) (xy 143.35407 20.84374) (xy 143.497331 20.887197) (xy 143.590698 20.896393) (xy 143.760263 21.150166) + (xy 143.981383 21.371286) (xy 144.241392 21.545018) (xy 144.530298 21.664687) (xy 144.837 21.725694) (xy 145.14971 21.725694) + (xy 145.456412 21.664687) (xy 145.745318 21.545018) (xy 146.005327 21.371286) (xy 146.226447 21.150166) (xy 146.400179 20.890157) + (xy 146.417896 20.847385) (xy 146.429912 20.84374) (xy 146.561941 20.773168) (xy 146.677666 20.678195) (xy 146.70017 20.650774) + (xy 146.807424 20.660394) (xy 146.931794 20.647048) (xy 147.05117 20.609694) (xy 147.879625 20.258036) (xy 147.989421 20.198112) + (xy 148.085416 20.117919) (xy 148.163922 20.020539) (xy 148.221921 19.909714) (xy 148.257185 19.789704) (xy 148.268359 19.66512) + (xy 148.255013 19.54075) (xy 148.217659 19.421374) (xy 147.748782 18.316768) (xy 147.688858 18.206972) (xy 147.608665 18.110977) + (xy 147.511285 18.032471) (xy 147.40046 17.974472) (xy 147.28045 17.939208) (xy 147.155866 17.928034) (xy 147.031496 17.94138) + (xy 146.91212 17.978734) (xy 146.083665 18.330392) (xy 145.973869 18.390316) (xy 145.877874 18.470509) (xy 145.799368 18.567889) + (xy 145.741369 18.678714) (xy 145.728004 18.724198) (xy 145.456412 18.611701) (xy 145.14971 18.550694) (xy 144.837 18.550694) + (xy 144.530298 18.611701) (xy 144.241392 18.73137) (xy 143.981383 18.905102) (xy 143.760263 19.126222) (xy 143.739789 19.156864) + (xy 142.216821 17.633896) (xy 148.732597 17.633896) (xy 148.745943 17.758266) (xy 148.783297 17.877642) (xy 149.252174 18.982248) + (xy 149.312098 19.092044) (xy 149.392291 19.188039) (xy 149.489671 19.266545) (xy 149.600496 19.324544) (xy 149.720506 19.359808) + (xy 149.84509 19.370982) (xy 149.96946 19.357636) (xy 150.088836 19.320282) (xy 150.917291 18.968624) (xy 151.027087 18.9087) + (xy 151.123082 18.828507) (xy 151.132726 18.816544) (xy 151.186781 18.860122) (xy 151.297606 18.918121) (xy 151.417616 18.953385) + (xy 151.5422 18.964559) (xy 151.66657 18.951213) (xy 151.785947 18.913859) (xy 153.422605 18.219139) (xy 153.5324 18.159215) + (xy 153.628395 18.079022) (xy 153.706901 17.981642) (xy 153.7649 17.870817) (xy 153.800164 17.750807) (xy 153.811338 17.626223) + (xy 153.797992 17.501853) (xy 153.760638 17.382476) (xy 153.065918 15.745818) (xy 153.005994 15.636023) (xy 152.925801 15.540028) + (xy 152.828421 15.461522) (xy 152.717596 15.403523) (xy 152.597586 15.368259) (xy 152.473002 15.357085) (xy 152.348632 15.370431) + (xy 152.229255 15.407785) (xy 150.592597 16.102505) (xy 150.482802 16.162429) (xy 150.386807 16.242622) (xy 150.308301 16.340002) + (xy 150.250302 16.450827) (xy 150.215038 16.570837) (xy 150.208835 16.639995) (xy 150.193532 16.638622) (xy 150.069162 16.651968) + (xy 149.949786 16.689322) (xy 149.121331 17.04098) (xy 149.011535 17.100904) (xy 148.91554 17.181097) (xy 148.837034 17.278477) + (xy 148.779035 17.389302) (xy 148.743771 17.509312) (xy 148.732597 17.633896) (xy 142.216821 17.633896) (xy 142.086832 17.503908) + (xy 142.304078 17.460695) (xy 142.574495 17.348685) (xy 142.817863 17.186071) (xy 143.024831 16.979103) (xy 143.187445 16.735735) + (xy 143.299455 16.465318) (xy 143.356557 16.178245) (xy 143.356557 15.885549) (xy 143.299455 15.598476) (xy 143.187445 15.328059) + (xy 143.034707 15.099471) (xy 143.058543 15.089598) (xy 143.408224 14.855949) (xy 143.705604 14.558569) (xy 143.917922 14.240812) + (xy 143.917922 14.305907) (xy 144.018949 14.813805) (xy 144.217121 15.292234) (xy 144.504822 15.722809) (xy 144.870996 16.088983) + (xy 145.301571 16.376684) (xy 145.78 16.574856) (xy 146.287898 16.675883) (xy 146.805746 16.675883) (xy 147.313644 16.574856) + (xy 147.792073 16.376684) (xy 148.222648 16.088983) (xy 148.588822 15.722809) (xy 148.876523 15.292234) (xy 149.074695 14.813805) + (xy 149.175722 14.305907) (xy 149.175722 13.788059) (xy 149.074695 13.280161) (xy 148.876523 12.801732) (xy 148.588822 12.371157) + (xy 148.222648 12.004983) (xy 148.089058 11.915721) (xy 149.737087 11.915721) (xy 149.737087 12.208417) (xy 149.794189 12.49549) + (xy 149.906199 12.765907) (xy 150.068813 13.009275) (xy 150.275781 13.216243) (xy 150.519149 13.378857) (xy 150.789566 13.490867) + (xy 151.076639 13.547969) (xy 151.369335 13.547969) (xy 151.656408 13.490867) (xy 151.926825 13.378857) (xy 152.170193 13.216243) + (xy 152.377161 13.009275) (xy 152.539775 12.765907) (xy 152.651785 12.49549) (xy 152.708887 12.208417) (xy 152.708887 11.915721) + (xy 152.651785 11.628648) (xy 152.539775 11.358231) (xy 152.377161 11.114863) (xy 152.170193 10.907895) (xy 151.926825 10.745281) + (xy 151.656408 10.633271) (xy 151.369335 10.576169) (xy 151.076639 10.576169) (xy 150.789566 10.633271) (xy 150.519149 10.745281) + (xy 150.275781 10.907895) (xy 150.068813 11.114863) (xy 149.906199 11.358231) (xy 149.794189 11.628648) (xy 149.737087 11.915721) + (xy 148.089058 11.915721) (xy 147.792073 11.717282) (xy 147.313644 11.51911) (xy 146.805746 11.418083) (xy 146.287898 11.418083) + (xy 145.78 11.51911) (xy 145.301571 11.717282) (xy 144.870996 12.004983) (xy 144.504822 12.371157) (xy 144.217121 12.801732) + (xy 144.168619 12.918826) (xy 144.100194 12.57483) (xy 143.939253 12.186284) (xy 143.705604 11.836603) (xy 143.408224 11.539223) + (xy 143.058543 11.305574) (xy 142.669997 11.144633) (xy 142.25752 11.062586) (xy 141.836962 11.062586) (xy 141.424485 11.144633) + (xy 141.035939 11.305574) (xy 140.686258 11.539223) (xy 140.388878 11.836603) (xy 140.155229 12.186284) (xy 139.994288 12.57483) + (xy 139.991438 12.589159) (xy 137.757588 12.589159) (xy 137.633106 12.601419) (xy 137.513408 12.637729) (xy 137.403094 12.696694) + (xy 137.306403 12.776046) (xy 137.227051 12.872737) (xy 137.168086 12.983051) (xy 137.131776 13.102749) (xy 137.119516 13.227231) + (xy 126.823829 13.227231) (xy 122.532991 8.936394) (xy 122.509188 8.90739) (xy 122.393463 8.812417) (xy 122.261434 8.741845) + (xy 122.118173 8.698388) (xy 122.00652 8.687391) (xy 122.006509 8.687391) (xy 121.969187 8.683715) (xy 121.931865 8.687391) + (xy 120.50362 8.687391) (xy 120.367714 8.483993) (xy 120.157208 8.273487) (xy 120.01339 8.177391) (xy 120.157208 8.081295) + (xy 120.367714 7.870789) (xy 120.533107 7.62326) (xy 120.647032 7.348221) (xy 120.70511 7.056241) (xy 120.70511 6.791092) + (xy 145.467913 6.791092) (xy 145.241627 7.017378) (xy 145.007978 7.367059) (xy 144.847037 7.755605) (xy 144.76499 8.168082) + (xy 144.76499 8.58864) (xy 144.847037 9.001117) (xy 145.007978 9.389663) (xy 145.241627 9.739344) (xy 145.539007 10.036724) + (xy 145.888688 10.270373) (xy 146.277234 10.431314) (xy 146.689711 10.513361) (xy 147.110269 10.513361) (xy 147.522746 10.431314) + (xy 147.911292 10.270373) (xy 148.260973 10.036724) (xy 148.558353 9.739344) (xy 148.792002 9.389663) (xy 148.952943 9.001117) + (xy 148.957892 8.976239) (xy 150.752768 8.976239) (xy 156.60339 14.826862) (xy 156.603389 22.689688) (xy 156.088389 22.689688) + (xy 155.963907 22.701948) (xy 155.844209 22.738258) (xy 155.733895 22.797223) (xy 155.637204 22.876575) (xy 155.557852 22.973266) + (xy 155.498887 23.08358) (xy 155.462577 23.203278) (xy 155.450317 23.32776) (xy 155.450317 24.052871) (xy 155.335184 23.975942) + (xy 154.946638 23.815001) (xy 154.534161 23.732954) (xy 154.113603 23.732954) (xy 153.701126 23.815001) (xy 153.31258 23.975942) + (xy 152.962899 24.209591) (xy 152.665519 24.506971) (xy 152.43187 24.856652) (xy 152.270929 25.245198) (xy 152.188882 25.657675) + (xy 152.188882 26.078233) (xy 152.270929 26.49071) (xy 152.43187 26.879256) (xy 152.665519 27.228937) (xy 152.962899 27.526317) + (xy 153.31258 27.759966) (xy 153.701126 27.920907) (xy 154.113603 28.002954) (xy 154.534161 28.002954) (xy 154.946638 27.920907) + (xy 155.335184 27.759966) (xy 155.684865 27.526317) (xy 155.982245 27.228937) (xy 156.215894 26.879256) (xy 156.376835 26.49071) + (xy 156.381784 26.465832) (xy 158.638389 26.465832) (xy 158.762871 26.453572) (xy 158.882569 26.417262) (xy 158.992883 26.358297) + (xy 159.089574 26.278945) (xy 159.168926 26.182254) (xy 159.227891 26.07194) (xy 159.264201 25.952242) (xy 159.276461 25.82776) + (xy 159.276461 23.32776) (xy 159.264201 23.203278) (xy 159.227891 23.08358) (xy 159.168926 22.973266) (xy 159.089574 22.876575) + (xy 158.992883 22.797223) (xy 158.882569 22.738258) (xy 158.762871 22.701948) (xy 158.638389 22.689688) (xy 158.123389 22.689688) + (xy 158.123389 17.769903) (xy 159.688613 17.769903) (xy 159.688613 20.269903) (xy 159.700873 20.394385) (xy 159.737183 20.514083) + (xy 159.796148 20.624397) (xy 159.8755 20.721088) (xy 159.972191 20.80044) (xy 160.082505 20.859405) (xy 160.202203 20.895715) + (xy 160.326685 20.907975) (xy 161.367723 20.907975) (xy 165.651615 25.191868) (xy 165.675413 25.220866) (xy 165.704411 25.244664) + (xy 165.791137 25.315839) (xy 165.923167 25.386411) (xy 166.066428 25.429868) (xy 166.159795 25.439064) (xy 166.32936 25.692837) + (xy 166.55048 25.913957) (xy 166.810489 26.087689) (xy 167.099395 26.207358) (xy 167.406097 26.268365) (xy 167.718807 26.268365) + (xy 168.025509 26.207358) (xy 168.314415 26.087689) (xy 168.574424 25.913957) (xy 168.795544 25.692837) (xy 168.969276 25.432828) + (xy 168.986993 25.390056) (xy 168.999009 25.386411) (xy 169.131038 25.315839) (xy 169.246763 25.220866) (xy 169.269267 25.193445) + (xy 169.376521 25.203065) (xy 169.500891 25.189719) (xy 169.620267 25.152365) (xy 170.448722 24.800707) (xy 170.558518 24.740783) + (xy 170.654513 24.66059) (xy 170.733019 24.56321) (xy 170.791018 24.452385) (xy 170.826282 24.332375) (xy 170.837456 24.207791) + (xy 170.82411 24.083421) (xy 170.786756 23.964045) (xy 170.317879 22.859439) (xy 170.257955 22.749643) (xy 170.177762 22.653648) + (xy 170.080382 22.575142) (xy 169.969557 22.517143) (xy 169.849547 22.481879) (xy 169.724963 22.470705) (xy 169.600593 22.484051) + (xy 169.481217 22.521405) (xy 168.652762 22.873063) (xy 168.542966 22.932987) (xy 168.446971 23.01318) (xy 168.368465 23.11056) + (xy 168.310466 23.221385) (xy 168.297101 23.266869) (xy 168.025509 23.154372) (xy 167.718807 23.093365) (xy 167.406097 23.093365) + (xy 167.099395 23.154372) (xy 166.810489 23.274041) (xy 166.55048 23.447773) (xy 166.32936 23.668893) (xy 166.308886 23.699535) + (xy 164.785918 22.176567) (xy 171.301694 22.176567) (xy 171.31504 22.300937) (xy 171.352394 22.420313) (xy 171.821271 23.524919) + (xy 171.881195 23.634715) (xy 171.961388 23.73071) (xy 172.058768 23.809216) (xy 172.169593 23.867215) (xy 172.289603 23.902479) + (xy 172.414187 23.913653) (xy 172.538557 23.900307) (xy 172.657933 23.862953) (xy 173.486388 23.511295) (xy 173.596184 23.451371) + (xy 173.692179 23.371178) (xy 173.701823 23.359215) (xy 173.755878 23.402793) (xy 173.866703 23.460792) (xy 173.986713 23.496056) + (xy 174.111297 23.50723) (xy 174.235667 23.493884) (xy 174.355044 23.45653) (xy 175.991702 22.76181) (xy 176.101497 22.701886) + (xy 176.197492 22.621693) (xy 176.275998 22.524313) (xy 176.333997 22.413488) (xy 176.369261 22.293478) (xy 176.380435 22.168894) + (xy 176.367089 22.044524) (xy 176.329735 21.925147) (xy 175.635015 20.288489) (xy 175.575091 20.178694) (xy 175.494898 20.082699) + (xy 175.397518 20.004193) (xy 175.286693 19.946194) (xy 175.166683 19.91093) (xy 175.042099 19.899756) (xy 174.917729 19.913102) + (xy 174.798352 19.950456) (xy 173.161694 20.645176) (xy 173.051899 20.7051) (xy 172.955904 20.785293) (xy 172.877398 20.882673) + (xy 172.819399 20.993498) (xy 172.784135 21.113508) (xy 172.777932 21.182666) (xy 172.762629 21.181293) (xy 172.638259 21.194639) + (xy 172.518883 21.231993) (xy 171.690428 21.583651) (xy 171.580632 21.643575) (xy 171.484637 21.723768) (xy 171.406131 21.821148) + (xy 171.348132 21.931973) (xy 171.312868 22.051983) (xy 171.301694 22.176567) (xy 164.785918 22.176567) (xy 164.65593 22.046579) + (xy 164.873175 22.003367) (xy 165.143592 21.891357) (xy 165.38696 21.728743) (xy 165.593928 21.521775) (xy 165.756542 21.278407) + (xy 165.868552 21.00799) (xy 165.925654 20.720917) (xy 165.925654 20.428221) (xy 165.868552 20.141148) (xy 165.756542 19.870731) + (xy 165.603804 19.642143) (xy 165.62764 19.63227) (xy 165.977321 19.398621) (xy 166.274701 19.101241) (xy 166.487019 18.783484) + (xy 166.487019 18.848579) (xy 166.588046 19.356477) (xy 166.786218 19.834906) (xy 167.073919 20.265481) (xy 167.440093 20.631655) + (xy 167.870668 20.919356) (xy 168.349097 21.117528) (xy 168.856995 21.218555) (xy 169.374843 21.218555) (xy 169.882741 21.117528) + (xy 170.36117 20.919356) (xy 170.791745 20.631655) (xy 171.157919 20.265481) (xy 171.44562 19.834906) (xy 171.643792 19.356477) + (xy 171.744819 18.848579) (xy 171.744819 18.330731) (xy 171.643792 17.822833) (xy 171.44562 17.344404) (xy 171.157919 16.913829) + (xy 170.791745 16.547655) (xy 170.658155 16.458393) (xy 172.306184 16.458393) (xy 172.306184 16.751089) (xy 172.363286 17.038162) + (xy 172.475296 17.308579) (xy 172.63791 17.551947) (xy 172.844878 17.758915) (xy 173.088246 17.921529) (xy 173.358663 18.033539) + (xy 173.645736 18.090641) (xy 173.938432 18.090641) (xy 174.225505 18.033539) (xy 174.495922 17.921529) (xy 174.73929 17.758915) + (xy 174.946258 17.551947) (xy 175.108872 17.308579) (xy 175.220882 17.038162) (xy 175.277984 16.751089) (xy 175.277984 16.458393) + (xy 175.220882 16.17132) (xy 175.108872 15.900903) (xy 174.946258 15.657535) (xy 174.73929 15.450567) (xy 174.495922 15.287953) + (xy 174.225505 15.175943) (xy 173.938432 15.118841) (xy 173.645736 15.118841) (xy 173.358663 15.175943) (xy 173.088246 15.287953) + (xy 172.844878 15.450567) (xy 172.63791 15.657535) (xy 172.475296 15.900903) (xy 172.363286 16.17132) (xy 172.306184 16.458393) + (xy 170.658155 16.458393) (xy 170.36117 16.259954) (xy 169.882741 16.061782) (xy 169.374843 15.960755) (xy 168.856995 15.960755) + (xy 168.349097 16.061782) (xy 167.870668 16.259954) (xy 167.440093 16.547655) (xy 167.073919 16.913829) (xy 166.786218 17.344404) + (xy 166.737716 17.461498) (xy 166.669291 17.117502) (xy 166.50835 16.728956) (xy 166.274701 16.379275) (xy 165.977321 16.081895) + (xy 165.62764 15.848246) (xy 165.239094 15.687305) (xy 164.826617 15.605258) (xy 164.406059 15.605258) (xy 163.993582 15.687305) + (xy 163.605036 15.848246) (xy 163.255355 16.081895) (xy 162.957975 16.379275) (xy 162.724326 16.728956) (xy 162.563385 17.117502) + (xy 162.560535 17.131831) (xy 160.326685 17.131831) (xy 160.202203 17.144091) (xy 160.082505 17.180401) (xy 159.972191 17.239366) + (xy 159.8755 17.318718) (xy 159.796148 17.415409) (xy 159.737183 17.525723) (xy 159.700873 17.645421) (xy 159.688613 17.769903) + (xy 158.123389 17.769903) (xy 158.123389 14.549384) (xy 158.127065 14.512059) (xy 158.123389 14.474734) (xy 158.123389 14.474726) + (xy 158.112392 14.363073) (xy 158.068935 14.219812) (xy 157.998363 14.087783) (xy 157.90339 13.972058) (xy 157.874392 13.94826) + (xy 151.852569 7.926438) (xy 151.852569 5.838167) (xy 151.840309 5.713685) (xy 151.803999 5.593987) (xy 151.745034 5.483673) + (xy 151.665682 5.386982) (xy 151.568991 5.30763) (xy 151.458677 5.248665) (xy 151.338979 5.212355) (xy 151.214497 5.200095) + (xy 150.699497 5.200095) (xy 150.699497 0.280311) (xy 152.264722 0.280311) (xy 152.264722 2.780311) (xy 152.276982 2.904793) + (xy 152.313292 3.024491) (xy 152.372257 3.134805) (xy 152.451609 3.231496) (xy 152.5483 3.310848) (xy 152.658614 3.369813) + (xy 152.778312 3.406123) (xy 152.902794 3.418383) (xy 153.943831 3.418383) (xy 158.227723 7.702276) (xy 158.251521 7.731274) + (xy 158.367246 7.826247) (xy 158.499275 7.896819) (xy 158.642536 7.940276) (xy 158.735903 7.949472) (xy 158.905468 8.203245) + (xy 159.126588 8.424365) (xy 159.386597 8.598097) (xy 159.675503 8.717766) (xy 159.982205 8.778773) (xy 160.294915 8.778773) + (xy 160.601617 8.717766) (xy 160.890523 8.598097) (xy 161.150532 8.424365) (xy 161.371652 8.203245) (xy 161.545384 7.943236) + (xy 161.563101 7.900464) (xy 161.575117 7.896819) (xy 161.707146 7.826247) (xy 161.822871 7.731274) (xy 161.845375 7.703853) + (xy 161.952629 7.713473) (xy 162.076999 7.700127) (xy 162.196375 7.662773) (xy 163.02483 7.311115) (xy 163.134626 7.251191) + (xy 163.230621 7.170998) (xy 163.309127 7.073618) (xy 163.367126 6.962793) (xy 163.40239 6.842783) (xy 163.413564 6.718199) + (xy 163.400218 6.593829) (xy 163.362864 6.474453) (xy 162.893987 5.369847) (xy 162.834063 5.260051) (xy 162.75387 5.164056) + (xy 162.65649 5.08555) (xy 162.545665 5.027551) (xy 162.425655 4.992287) (xy 162.301071 4.981113) (xy 162.176701 4.994459) + (xy 162.057325 5.031813) (xy 161.22887 5.383471) (xy 161.119074 5.443395) (xy 161.023079 5.523588) (xy 160.944573 5.620968) + (xy 160.886574 5.731793) (xy 160.873209 5.777277) (xy 160.601617 5.66478) (xy 160.294915 5.603773) (xy 159.982205 5.603773) + (xy 159.675503 5.66478) (xy 159.386597 5.784449) (xy 159.126588 5.958181) (xy 158.905468 6.179301) (xy 158.884994 6.209943) + (xy 157.362026 4.686975) (xy 163.877802 4.686975) (xy 163.891148 4.811345) (xy 163.928502 4.930721) (xy 164.397379 6.035327) + (xy 164.457303 6.145123) (xy 164.537496 6.241118) (xy 164.634876 6.319624) (xy 164.745701 6.377623) (xy 164.865711 6.412887) + (xy 164.990295 6.424061) (xy 165.114665 6.410715) (xy 165.234041 6.373361) (xy 166.062496 6.021703) (xy 166.172292 5.961779) + (xy 166.268287 5.881586) (xy 166.277931 5.869623) (xy 166.331986 5.913201) (xy 166.442811 5.9712) (xy 166.562821 6.006464) + (xy 166.687405 6.017638) (xy 166.811775 6.004292) (xy 166.931152 5.966938) (xy 168.56781 5.272218) (xy 168.677605 5.212294) + (xy 168.7736 5.132101) (xy 168.852106 5.034721) (xy 168.910105 4.923896) (xy 168.945369 4.803886) (xy 168.956543 4.679302) + (xy 168.943197 4.554932) (xy 168.905843 4.435555) (xy 168.211123 2.798897) (xy 168.151199 2.689102) (xy 168.071006 2.593107) + (xy 167.973626 2.514601) (xy 167.862801 2.456602) (xy 167.742791 2.421338) (xy 167.618207 2.410164) (xy 167.493837 2.42351) + (xy 167.37446 2.460864) (xy 165.737802 3.155584) (xy 165.628007 3.215508) (xy 165.532012 3.295701) (xy 165.453506 3.393081) + (xy 165.395507 3.503906) (xy 165.360243 3.623916) (xy 165.35404 3.693074) (xy 165.338737 3.691701) (xy 165.214367 3.705047) + (xy 165.094991 3.742401) (xy 164.266536 4.094059) (xy 164.15674 4.153983) (xy 164.060745 4.234176) (xy 163.982239 4.331556) + (xy 163.92424 4.442381) (xy 163.888976 4.562391) (xy 163.877802 4.686975) (xy 157.362026 4.686975) (xy 157.232038 4.556988) + (xy 157.449284 4.513775) (xy 157.719701 4.401765) (xy 157.963069 4.239151) (xy 158.170037 4.032183) (xy 158.332651 3.788815) + (xy 158.444661 3.518398) (xy 158.501763 3.231325) (xy 158.501763 2.938629) (xy 158.444661 2.651556) (xy 158.332651 2.381139) + (xy 158.179913 2.152551) (xy 158.203749 2.142678) (xy 158.55343 1.909029) (xy 158.85081 1.611649) (xy 159.063128 1.293892) + (xy 159.063128 1.358987) (xy 159.164155 1.866885) (xy 159.362327 2.345314) (xy 159.650028 2.775889) (xy 160.016202 3.142063) + (xy 160.446777 3.429764) (xy 160.925206 3.627936) (xy 161.433104 3.728963) (xy 161.950952 3.728963) (xy 162.45885 3.627936) + (xy 162.937279 3.429764) (xy 163.367854 3.142063) (xy 163.734028 2.775889) (xy 164.021729 2.345314) (xy 164.219901 1.866885) + (xy 164.320928 1.358987) (xy 164.320928 0.841139) (xy 164.219901 0.333241) (xy 164.021729 -0.145188) (xy 163.734028 -0.575763) + (xy 163.367854 -0.941937) (xy 163.234264 -1.031199) (xy 164.882293 -1.031199) (xy 164.882293 -0.738503) (xy 164.939395 -0.45143) + (xy 165.051405 -0.181013) (xy 165.214019 0.062355) (xy 165.420987 0.269323) (xy 165.664355 0.431937) (xy 165.934772 0.543947) + (xy 166.221845 0.601049) (xy 166.514541 0.601049) (xy 166.801614 0.543947) (xy 167.072031 0.431937) (xy 167.315399 0.269323) + (xy 167.522367 0.062355) (xy 167.684981 -0.181013) (xy 167.796991 -0.45143) (xy 167.854093 -0.738503) (xy 167.854093 -1.031199) + (xy 167.796991 -1.318272) (xy 167.684981 -1.588689) (xy 167.522367 -1.832057) (xy 167.315399 -2.039025) (xy 167.072031 -2.201639) + (xy 166.801614 -2.313649) (xy 166.514541 -2.370751) (xy 166.221845 -2.370751) (xy 165.934772 -2.313649) (xy 165.664355 -2.201639) + (xy 165.420987 -2.039025) (xy 165.214019 -1.832057) (xy 165.051405 -1.588689) (xy 164.939395 -1.318272) (xy 164.882293 -1.031199) + (xy 163.234264 -1.031199) (xy 162.937279 -1.229638) (xy 162.45885 -1.42781) (xy 161.950952 -1.528837) (xy 161.433104 -1.528837) + (xy 160.925206 -1.42781) (xy 160.446777 -1.229638) (xy 160.016202 -0.941937) (xy 159.650028 -0.575763) (xy 159.362327 -0.145188) + (xy 159.313825 -0.028094) (xy 159.2454 -0.37209) (xy 159.084459 -0.760636) (xy 158.85081 -1.110317) (xy 158.55343 -1.407697) + (xy 158.203749 -1.641346) (xy 157.815203 -1.802287) (xy 157.402726 -1.884334) (xy 156.982168 -1.884334) (xy 156.569691 -1.802287) + (xy 156.181145 -1.641346) (xy 155.831464 -1.407697) (xy 155.534084 -1.110317) (xy 155.300435 -0.760636) (xy 155.139494 -0.37209) + (xy 155.136644 -0.357761) (xy 152.902794 -0.357761) (xy 152.778312 -0.345501) (xy 152.658614 -0.309191) (xy 152.5483 -0.250226) + (xy 152.451609 -0.170874) (xy 152.372257 -0.074183) (xy 152.313292 0.036131) (xy 152.276982 0.155829) (xy 152.264722 0.280311) + (xy 150.699497 0.280311) (xy 150.699497 -2.940212) (xy 150.703173 -2.977535) (xy 150.699497 -3.014858) (xy 150.699497 -3.014867) + (xy 150.6885 -3.12652) (xy 150.645043 -3.269781) (xy 150.574471 -3.40181) (xy 150.479498 -3.517535) (xy 150.4505 -3.541333) + (xy 144.428678 -9.563154) (xy 144.428678 -11.651425) (xy 144.416418 -11.775907) (xy 144.380108 -11.895605) (xy 144.321143 -12.005919) + (xy 144.241791 -12.10261) (xy 144.1451 -12.181962) (xy 144.034786 -12.240927) (xy 143.915088 -12.277237) (xy 143.790606 -12.289497) + (xy 143.275606 -12.289497) (xy 143.275606 -17.209281) (xy 144.84083 -17.209281) (xy 144.84083 -14.709281) (xy 144.85309 -14.584799) + (xy 144.8894 -14.465101) (xy 144.948365 -14.354787) (xy 145.027717 -14.258096) (xy 145.124408 -14.178744) (xy 145.234722 -14.119779) + (xy 145.35442 -14.083469) (xy 145.478902 -14.071209) (xy 146.51994 -14.071209) (xy 150.803832 -9.787316) (xy 150.82763 -9.758318) + (xy 150.856628 -9.73452) (xy 150.943354 -9.663345) (xy 151.050977 -9.605819) (xy 151.075384 -9.592773) (xy 151.218645 -9.549316) + (xy 151.312012 -9.54012) (xy 151.481577 -9.286347) (xy 151.702697 -9.065227) (xy 151.962706 -8.891495) (xy 152.251612 -8.771826) + (xy 152.558314 -8.710819) (xy 152.871024 -8.710819) (xy 153.177726 -8.771826) (xy 153.466632 -8.891495) (xy 153.726641 -9.065227) + (xy 153.947761 -9.286347) (xy 154.121493 -9.546356) (xy 154.13921 -9.589128) (xy 154.151226 -9.592773) (xy 154.283255 -9.663345) + (xy 154.39898 -9.758318) (xy 154.421484 -9.785739) (xy 154.528738 -9.776119) (xy 154.653108 -9.789465) (xy 154.772484 -9.826819) + (xy 155.600939 -10.178477) (xy 155.710735 -10.238401) (xy 155.80673 -10.318594) (xy 155.885236 -10.415974) (xy 155.943235 -10.526799) + (xy 155.978499 -10.646809) (xy 155.989673 -10.771393) (xy 155.976327 -10.895763) (xy 155.938973 -11.015139) (xy 155.470096 -12.119745) + (xy 155.410172 -12.229541) (xy 155.329979 -12.325536) (xy 155.232599 -12.404042) (xy 155.121774 -12.462041) (xy 155.001764 -12.497305) + (xy 154.87718 -12.508479) (xy 154.75281 -12.495133) (xy 154.633434 -12.457779) (xy 153.804979 -12.106121) (xy 153.695183 -12.046197) + (xy 153.599188 -11.966004) (xy 153.520682 -11.868624) (xy 153.462683 -11.757799) (xy 153.449318 -11.712315) (xy 153.177726 -11.824812) + (xy 152.871024 -11.885819) (xy 152.558314 -11.885819) (xy 152.251612 -11.824812) (xy 151.962706 -11.705143) (xy 151.702697 -11.531411) + (xy 151.481577 -11.310291) (xy 151.461103 -11.279649) (xy 149.938135 -12.802617) (xy 156.453911 -12.802617) (xy 156.467257 -12.678247) + (xy 156.504611 -12.558871) (xy 156.973488 -11.454265) (xy 157.033412 -11.344469) (xy 157.113605 -11.248474) (xy 157.210985 -11.169968) + (xy 157.32181 -11.111969) (xy 157.44182 -11.076705) (xy 157.566404 -11.065531) (xy 157.690774 -11.078877) (xy 157.81015 -11.116231) + (xy 158.638605 -11.467889) (xy 158.748401 -11.527813) (xy 158.844396 -11.608006) (xy 158.85404 -11.619969) (xy 158.908095 -11.576391) + (xy 159.01892 -11.518392) (xy 159.13893 -11.483128) (xy 159.263514 -11.471954) (xy 159.387884 -11.4853) (xy 159.507261 -11.522654) + (xy 161.143919 -12.217374) (xy 161.253714 -12.277298) (xy 161.349709 -12.357491) (xy 161.428215 -12.454871) (xy 161.486214 -12.565696) + (xy 161.521478 -12.685706) (xy 161.532652 -12.81029) (xy 161.519306 -12.93466) (xy 161.481952 -13.054037) (xy 160.787232 -14.690695) + (xy 160.727308 -14.80049) (xy 160.647115 -14.896485) (xy 160.549735 -14.974991) (xy 160.43891 -15.03299) (xy 160.3189 -15.068254) + (xy 160.194316 -15.079428) (xy 160.069946 -15.066082) (xy 159.950569 -15.028728) (xy 158.313911 -14.334008) (xy 158.204116 -14.274084) + (xy 158.108121 -14.193891) (xy 158.029615 -14.096511) (xy 157.971616 -13.985686) (xy 157.936352 -13.865676) (xy 157.930149 -13.796518) + (xy 157.914846 -13.797891) (xy 157.790476 -13.784545) (xy 157.6711 -13.747191) (xy 156.842645 -13.395533) (xy 156.732849 -13.335609) + (xy 156.636854 -13.255416) (xy 156.558348 -13.158036) (xy 156.500349 -13.047211) (xy 156.465085 -12.927201) (xy 156.453911 -12.802617) + (xy 149.938135 -12.802617) (xy 149.808147 -12.932605) (xy 150.025392 -12.975817) (xy 150.295809 -13.087827) (xy 150.539177 -13.250441) + (xy 150.746145 -13.457409) (xy 150.908759 -13.700777) (xy 151.020769 -13.971194) (xy 151.077871 -14.258267) (xy 151.077871 -14.550963) + (xy 151.020769 -14.838036) (xy 150.908759 -15.108453) (xy 150.756021 -15.337041) (xy 150.779857 -15.346914) (xy 151.129538 -15.580563) + (xy 151.426918 -15.877943) (xy 151.639236 -16.1957) (xy 151.639236 -16.130605) (xy 151.740263 -15.622707) (xy 151.938435 -15.144278) + (xy 152.226136 -14.713703) (xy 152.59231 -14.347529) (xy 153.022885 -14.059828) (xy 153.501314 -13.861656) (xy 154.009212 -13.760629) + (xy 154.52706 -13.760629) (xy 155.034958 -13.861656) (xy 155.513387 -14.059828) (xy 155.943962 -14.347529) (xy 156.310136 -14.713703) + (xy 156.597837 -15.144278) (xy 156.796009 -15.622707) (xy 156.897036 -16.130605) (xy 156.897036 -16.648453) (xy 156.796009 -17.156351) + (xy 156.597837 -17.63478) (xy 156.310136 -18.065355) (xy 155.943962 -18.431529) (xy 155.810372 -18.520791) (xy 157.458401 -18.520791) + (xy 157.458401 -18.228095) (xy 157.515503 -17.941022) (xy 157.627513 -17.670605) (xy 157.790127 -17.427237) (xy 157.997095 -17.220269) + (xy 158.240463 -17.057655) (xy 158.51088 -16.945645) (xy 158.797953 -16.888543) (xy 159.090649 -16.888543) (xy 159.377722 -16.945645) + (xy 159.648139 -17.057655) (xy 159.891507 -17.220269) (xy 160.098475 -17.427237) (xy 160.261089 -17.670605) (xy 160.373099 -17.941022) + (xy 160.430201 -18.228095) (xy 160.430201 -18.520791) (xy 160.373099 -18.807864) (xy 160.261089 -19.078281) (xy 160.098475 -19.321649) + (xy 159.891507 -19.528617) (xy 159.648139 -19.691231) (xy 159.377722 -19.803241) (xy 159.090649 -19.860343) (xy 158.797953 -19.860343) + (xy 158.51088 -19.803241) (xy 158.240463 -19.691231) (xy 157.997095 -19.528617) (xy 157.790127 -19.321649) (xy 157.627513 -19.078281) + (xy 157.515503 -18.807864) (xy 157.458401 -18.520791) (xy 155.810372 -18.520791) (xy 155.513387 -18.71923) (xy 155.034958 -18.917402) + (xy 154.52706 -19.018429) (xy 154.009212 -19.018429) (xy 153.501314 -18.917402) (xy 153.022885 -18.71923) (xy 152.59231 -18.431529) + (xy 152.226136 -18.065355) (xy 151.938435 -17.63478) (xy 151.889933 -17.517686) (xy 151.821508 -17.861682) (xy 151.660567 -18.250228) + (xy 151.426918 -18.599909) (xy 151.129538 -18.897289) (xy 150.779857 -19.130938) (xy 150.391311 -19.291879) (xy 149.978834 -19.373926) + (xy 149.558276 -19.373926) (xy 149.145799 -19.291879) (xy 148.757253 -19.130938) (xy 148.407572 -18.897289) (xy 148.110192 -18.599909) + (xy 147.876543 -18.250228) (xy 147.715602 -17.861682) (xy 147.712752 -17.847353) (xy 145.478902 -17.847353) (xy 145.35442 -17.835093) + (xy 145.234722 -17.798783) (xy 145.124408 -17.739818) (xy 145.027717 -17.660466) (xy 144.948365 -17.563775) (xy 144.8894 -17.453461) + (xy 144.85309 -17.333763) (xy 144.84083 -17.209281) (xy 143.275606 -17.209281) (xy 143.275606 -20.4298) (xy 143.279282 -20.467125) + (xy 143.275606 -20.50445) (xy 143.275606 -20.504458) (xy 143.264609 -20.616111) (xy 143.221152 -20.759372) (xy 143.15058 -20.891401) + (xy 143.055607 -21.007126) (xy 143.026609 -21.030924) (xy 137.004786 -27.052746) (xy 137.004786 -29.141017) (xy 136.992526 -29.265499) + (xy 136.956216 -29.385197) (xy 136.897251 -29.495511) (xy 136.817899 -29.592202) (xy 136.721208 -29.671554) (xy 136.610894 -29.730519) + (xy 136.491196 -29.766829) (xy 136.366714 -29.779089) (xy 133.816714 -29.779089) (xy 133.692232 -29.766829) (xy 133.572534 -29.730519) + (xy 133.46222 -29.671554) (xy 133.365529 -29.592202) (xy 133.286177 -29.495511) (xy 133.227212 -29.385197) (xy 133.190902 -29.265499) + (xy 133.178642 -29.141017) (xy 133.178642 -28.415906) (xy 133.063509 -28.492835) (xy 132.674963 -28.653776) (xy 132.262486 -28.735823) + (xy 131.841928 -28.735823) (xy 131.429451 -28.653776) (xy 131.040905 -28.492835) (xy 130.691224 -28.259186) (xy 130.393844 -27.961806) + (xy 130.160195 -27.612125) (xy 129.999254 -27.223579) (xy 129.917207 -26.811102) (xy 129.917207 -26.390544) (xy 129.999254 -25.978067) + (xy 130.160195 -25.589521) (xy 130.393844 -25.23984) (xy 130.691224 -24.94246) (xy 131.040905 -24.708811) (xy 131.429451 -24.54787) + (xy 131.841928 -24.465823) (xy 132.262486 -24.465823) (xy 132.674963 -24.54787) (xy 133.063509 -24.708811) (xy 133.41319 -24.94246) + (xy 133.71057 -25.23984) (xy 133.944219 -25.589521) (xy 134.10516 -25.978067) (xy 134.110109 -26.002945) (xy 135.904985 -26.002945) + (xy 141.755607 -20.152322) (xy 141.755606 -12.289497) (xy 141.240606 -12.289497) (xy 141.116124 -12.277237) (xy 140.996426 -12.240927) + (xy 140.886112 -12.181962) (xy 140.789421 -12.10261) (xy 140.710069 -12.005919) (xy 140.651104 -11.895605) (xy 140.614794 -11.775907) + (xy 140.602534 -11.651425) (xy 140.602534 -10.926314) (xy 140.487401 -11.003243) (xy 140.098855 -11.164184) (xy 139.686378 -11.246231) + (xy 139.26582 -11.246231) (xy 138.853343 -11.164184) (xy 138.464797 -11.003243) (xy 138.115116 -10.769594) (xy 137.817736 -10.472214) + (xy 137.584087 -10.122533) (xy 137.423146 -9.733987) (xy 137.341099 -9.32151) (xy 137.341099 -8.900952) (xy 137.423146 -8.488475) + (xy 137.584087 -8.099929) (xy 137.817736 -7.750248) (xy 138.115116 -7.452868) (xy 138.464797 -7.219219) (xy 138.853343 -7.058278) + (xy 139.26582 -6.976231) (xy 139.686378 -6.976231) (xy 140.098855 -7.058278) (xy 140.487401 -7.219219) (xy 140.837082 -7.452868) + (xy 141.134462 -7.750248) (xy 141.368111 -8.099929) (xy 141.529052 -8.488475) (xy 141.534001 -8.513353) (xy 143.328877 -8.513353) + (xy 149.179498 -2.662731) (xy 149.179497 5.200095) (xy 148.664497 5.200095) (xy 148.540015 5.212355) (xy 148.420317 5.248665) + (xy 148.37836 5.271092) (xy 120.407602 5.271092) (xy 120.533107 5.08326) (xy 120.647032 4.808221) (xy 120.70511 4.516241) + (xy 120.70511 4.218541) (xy 120.647032 3.926561) (xy 120.533107 3.651522) (xy 120.367714 3.403993) (xy 120.157208 3.193487) + (xy 120.01339 3.097391) (xy 120.157208 3.001295) (xy 120.367714 2.790789) (xy 120.533107 2.54326) (xy 120.647032 2.268221) + (xy 120.70511 1.976241) (xy 120.70511 1.678541) (xy 120.647032 1.386561) (xy 120.533107 1.111522) (xy 120.367714 0.863993) + (xy 120.157208 0.653487) (xy 120.01339 0.557391) (xy 120.157208 0.461295) (xy 120.367714 0.250789) (xy 120.533107 0.00326) + (xy 120.647032 -0.271779) (xy 120.70511 -0.563759) (xy 120.70511 -0.861459) (xy 120.647032 -1.153439) (xy 120.533107 -1.428478) + (xy 120.367714 -1.676007) (xy 120.157208 -1.886513) (xy 120.01339 -1.982609) (xy 120.157208 -2.078705) (xy 120.367714 -2.289211) + (xy 120.533107 -2.53674) (xy 120.647032 -2.811779) (xy 120.70511 -3.103759) (xy 120.70511 -3.401459) (xy 120.647032 -3.693439) + (xy 120.533107 -3.968478) (xy 120.367714 -4.216007) (xy 120.32136 -4.262361) (xy 129.695625 -4.262361) (xy 129.695625 -1.762361) + (xy 129.707885 -1.637879) (xy 129.744195 -1.518181) (xy 129.80316 -1.407867) (xy 129.882512 -1.311176) (xy 129.979203 -1.231824) + (xy 130.089517 -1.172859) (xy 130.209215 -1.136549) (xy 130.333697 -1.124289) (xy 131.374734 -1.124289) (xy 135.658626 3.159604) + (xy 135.682424 3.188602) (xy 135.798149 3.283575) (xy 135.930178 3.354147) (xy 136.073439 3.397604) (xy 136.166806 3.4068) + (xy 136.336371 3.660573) (xy 136.557491 3.881693) (xy 136.8175 4.055425) (xy 137.106406 4.175094) (xy 137.413108 4.236101) + (xy 137.725818 4.236101) (xy 138.03252 4.175094) (xy 138.321426 4.055425) (xy 138.581435 3.881693) (xy 138.802555 3.660573) + (xy 138.976287 3.400564) (xy 138.994004 3.357792) (xy 139.00602 3.354147) (xy 139.138049 3.283575) (xy 139.253774 3.188602) + (xy 139.276278 3.161181) (xy 139.383532 3.170801) (xy 139.507902 3.157455) (xy 139.627278 3.120101) (xy 140.455733 2.768443) + (xy 140.565529 2.708519) (xy 140.661524 2.628326) (xy 140.74003 2.530946) (xy 140.798029 2.420121) (xy 140.833293 2.300111) + (xy 140.844467 2.175527) (xy 140.831121 2.051157) (xy 140.793767 1.931781) (xy 140.32489 0.827175) (xy 140.264966 0.717379) + (xy 140.184773 0.621384) (xy 140.087393 0.542878) (xy 139.976568 0.484879) (xy 139.856558 0.449615) (xy 139.731974 0.438441) + (xy 139.607604 0.451787) (xy 139.488228 0.489141) (xy 138.659773 0.840799) (xy 138.549977 0.900723) (xy 138.453982 0.980916) + (xy 138.375476 1.078296) (xy 138.317477 1.189121) (xy 138.304112 1.234605) (xy 138.03252 1.122108) (xy 137.725818 1.061101) + (xy 137.413108 1.061101) (xy 137.106406 1.122108) (xy 136.8175 1.241777) (xy 136.557491 1.415509) (xy 136.336371 1.636629) + (xy 136.315897 1.667271) (xy 134.792929 0.144303) (xy 141.308705 0.144303) (xy 141.322051 0.268673) (xy 141.359405 0.388049) + (xy 141.828282 1.492655) (xy 141.888206 1.602451) (xy 141.968399 1.698446) (xy 142.065779 1.776952) (xy 142.176604 1.834951) + (xy 142.296614 1.870215) (xy 142.421198 1.881389) (xy 142.545568 1.868043) (xy 142.664944 1.830689) (xy 143.493399 1.479031) + (xy 143.603195 1.419107) (xy 143.69919 1.338914) (xy 143.708834 1.326951) (xy 143.762889 1.370529) (xy 143.873714 1.428528) + (xy 143.993724 1.463792) (xy 144.118308 1.474966) (xy 144.242678 1.46162) (xy 144.362055 1.424266) (xy 145.998713 0.729546) + (xy 146.108508 0.669622) (xy 146.204503 0.589429) (xy 146.283009 0.492049) (xy 146.341008 0.381224) (xy 146.376272 0.261214) + (xy 146.387446 0.13663) (xy 146.3741 0.01226) (xy 146.336746 -0.107117) (xy 145.642026 -1.743775) (xy 145.582102 -1.85357) + (xy 145.501909 -1.949565) (xy 145.404529 -2.028071) (xy 145.293704 -2.08607) (xy 145.173694 -2.121334) (xy 145.04911 -2.132508) + (xy 144.92474 -2.119162) (xy 144.805363 -2.081808) (xy 143.168705 -1.387088) (xy 143.05891 -1.327164) (xy 142.962915 -1.246971) + (xy 142.884409 -1.149591) (xy 142.82641 -1.038766) (xy 142.791146 -0.918756) (xy 142.784943 -0.849598) (xy 142.76964 -0.850971) + (xy 142.64527 -0.837625) (xy 142.525894 -0.800271) (xy 141.697439 -0.448613) (xy 141.587643 -0.388689) (xy 141.491648 -0.308496) + (xy 141.413142 -0.211116) (xy 141.355143 -0.100291) (xy 141.319879 0.019719) (xy 141.308705 0.144303) (xy 134.792929 0.144303) + (xy 134.662941 0.014316) (xy 134.880187 -0.028897) (xy 135.150604 -0.140907) (xy 135.393972 -0.303521) (xy 135.60094 -0.510489) + (xy 135.763554 -0.753857) (xy 135.875564 -1.024274) (xy 135.932666 -1.311347) (xy 135.932666 -1.604043) (xy 135.875564 -1.891116) + (xy 135.763554 -2.161533) (xy 135.610816 -2.390121) (xy 135.634652 -2.399994) (xy 135.984333 -2.633643) (xy 136.281713 -2.931023) + (xy 136.494031 -3.24878) (xy 136.494031 -3.183685) (xy 136.595058 -2.675787) (xy 136.79323 -2.197358) (xy 137.080931 -1.766783) + (xy 137.447105 -1.400609) (xy 137.87768 -1.112908) (xy 138.356109 -0.914736) (xy 138.864007 -0.813709) (xy 139.381855 -0.813709) + (xy 139.889753 -0.914736) (xy 140.368182 -1.112908) (xy 140.798757 -1.400609) (xy 141.164931 -1.766783) (xy 141.452632 -2.197358) + (xy 141.650804 -2.675787) (xy 141.751831 -3.183685) (xy 141.751831 -3.701533) (xy 141.650804 -4.209431) (xy 141.452632 -4.68786) + (xy 141.164931 -5.118435) (xy 140.798757 -5.484609) (xy 140.665167 -5.573871) (xy 142.313196 -5.573871) (xy 142.313196 -5.281175) + (xy 142.370298 -4.994102) (xy 142.482308 -4.723685) (xy 142.644922 -4.480317) (xy 142.85189 -4.273349) (xy 143.095258 -4.110735) + (xy 143.365675 -3.998725) (xy 143.652748 -3.941623) (xy 143.945444 -3.941623) (xy 144.232517 -3.998725) (xy 144.502934 -4.110735) + (xy 144.746302 -4.273349) (xy 144.95327 -4.480317) (xy 145.115884 -4.723685) (xy 145.227894 -4.994102) (xy 145.284996 -5.281175) + (xy 145.284996 -5.573871) (xy 145.227894 -5.860944) (xy 145.115884 -6.131361) (xy 144.95327 -6.374729) (xy 144.746302 -6.581697) + (xy 144.502934 -6.744311) (xy 144.232517 -6.856321) (xy 143.945444 -6.913423) (xy 143.652748 -6.913423) (xy 143.365675 -6.856321) + (xy 143.095258 -6.744311) (xy 142.85189 -6.581697) (xy 142.644922 -6.374729) (xy 142.482308 -6.131361) (xy 142.370298 -5.860944) + (xy 142.313196 -5.573871) (xy 140.665167 -5.573871) (xy 140.368182 -5.77231) (xy 139.889753 -5.970482) (xy 139.381855 -6.071509) + (xy 138.864007 -6.071509) (xy 138.356109 -5.970482) (xy 137.87768 -5.77231) (xy 137.447105 -5.484609) (xy 137.080931 -5.118435) + (xy 136.79323 -4.68786) (xy 136.744728 -4.570766) (xy 136.676303 -4.914762) (xy 136.515362 -5.303308) (xy 136.281713 -5.652989) + (xy 135.984333 -5.950369) (xy 135.634652 -6.184018) (xy 135.246106 -6.344959) (xy 134.833629 -6.427006) (xy 134.413071 -6.427006) + (xy 134.000594 -6.344959) (xy 133.612048 -6.184018) (xy 133.262367 -5.950369) (xy 132.964987 -5.652989) (xy 132.731338 -5.303308) + (xy 132.570397 -4.914762) (xy 132.567547 -4.900433) (xy 130.333697 -4.900433) (xy 130.209215 -4.888173) (xy 130.089517 -4.851863) + (xy 129.979203 -4.792898) (xy 129.882512 -4.713546) (xy 129.80316 -4.616855) (xy 129.744195 -4.506541) (xy 129.707885 -4.386843) + (xy 129.695625 -4.262361) (xy 120.32136 -4.262361) (xy 120.157208 -4.426513) (xy 119.994001 -4.535564) (xy 120.061373 -4.74544) + (xy 119.19381 -5.613004) (xy 118.326247 -4.74544) (xy 118.393619 -4.535564) (xy 118.230412 -4.426513) (xy 118.019906 -4.216007) + (xy 117.854513 -3.968478) (xy 117.740588 -3.693439) (xy 117.68251 -3.401459) (xy 113.155 -3.401459) (xy 113.155 -5.725118) + (xy 117.676697 -5.725118) (xy 117.719014 -5.430442) (xy 117.818008 -5.149682) (xy 117.894881 -5.005863) (xy 118.146641 -4.925046) + (xy 119.014205 -5.792609) (xy 119.373415 -5.792609) (xy 120.240979 -4.925046) (xy 120.492739 -5.005863) (xy 120.621267 -5.274388) + (xy 120.694939 -5.562828) (xy 120.710923 -5.8601) (xy 120.668606 -6.154776) (xy 120.569612 -6.435536) (xy 120.492739 -6.579355) + (xy 120.240979 -6.660172) (xy 119.373415 -5.792609) (xy 119.014205 -5.792609) (xy 118.146641 -6.660172) (xy 117.894881 -6.579355) + (xy 117.766353 -6.31083) (xy 117.692681 -6.02239) (xy 117.676697 -5.725118) (xy 113.155 -5.725118) (xy 113.155 -7.28544) + (xy 118.326247 -7.28544) (xy 118.397778 -7.062609) (xy 118.326247 -6.839778) (xy 119.19381 -5.972214) (xy 120.061373 -6.839778) + (xy 119.989842 -7.062609) (xy 120.061373 -7.28544) (xy 119.19381 -8.153004) (xy 118.326247 -7.28544) (xy 113.155 -7.28544) + (xy 113.155 -8.265118) (xy 117.676697 -8.265118) (xy 117.719014 -7.970442) (xy 117.818008 -7.689682) (xy 117.894881 -7.545863) + (xy 118.146641 -7.465046) (xy 119.014205 -8.332609) (xy 119.373415 -8.332609) (xy 120.240979 -7.465046) (xy 120.492739 -7.545863) + (xy 120.621267 -7.814388) (xy 120.694939 -8.102828) (xy 120.710923 -8.4001) (xy 120.668606 -8.694776) (xy 120.569612 -8.975536) + (xy 120.492739 -9.119355) (xy 120.240979 -9.200172) (xy 119.373415 -8.332609) (xy 119.014205 -8.332609) (xy 118.146641 -9.200172) + (xy 117.894881 -9.119355) (xy 117.766353 -8.85083) (xy 117.692681 -8.56239) (xy 117.676697 -8.265118) (xy 113.155 -8.265118) + (xy 113.155 -13.561459) (xy 117.68251 -13.561459) (xy 117.68251 -13.263759) (xy 117.740588 -12.971779) (xy 117.854513 -12.69674) + (xy 118.019906 -12.449211) (xy 118.230412 -12.238705) (xy 118.37423 -12.142609) (xy 118.230412 -12.046513) (xy 118.019906 -11.836007) + (xy 117.854513 -11.588478) (xy 117.740588 -11.313439) (xy 117.68251 -11.021459) (xy 117.68251 -10.723759) (xy 117.740588 -10.431779) + (xy 117.854513 -10.15674) (xy 118.019906 -9.909211) (xy 118.230412 -9.698705) (xy 118.393619 -9.589654) (xy 118.326247 -9.379778) + (xy 119.19381 -8.512214) (xy 120.061373 -9.379778) (xy 119.994001 -9.589654) (xy 120.157208 -9.698705) (xy 120.367714 -9.909211) + (xy 120.533107 -10.15674) (xy 120.647032 -10.431779) (xy 120.70511 -10.723759) (xy 120.70511 -11.021459) (xy 120.647032 -11.313439) + (xy 120.533107 -11.588478) (xy 120.367714 -11.836007) (xy 120.157208 -12.046513) (xy 120.01339 -12.142609) (xy 120.157208 -12.238705) + (xy 120.367714 -12.449211) (xy 120.533107 -12.69674) (xy 120.647032 -12.971779) (xy 120.70511 -13.263759) (xy 120.70511 -13.561459) + (xy 120.647032 -13.853439) (xy 120.533107 -14.128478) (xy 120.367714 -14.376007) (xy 120.157208 -14.586513) (xy 119.909679 -14.751906) + (xy 119.63464 -14.865831) (xy 119.34266 -14.923909) (xy 119.04496 -14.923909) (xy 118.75298 -14.865831) (xy 118.477941 -14.751906) + (xy 118.230412 -14.586513) (xy 118.019906 -14.376007) (xy 117.854513 -14.128478) (xy 117.740588 -13.853439) (xy 117.68251 -13.561459) + (xy 113.155 -13.561459) (xy 113.155 -16.516506) (xy 113.219609 -16.672485) (xy 113.259383 -16.872444) (xy 113.259383 -17.076322) + (xy 113.219609 -17.276281) (xy 113.141588 -17.464639) (xy 113.02832 -17.634157) (xy 112.884157 -17.77832) (xy 112.714639 -17.891588) + (xy 112.526281 -17.969609) (xy 112.326322 -18.009383) (xy 112.122444 -18.009383) (xy 111.922485 -17.969609) (xy 111.734127 -17.891588) + (xy 111.564609 -17.77832) (xy 111.420446 -17.634157) (xy 111.307178 -17.464639) (xy 111.229157 -17.276281) (xy 111.189383 -17.076322) + (xy 103.512509 -17.076322) (xy 103.512509 -21.751953) (xy 122.271733 -21.751953) (xy 122.271733 -19.251953) (xy 122.283993 -19.127471) + (xy 122.320303 -19.007773) (xy 122.379268 -18.897459) (xy 122.45862 -18.800768) (xy 122.555311 -18.721416) (xy 122.665625 -18.662451) + (xy 122.785323 -18.626141) (xy 122.909805 -18.613881) (xy 123.950843 -18.613881) (xy 128.234735 -14.329988) (xy 128.258533 -14.30099) + (xy 128.287531 -14.277192) (xy 128.374257 -14.206017) (xy 128.484157 -14.147274) (xy 128.506287 -14.135445) (xy 128.649548 -14.091988) + (xy 128.742915 -14.082792) (xy 128.91248 -13.829019) (xy 129.1336 -13.607899) (xy 129.393609 -13.434167) (xy 129.682515 -13.314498) + (xy 129.989217 -13.253491) (xy 130.301927 -13.253491) (xy 130.608629 -13.314498) (xy 130.897535 -13.434167) (xy 131.157544 -13.607899) + (xy 131.378664 -13.829019) (xy 131.552396 -14.089028) (xy 131.570113 -14.1318) (xy 131.582129 -14.135445) (xy 131.714158 -14.206017) + (xy 131.829883 -14.30099) (xy 131.852387 -14.328411) (xy 131.959641 -14.318791) (xy 132.084011 -14.332137) (xy 132.203387 -14.369491) + (xy 133.031842 -14.721149) (xy 133.141638 -14.781073) (xy 133.237633 -14.861266) (xy 133.316139 -14.958646) (xy 133.374138 -15.069471) + (xy 133.409402 -15.189481) (xy 133.420576 -15.314065) (xy 133.40723 -15.438435) (xy 133.369876 -15.557811) (xy 132.900999 -16.662417) + (xy 132.841075 -16.772213) (xy 132.760882 -16.868208) (xy 132.663502 -16.946714) (xy 132.552677 -17.004713) (xy 132.432667 -17.039977) + (xy 132.308083 -17.051151) (xy 132.183713 -17.037805) (xy 132.064337 -17.000451) (xy 131.235882 -16.648793) (xy 131.126086 -16.588869) + (xy 131.030091 -16.508676) (xy 130.951585 -16.411296) (xy 130.893586 -16.300471) (xy 130.880221 -16.254987) (xy 130.608629 -16.367484) + (xy 130.301927 -16.428491) (xy 129.989217 -16.428491) (xy 129.682515 -16.367484) (xy 129.393609 -16.247815) (xy 129.1336 -16.074083) + (xy 128.91248 -15.852963) (xy 128.892006 -15.822321) (xy 127.369038 -17.345289) (xy 133.884814 -17.345289) (xy 133.89816 -17.220919) + (xy 133.935514 -17.101543) (xy 134.404391 -15.996937) (xy 134.464315 -15.887141) (xy 134.544508 -15.791146) (xy 134.641888 -15.71264) + (xy 134.752713 -15.654641) (xy 134.872723 -15.619377) (xy 134.997307 -15.608203) (xy 135.121677 -15.621549) (xy 135.241053 -15.658903) + (xy 136.069508 -16.010561) (xy 136.179304 -16.070485) (xy 136.275299 -16.150678) (xy 136.284943 -16.162641) (xy 136.338998 -16.119063) + (xy 136.449823 -16.061064) (xy 136.569833 -16.0258) (xy 136.694417 -16.014626) (xy 136.818787 -16.027972) (xy 136.938164 -16.065326) + (xy 138.574822 -16.760046) (xy 138.684617 -16.81997) (xy 138.780612 -16.900163) (xy 138.859118 -16.997543) (xy 138.917117 -17.108368) + (xy 138.952381 -17.228378) (xy 138.963555 -17.352962) (xy 138.950209 -17.477332) (xy 138.912855 -17.596709) (xy 138.218135 -19.233367) + (xy 138.158211 -19.343162) (xy 138.078018 -19.439157) (xy 137.980638 -19.517663) (xy 137.869813 -19.575662) (xy 137.749803 -19.610926) + (xy 137.625219 -19.6221) (xy 137.500849 -19.608754) (xy 137.381472 -19.5714) (xy 135.744814 -18.87668) (xy 135.635019 -18.816756) + (xy 135.539024 -18.736563) (xy 135.460518 -18.639183) (xy 135.402519 -18.528358) (xy 135.367255 -18.408348) (xy 135.361052 -18.33919) + (xy 135.345749 -18.340563) (xy 135.221379 -18.327217) (xy 135.102003 -18.289863) (xy 134.273548 -17.938205) (xy 134.163752 -17.878281) + (xy 134.067757 -17.798088) (xy 133.989251 -17.700708) (xy 133.931252 -17.589883) (xy 133.895988 -17.469873) (xy 133.884814 -17.345289) + (xy 127.369038 -17.345289) (xy 127.23905 -17.475277) (xy 127.456295 -17.518489) (xy 127.726712 -17.630499) (xy 127.97008 -17.793113) + (xy 128.177048 -18.000081) (xy 128.339662 -18.243449) (xy 128.451672 -18.513866) (xy 128.508774 -18.800939) (xy 128.508774 -19.093635) + (xy 128.451672 -19.380708) (xy 128.339662 -19.651125) (xy 128.186924 -19.879713) (xy 128.21076 -19.889586) (xy 128.560441 -20.123235) + (xy 128.857821 -20.420615) (xy 129.070139 -20.738372) (xy 129.070139 -20.673277) (xy 129.171166 -20.165379) (xy 129.369338 -19.68695) + (xy 129.657039 -19.256375) (xy 130.023213 -18.890201) (xy 130.453788 -18.6025) (xy 130.932217 -18.404328) (xy 131.440115 -18.303301) + (xy 131.957963 -18.303301) (xy 132.465861 -18.404328) (xy 132.94429 -18.6025) (xy 133.374865 -18.890201) (xy 133.741039 -19.256375) + (xy 134.02874 -19.68695) (xy 134.226912 -20.165379) (xy 134.327939 -20.673277) (xy 134.327939 -21.191125) (xy 134.226912 -21.699023) + (xy 134.02874 -22.177452) (xy 133.741039 -22.608027) (xy 133.374865 -22.974201) (xy 133.241275 -23.063463) (xy 134.889304 -23.063463) + (xy 134.889304 -22.770767) (xy 134.946406 -22.483694) (xy 135.058416 -22.213277) (xy 135.22103 -21.969909) (xy 135.427998 -21.762941) + (xy 135.671366 -21.600327) (xy 135.941783 -21.488317) (xy 136.228856 -21.431215) (xy 136.521552 -21.431215) (xy 136.808625 -21.488317) + (xy 137.079042 -21.600327) (xy 137.32241 -21.762941) (xy 137.529378 -21.969909) (xy 137.691992 -22.213277) (xy 137.804002 -22.483694) + (xy 137.861104 -22.770767) (xy 137.861104 -23.063463) (xy 137.804002 -23.350536) (xy 137.691992 -23.620953) (xy 137.529378 -23.864321) + (xy 137.32241 -24.071289) (xy 137.079042 -24.233903) (xy 136.808625 -24.345913) (xy 136.521552 -24.403015) (xy 136.228856 -24.403015) + (xy 135.941783 -24.345913) (xy 135.671366 -24.233903) (xy 135.427998 -24.071289) (xy 135.22103 -23.864321) (xy 135.058416 -23.620953) + (xy 134.946406 -23.350536) (xy 134.889304 -23.063463) (xy 133.241275 -23.063463) (xy 132.94429 -23.261902) (xy 132.465861 -23.460074) + (xy 131.957963 -23.561101) (xy 131.440115 -23.561101) (xy 130.932217 -23.460074) (xy 130.453788 -23.261902) (xy 130.023213 -22.974201) + (xy 129.657039 -22.608027) (xy 129.369338 -22.177452) (xy 129.320836 -22.060358) (xy 129.252411 -22.404354) (xy 129.09147 -22.7929) + (xy 128.857821 -23.142581) (xy 128.560441 -23.439961) (xy 128.21076 -23.67361) (xy 127.822214 -23.834551) (xy 127.409737 -23.916598) + (xy 126.989179 -23.916598) (xy 126.576702 -23.834551) (xy 126.188156 -23.67361) (xy 125.838475 -23.439961) (xy 125.541095 -23.142581) + (xy 125.307446 -22.7929) (xy 125.146505 -22.404354) (xy 125.143655 -22.390025) (xy 122.909805 -22.390025) (xy 122.785323 -22.377765) + (xy 122.665625 -22.341455) (xy 122.555311 -22.28249) (xy 122.45862 -22.203138) (xy 122.379268 -22.106447) (xy 122.320303 -21.996133) + (xy 122.283993 -21.876435) (xy 122.271733 -21.751953) (xy 103.512509 -21.751953) (xy 103.512509 -22.044527) (xy 103.529774 -22.056063) + (xy 103.673937 -22.200226) (xy 103.787205 -22.369744) (xy 103.865226 -22.558102) (xy 103.905 -22.758061) (xy 103.905 -22.961939) + (xy 103.865226 -23.161898) (xy 103.787205 -23.350256) (xy 103.673937 -23.519774) (xy 103.529774 -23.663937) (xy 103.360256 -23.777205) + (xy 103.171898 -23.855226) (xy 102.971939 -23.895) (xy 102.768061 -23.895) (xy 102.568102 -23.855226) (xy 102.379744 -23.777205) + (xy 102.210226 -23.663937) (xy 102.066063 -23.519774) (xy 101.952795 -23.350256) (xy 101.874774 -23.161898) (xy 101.835 -22.961939) + (xy 101.835 -22.758061) (xy 101.874774 -22.558102) (xy 101.952795 -22.369744) (xy 101.99251 -22.310306) (xy 101.992509 -4.491232) + (xy 101.988833 -4.45391) (xy 101.992509 -4.416588) (xy 101.992509 -4.416578) (xy 102.003506 -4.304925) (xy 102.035283 -4.200169) + (xy 102.046963 -4.161664) (xy 102.117535 -4.029634) (xy 102.142902 -3.998725) (xy 102.212508 -3.913909) (xy 102.241512 -3.890106) + (xy 102.490234 -3.641384) (xy 102.44251 -3.401459) (xy 102.44251 -3.103759) (xy 102.500588 -2.811779) (xy 102.614513 -2.53674) + (xy 102.779906 -2.289211) (xy 102.990412 -2.078705) (xy 103.13423 -1.982609) (xy 102.990412 -1.886513) (xy 102.779906 -1.676007) + (xy 102.614513 -1.428478) (xy 102.500588 -1.153439) (xy 102.44251 -0.861459) (xy 102.44251 -0.563759) (xy 102.500588 -0.271779) + (xy 102.614513 0.00326) (xy 102.779906 0.250789) (xy 102.990412 0.461295) (xy 103.13423 0.557391) (xy 102.990412 0.653487) + (xy 102.779906 0.863993) (xy 102.614513 1.111522) (xy 102.500588 1.386561) (xy 102.44251 1.678541) (xy 102.44251 1.976241) + (xy 102.500588 2.268221) (xy 102.614513 2.54326) (xy 102.779906 2.790789) (xy 102.990412 3.001295) (xy 103.13423 3.097391) + (xy 102.990412 3.193487) (xy 102.779906 3.403993) (xy 102.614513 3.651522) (xy 102.500588 3.926561) (xy 102.44251 4.218541) + (xy 102.44251 4.516241) (xy 102.500588 4.808221) (xy 102.614513 5.08326) (xy 102.779906 5.330789) (xy 102.990412 5.541295) + (xy 103.13423 5.637391) (xy 102.990412 5.733487) (xy 102.779906 5.943993) (xy 102.644 6.147391) (xy 94.217193 6.147391) + (xy 92.147193 4.077392) (xy 92.147193 -3.94805) (xy 92.662193 -3.94805) (xy 92.786675 -3.96031) (xy 92.906373 -3.99662) + (xy 93.016687 -4.055585) (xy 93.113378 -4.134937) (xy 93.19273 -4.231628) (xy 93.251695 -4.341942) (xy 93.288005 -4.46164) + (xy 93.300265 -4.586122) (xy 93.300265 -6.674393) (xy 99.322087 -12.696214) (xy 99.351085 -12.720012) (xy 99.446058 -12.835737) + (xy 99.51663 -12.967766) (xy 99.560087 -13.111027) (xy 99.571084 -13.22268) (xy 99.571084 -13.222689) (xy 99.57476 -13.260012) + (xy 99.571084 -13.297335) (xy 99.571084 -21.437642) (xy 100.086084 -21.437642) (xy 100.210566 -21.449902) (xy 100.330264 -21.486212) + (xy 100.440578 -21.545177) (xy 100.537269 -21.624529) (xy 100.616621 -21.72122) (xy 100.675586 -21.831534) (xy 100.711896 -21.951232) + (xy 100.724156 -22.075714) (xy 100.724156 -24.575714) (xy 100.711896 -24.700196) (xy 100.675586 -24.819894) (xy 100.616621 -24.930208) + (xy 100.537269 -25.026899) (xy 100.440578 -25.106251) (xy 100.330264 -25.165216) (xy 100.210566 -25.201526) (xy 100.086084 -25.213786) + (xy 97.829479 -25.213786) (xy 97.82453 -25.238665) (xy 97.663589 -25.627211) (xy 97.42994 -25.976892) (xy 97.13256 -26.274272) + (xy 96.782879 -26.507921) (xy 96.394333 -26.668862) (xy 95.981856 -26.750909) (xy 95.561298 -26.750909) (xy 95.148821 -26.668862) + (xy 94.760275 -26.507921) (xy 94.410594 -26.274272) (xy 94.113214 -25.976892) (xy 93.879565 -25.627211) (xy 93.718624 -25.238665) + (xy 93.636577 -24.826188) (xy 93.636577 -24.40563) (xy 93.718624 -23.993153) (xy 93.879565 -23.604607) (xy 94.113214 -23.254926) + (xy 94.410594 -22.957546) (xy 94.760275 -22.723897) (xy 95.148821 -22.562956) (xy 95.561298 -22.480909) (xy 95.981856 -22.480909) + (xy 96.394333 -22.562956) (xy 96.782879 -22.723897) (xy 96.898012 -22.800826) (xy 96.898012 -22.075714) (xy 96.910272 -21.951232) + (xy 96.946582 -21.831534) (xy 97.005547 -21.72122) (xy 97.084899 -21.624529) (xy 97.18159 -21.545177) (xy 97.291904 -21.486212) + (xy 97.411602 -21.449902) (xy 97.536084 -21.437642) (xy 98.051084 -21.437642) (xy 98.051085 -13.574816) (xy 92.200464 -7.724194) + (xy 90.405588 -7.724194) (xy 90.400639 -7.749073) (xy 90.239698 -8.137619) (xy 90.006049 -8.4873) (xy 89.708669 -8.78468) + (xy 89.358988 -9.018329) (xy 88.970442 -9.17927) (xy 88.557965 -9.261317) (xy 88.137407 -9.261317) (xy 87.72493 -9.17927) + (xy 87.336384 -9.018329) (xy 86.986703 -8.78468) (xy 86.689323 -8.4873) (xy 86.455674 -8.137619) (xy 86.294733 -7.749073) + (xy 86.212686 -7.336596) (xy 86.212686 -6.916038) (xy 86.294733 -6.503561) (xy 86.455674 -6.115015) (xy 86.689323 -5.765334) + (xy 86.986703 -5.467954) (xy 87.336384 -5.234305) (xy 87.72493 -5.073364) (xy 88.137407 -4.991317) (xy 88.557965 -4.991317) + (xy 88.970442 -5.073364) (xy 89.358988 -5.234305) (xy 89.474121 -5.311234) (xy 89.474121 -4.586122) (xy 89.486381 -4.46164) + (xy 89.522691 -4.341942) (xy 89.581656 -4.231628) (xy 89.661008 -4.134937) (xy 89.757699 -4.055585) (xy 89.868013 -3.99662) + (xy 89.987711 -3.96031) (xy 90.112193 -3.94805) (xy 90.627193 -3.94805) (xy 90.627194 3.914776) (xy 84.776572 9.765398) + (xy 82.981696 9.765398) (xy 82.976747 9.740519) (xy 82.815806 9.351973) (xy 82.582157 9.002292) (xy 82.284777 8.704912) + (xy 81.935096 8.471263) (xy 81.54655 8.310322) (xy 81.134073 8.228275) (xy 80.713515 8.228275) (xy 80.301038 8.310322) + (xy 79.912492 8.471263) (xy 79.562811 8.704912) (xy 79.265431 9.002292) (xy 79.031782 9.351973) (xy 78.870841 9.740519) + (xy 78.788794 10.152996) (xy 78.788794 10.573554) (xy 78.870841 10.986031) (xy 79.031782 11.374577) (xy 79.265431 11.724258) + (xy 79.562811 12.021638) (xy 79.912492 12.255287) (xy 80.301038 12.416228) (xy 80.713515 12.498275) (xy 81.134073 12.498275) + (xy 81.54655 12.416228) (xy 81.935096 12.255287) (xy 82.050229 12.178358) (xy 82.050229 12.90347) (xy 82.062489 13.027952) + (xy 82.098799 13.14765) (xy 82.157764 13.257964) (xy 82.237116 13.354655) (xy 82.333807 13.434007) (xy 82.444121 13.492972) + (xy 82.563819 13.529282) (xy 82.688301 13.541542) (xy 83.203301 13.541542) (xy 83.203302 21.404369) (xy 77.352681 27.254991) + (xy 75.557805 27.254991) (xy 75.552856 27.230112) (xy 75.391915 26.841566) (xy 75.158266 26.491885) (xy 74.860886 26.194505) + (xy 74.511205 25.960856) (xy 74.122659 25.799915) (xy 73.710182 25.717868) (xy 73.289624 25.717868) (xy 72.877147 25.799915) + (xy 72.488601 25.960856) (xy 72.13892 26.194505) (xy 71.84154 26.491885) (xy 71.607891 26.841566) (xy 71.44695 27.230112) + (xy 71.364903 27.642589) (xy 68.797241 27.642589) (xy 68.797241 27.499529) (xy 68.715194 27.087052) (xy 68.554253 26.698506) + (xy 68.320604 26.348825) (xy 68.023224 26.051445) (xy 67.673543 25.817796) (xy 67.284997 25.656855) (xy 66.87252 25.574808) + (xy 66.451962 25.574808) (xy 66.039485 25.656855) (xy 65.650939 25.817796) (xy 65.560659 25.878119) (xy 65.560659 25.180164) + (xy 65.548399 25.055682) (xy 65.512089 24.935984) (xy 65.453124 24.82567) (xy 65.373772 24.728979) (xy 65.277081 24.649627) + (xy 65.166767 24.590662) (xy 65.047069 24.554352) (xy 64.922587 24.542092) (xy 62.372587 24.542092) (xy 62.248105 24.554352) + (xy 62.128407 24.590662) (xy 62.018093 24.649627) (xy 61.921402 24.728979) (xy 61.84205 24.82567) (xy 61.783085 24.935984) + (xy 61.746775 25.055682) (xy 61.734515 25.180164) (xy 57.032179 25.180164) (xy 57.338206 24.459211) (xy 57.37556 24.339834) + (xy 57.388906 24.215464) (xy 57.377732 24.09088) (xy 57.342468 23.97087) (xy 57.284469 23.860045) (xy 57.205963 23.762665) + (xy 57.109968 23.682472) (xy 57.000173 23.622548) (xy 55.363515 22.927828) (xy 55.244138 22.890474) (xy 55.119768 22.877128) + (xy 54.995184 22.888302) (xy 54.875174 22.923566) (xy 54.764349 22.981565) (xy 54.710294 23.025143) (xy 54.70065 23.01318) + (xy 54.604655 22.932987) (xy 54.494859 22.873063) (xy 53.666404 22.521405) (xy 53.547028 22.484051) (xy 53.422658 22.470705) + (xy 53.298074 22.481879) (xy 53.178064 22.517143) (xy 53.067239 22.575142) (xy 52.969859 22.653648) (xy 52.889666 22.749643) + (xy 52.829742 22.859439) (xy 52.360865 23.964045) (xy 52.323511 24.083421) (xy 52.310165 24.207791) (xy 30.719969 24.207791) + (xy 5.618404 12.478511) (xy 5.60726 12.472429) (xy 5.586819 12.463752) (xy 5.566708 12.454355) (xy 5.554739 12.450135) + (xy 4.921583 12.181376) (xy 36.774228 12.181376) (xy 36.785402 12.30596) (xy 36.820666 12.42597) (xy 36.878665 12.536795) + (xy 36.957171 12.634175) (xy 37.053166 12.714368) (xy 37.162962 12.774292) (xy 37.991417 13.12595) (xy 38.110793 13.163304) + (xy 38.235163 13.17665) (xy 38.250466 13.175277) (xy 38.256669 13.244435) (xy 38.291933 13.364445) (xy 38.349932 13.47527) + (xy 38.428438 13.57265) (xy 38.524433 13.652843) (xy 38.634228 13.712767) (xy 40.270886 14.407487) (xy 40.390263 14.444841) + (xy 40.514633 14.458187) (xy 40.639217 14.447013) (xy 40.759227 14.411749) (xy 40.870052 14.35375) (xy 40.967432 14.275244) + (xy 41.047625 14.179249) (xy 41.107549 14.069454) (xy 41.802269 12.432796) (xy 41.839623 12.313419) (xy 41.848226 12.233243) + (xy 46.589309 12.233243) (xy 46.589309 14.733243) (xy 46.601569 14.857725) (xy 46.637879 14.977423) (xy 46.696844 15.087737) + (xy 46.776196 15.184428) (xy 46.858425 15.251911) (xy 46.858424 20.713671) (xy 46.854748 20.750994) (xy 46.858424 20.788316) + (xy 46.858424 20.788326) (xy 46.869421 20.899979) (xy 46.899139 20.997947) (xy 46.912878 21.04324) (xy 46.98345 21.17527) + (xy 47.023295 21.22382) (xy 47.042967 21.247791) (xy 46.983423 21.547138) (xy 46.983423 21.859848) (xy 47.04443 22.16655) + (xy 47.164099 22.455456) (xy 47.337831 22.715465) (xy 47.558951 22.936585) (xy 47.81896 23.110317) (xy 48.107866 23.229986) + (xy 48.414568 23.290993) (xy 48.727278 23.290993) (xy 49.03398 23.229986) (xy 49.305572 23.117489) (xy 49.318937 23.162973) + (xy 49.376936 23.273798) (xy 49.455442 23.371178) (xy 49.551437 23.451371) (xy 49.661233 23.511295) (xy 50.489688 23.862953) + (xy 50.609064 23.900307) (xy 50.733434 23.913653) (xy 50.858018 23.902479) (xy 50.978028 23.867215) (xy 51.088853 23.809216) + (xy 51.186233 23.73071) (xy 51.266426 23.634715) (xy 51.32635 23.524919) (xy 51.795227 22.420313) (xy 51.832581 22.300937) + (xy 51.845927 22.176567) (xy 51.834753 22.051983) (xy 51.799489 21.931973) (xy 51.74149 21.821148) (xy 51.662984 21.723768) + (xy 51.566989 21.643575) (xy 51.457193 21.583651) (xy 50.628738 21.231993) (xy 50.509362 21.194639) (xy 50.384992 21.181293) + (xy 50.277738 21.190913) (xy 50.255234 21.163492) (xy 50.139509 21.068519) (xy 50.00748 20.997947) (xy 49.995464 20.994302) + (xy 49.977747 20.95153) (xy 49.804015 20.691521) (xy 49.582895 20.470401) (xy 49.322886 20.296669) (xy 49.03398 20.177) + (xy 48.727278 20.115993) (xy 48.414568 20.115993) (xy 48.378424 20.123183) (xy 48.378424 17.729009) (xy 48.40833 17.758915) + (xy 48.651698 17.921529) (xy 48.922115 18.033539) (xy 49.209188 18.090641) (xy 49.501884 18.090641) (xy 49.788957 18.033539) + (xy 50.059374 17.921529) (xy 50.302742 17.758915) (xy 50.50971 17.551947) (xy 50.672324 17.308579) (xy 50.784334 17.038162) + (xy 50.833559 16.790689) (xy 50.894279 16.81584) (xy 51.306756 16.897887) (xy 51.727314 16.897887) (xy 52.074753 16.828777) + (xy 51.989701 16.913829) (xy 51.702 17.344404) (xy 51.503828 17.822833) (xy 51.402801 18.330731) (xy 51.402801 18.848579) + (xy 51.503828 19.356477) (xy 51.702 19.834906) (xy 51.989701 20.265481) (xy 52.355875 20.631655) (xy 52.78645 20.919356) + (xy 53.264879 21.117528) (xy 53.772777 21.218555) (xy 54.290625 21.218555) (xy 54.798523 21.117528) (xy 55.276952 20.919356) + (xy 55.707527 20.631655) (xy 55.910961 20.428221) (xy 57.221966 20.428221) (xy 57.221966 20.720917) (xy 57.279068 21.00799) + (xy 57.391078 21.278407) (xy 57.553692 21.521775) (xy 57.76066 21.728743) (xy 58.004028 21.891357) (xy 58.274445 22.003367) + (xy 58.561518 22.060469) (xy 58.854214 22.060469) (xy 59.141287 22.003367) (xy 59.411704 21.891357) (xy 59.655072 21.728743) + (xy 59.86204 21.521775) (xy 60.024654 21.278407) (xy 60.136664 21.00799) (xy 60.193766 20.720917) (xy 60.193766 20.428221) + (xy 60.136664 20.141148) (xy 60.024654 19.870731) (xy 59.887269 19.66512) (xy 74.879261 19.66512) (xy 74.890435 19.789704) + (xy 74.925699 19.909714) (xy 74.983698 20.020539) (xy 75.062204 20.117919) (xy 75.158199 20.198112) (xy 75.267995 20.258036) + (xy 76.09645 20.609694) (xy 76.215826 20.647048) (xy 76.340196 20.660394) (xy 76.355499 20.659021) (xy 76.361702 20.728179) + (xy 76.396966 20.848189) (xy 76.454965 20.959014) (xy 76.533471 21.056394) (xy 76.629466 21.136587) (xy 76.739261 21.196511) + (xy 78.375919 21.891231) (xy 78.495296 21.928585) (xy 78.619666 21.941931) (xy 78.74425 21.930757) (xy 78.86426 21.895493) + (xy 78.975085 21.837494) (xy 79.072465 21.758988) (xy 79.152658 21.662993) (xy 79.212582 21.553198) (xy 79.907302 19.91654) + (xy 79.944656 19.797163) (xy 79.958002 19.672793) (xy 79.946828 19.548209) (xy 79.911564 19.428199) (xy 79.853565 19.317374) + (xy 79.775059 19.219994) (xy 79.679064 19.139801) (xy 79.569269 19.079877) (xy 77.932611 18.385157) (xy 77.813234 18.347803) + (xy 77.688864 18.334457) (xy 77.56428 18.345631) (xy 77.44427 18.380895) (xy 77.333445 18.438894) (xy 77.27939 18.482472) + (xy 77.269746 18.470509) (xy 77.173751 18.390316) (xy 77.063955 18.330392) (xy 76.2355 17.978734) (xy 76.116124 17.94138) + (xy 75.991754 17.928034) (xy 75.86717 17.939208) (xy 75.74716 17.974472) (xy 75.636335 18.032471) (xy 75.538955 18.110977) + (xy 75.458762 18.206972) (xy 75.398838 18.316768) (xy 74.929961 19.421374) (xy 74.892607 19.54075) (xy 74.879261 19.66512) + (xy 59.887269 19.66512) (xy 59.86204 19.627363) (xy 59.655072 19.420395) (xy 59.411704 19.257781) (xy 59.141287 19.145771) + (xy 58.854214 19.088669) (xy 58.561518 19.088669) (xy 58.274445 19.145771) (xy 58.004028 19.257781) (xy 57.76066 19.420395) + (xy 57.553692 19.627363) (xy 57.391078 19.870731) (xy 57.279068 20.141148) (xy 57.221966 20.428221) (xy 55.910961 20.428221) + (xy 56.073701 20.265481) (xy 56.361402 19.834906) (xy 56.559574 19.356477) (xy 56.660601 18.848579) (xy 56.660601 18.330731) + (xy 56.559574 17.822833) (xy 56.361402 17.344404) (xy 56.073701 16.913829) (xy 55.707527 16.547655) (xy 55.276952 16.259954) + (xy 54.798523 16.061782) (xy 54.290625 15.960755) (xy 53.772777 15.960755) (xy 53.264879 16.061782) (xy 53.198517 16.08927) + (xy 53.409047 15.774189) (xy 53.569988 15.385643) (xy 53.652035 14.973166) (xy 53.652035 14.695668) (xy 56.219697 14.695668) + (xy 56.219697 15.116226) (xy 56.301744 15.528703) (xy 56.462685 15.917249) (xy 56.696334 16.26693) (xy 56.993714 16.56431) + (xy 57.343395 16.797959) (xy 57.731941 16.9589) (xy 58.144418 17.040947) (xy 58.564976 17.040947) (xy 58.977453 16.9589) + (xy 59.365999 16.797959) (xy 59.481132 16.72103) (xy 59.481132 17.446142) (xy 59.493392 17.570624) (xy 59.529702 17.690322) + (xy 59.588667 17.800636) (xy 59.668019 17.897327) (xy 59.76471 17.976679) (xy 59.875024 18.035644) (xy 59.994722 18.071954) + (xy 60.119204 18.084214) (xy 62.669204 18.084214) (xy 62.793686 18.071954) (xy 62.913384 18.035644) (xy 63.023698 17.976679) + (xy 63.120389 17.897327) (xy 63.199741 17.800636) (xy 63.258706 17.690322) (xy 63.295016 17.570624) (xy 63.307276 17.446142) + (xy 63.307276 15.357871) (xy 69.158406 9.506742) (xy 69.158406 10.190571) (xy 69.170666 10.315053) (xy 69.206976 10.434751) + (xy 69.265941 10.545065) (xy 69.345293 10.641756) (xy 69.427521 10.709238) (xy 69.42752 16.171) (xy 69.423844 16.208323) + (xy 69.42752 16.245645) (xy 69.42752 16.245655) (xy 69.438517 16.357308) (xy 69.471281 16.465318) (xy 69.481974 16.500569) + (xy 69.552546 16.632599) (xy 69.588069 16.675883) (xy 69.612063 16.70512) (xy 69.552519 17.004467) (xy 69.552519 17.317177) + (xy 69.613526 17.623879) (xy 69.733195 17.912785) (xy 69.906927 18.172794) (xy 70.128047 18.393914) (xy 70.388056 18.567646) + (xy 70.676962 18.687315) (xy 70.983664 18.748322) (xy 71.296374 18.748322) (xy 71.603076 18.687315) (xy 71.874668 18.574818) + (xy 71.888033 18.620302) (xy 71.946032 18.731127) (xy 72.024538 18.828507) (xy 72.120533 18.9087) (xy 72.230329 18.968624) + (xy 73.058784 19.320282) (xy 73.17816 19.357636) (xy 73.30253 19.370982) (xy 73.427114 19.359808) (xy 73.547124 19.324544) + (xy 73.657949 19.266545) (xy 73.755329 19.188039) (xy 73.835522 19.092044) (xy 73.895446 18.982248) (xy 74.364323 17.877642) + (xy 74.401677 17.758266) (xy 74.415023 17.633896) (xy 74.403849 17.509312) (xy 74.368585 17.389302) (xy 74.310586 17.278477) + (xy 74.23208 17.181097) (xy 74.136085 17.100904) (xy 74.026289 17.04098) (xy 73.197834 16.689322) (xy 73.078458 16.651968) + (xy 72.954088 16.638622) (xy 72.846834 16.648242) (xy 72.82433 16.620821) (xy 72.708605 16.525848) (xy 72.576576 16.455276) + (xy 72.56456 16.451631) (xy 72.546843 16.408859) (xy 72.373111 16.14885) (xy 72.151991 15.92773) (xy 71.891982 15.753998) + (xy 71.603076 15.634329) (xy 71.296374 15.573322) (xy 70.983664 15.573322) (xy 70.94752 15.580512) (xy 70.94752 13.186336) + (xy 70.977427 13.216243) (xy 71.220795 13.378857) (xy 71.491212 13.490867) (xy 71.778285 13.547969) (xy 72.070981 13.547969) + (xy 72.358054 13.490867) (xy 72.628471 13.378857) (xy 72.871839 13.216243) (xy 73.078807 13.009275) (xy 73.241421 12.765907) + (xy 73.353431 12.49549) (xy 73.402656 12.248017) (xy 73.463376 12.273168) (xy 73.875853 12.355215) (xy 74.296411 12.355215) + (xy 74.64385 12.286105) (xy 74.558798 12.371157) (xy 74.271097 12.801732) (xy 74.072925 13.280161) (xy 73.971898 13.788059) + (xy 73.971898 14.305907) (xy 74.072925 14.813805) (xy 74.271097 15.292234) (xy 74.558798 15.722809) (xy 74.924972 16.088983) + (xy 75.355547 16.376684) (xy 75.833976 16.574856) (xy 76.341874 16.675883) (xy 76.859722 16.675883) (xy 77.36762 16.574856) + (xy 77.846049 16.376684) (xy 78.276624 16.088983) (xy 78.480058 15.885549) (xy 79.791063 15.885549) (xy 79.791063 16.178245) + (xy 79.848165 16.465318) (xy 79.960175 16.735735) (xy 80.122789 16.979103) (xy 80.329757 17.186071) (xy 80.573125 17.348685) + (xy 80.843542 17.460695) (xy 81.130615 17.517797) (xy 81.423311 17.517797) (xy 81.710384 17.460695) (xy 81.980801 17.348685) + (xy 82.224169 17.186071) (xy 82.431137 16.979103) (xy 82.593751 16.735735) (xy 82.705761 16.465318) (xy 82.762863 16.178245) + (xy 82.762863 15.885549) (xy 82.705761 15.598476) (xy 82.593751 15.328059) (xy 82.431137 15.084691) (xy 82.224169 14.877723) + (xy 81.980801 14.715109) (xy 81.710384 14.603099) (xy 81.423311 14.545997) (xy 81.130615 14.545997) (xy 80.843542 14.603099) + (xy 80.573125 14.715109) (xy 80.329757 14.877723) (xy 80.122789 15.084691) (xy 79.960175 15.328059) (xy 79.848165 15.598476) + (xy 79.791063 15.885549) (xy 78.480058 15.885549) (xy 78.642798 15.722809) (xy 78.930499 15.292234) (xy 79.128671 14.813805) + (xy 79.229698 14.305907) (xy 79.229698 13.788059) (xy 79.128671 13.280161) (xy 78.930499 12.801732) (xy 78.642798 12.371157) + (xy 78.276624 12.004983) (xy 77.846049 11.717282) (xy 77.36762 11.51911) (xy 76.859722 11.418083) (xy 76.341874 11.418083) + (xy 75.833976 11.51911) (xy 75.767614 11.546598) (xy 75.978144 11.231517) (xy 76.139085 10.842971) (xy 76.221132 10.430494) + (xy 76.221132 10.009936) (xy 76.139085 9.597459) (xy 75.978144 9.208913) (xy 75.744495 8.859232) (xy 75.447115 8.561852) + (xy 75.097434 8.328203) (xy 74.708888 8.167262) (xy 74.296411 8.085215) (xy 73.875853 8.085215) (xy 73.463376 8.167262) + (xy 73.07483 8.328203) (xy 72.98455 8.388526) (xy 72.98455 7.690571) (xy 72.97229 7.566089) (xy 72.93598 7.446391) + (xy 72.877015 7.336077) (xy 72.797663 7.239386) (xy 72.700972 7.160034) (xy 72.590658 7.101069) (xy 72.47096 7.064759) + (xy 72.346478 7.052499) (xy 69.796478 7.052499) (xy 69.671996 7.064759) (xy 69.578096 7.093243) (xy 69.578096 2.175527) + (xy 82.303153 2.175527) (xy 82.314327 2.300111) (xy 82.349591 2.420121) (xy 82.40759 2.530946) (xy 82.486096 2.628326) + (xy 82.582091 2.708519) (xy 82.691887 2.768443) (xy 83.520342 3.120101) (xy 83.639718 3.157455) (xy 83.764088 3.170801) + (xy 83.779391 3.169428) (xy 83.785594 3.238586) (xy 83.820858 3.358596) (xy 83.878857 3.469421) (xy 83.957363 3.566801) + (xy 84.053358 3.646994) (xy 84.163153 3.706918) (xy 85.799811 4.401638) (xy 85.919188 4.438992) (xy 86.043558 4.452338) + (xy 86.168142 4.441164) (xy 86.288152 4.4059) (xy 86.398977 4.347901) (xy 86.496357 4.269395) (xy 86.57655 4.1734) + (xy 86.636474 4.063605) (xy 87.331194 2.426947) (xy 87.368548 2.30757) (xy 87.381894 2.1832) (xy 87.37072 2.058616) + (xy 87.335456 1.938606) (xy 87.277457 1.827781) (xy 87.198951 1.730401) (xy 87.102956 1.650208) (xy 86.993161 1.590284) + (xy 85.356503 0.895564) (xy 85.237126 0.85821) (xy 85.112756 0.844864) (xy 84.988172 0.856038) (xy 84.868162 0.891302) + (xy 84.757337 0.949301) (xy 84.703282 0.992879) (xy 84.693638 0.980916) (xy 84.597643 0.900723) (xy 84.487847 0.840799) + (xy 83.659392 0.489141) (xy 83.540016 0.451787) (xy 83.415646 0.438441) (xy 83.291062 0.449615) (xy 83.171052 0.484879) + (xy 83.060227 0.542878) (xy 82.962847 0.621384) (xy 82.882654 0.717379) (xy 82.82273 0.827175) (xy 82.353853 1.931781) + (xy 82.316499 2.051157) (xy 82.303153 2.175527) (xy 69.578096 2.175527) (xy 69.578096 0.594622) (xy 70.093096 0.594622) + (xy 70.217578 0.582362) (xy 70.337276 0.546052) (xy 70.44759 0.487087) (xy 70.544281 0.407735) (xy 70.623633 0.311044) + (xy 70.682598 0.20073) (xy 70.718908 0.081032) (xy 70.731168 -0.04345) (xy 70.731168 -2.54345) (xy 70.718908 -2.667932) + (xy 70.686364 -2.775216) (xy 76.425783 -8.514634) (xy 76.501898 -8.529774) (xy 76.582298 -8.563077) (xy 76.582298 -7.299021) + (xy 76.594558 -7.174539) (xy 76.630868 -7.054841) (xy 76.689833 -6.944527) (xy 76.769185 -6.847836) (xy 76.851413 -6.780354) + (xy 76.851412 -1.318593) (xy 76.847736 -1.28127) (xy 76.851412 -1.243948) (xy 76.851412 -1.243938) (xy 76.862409 -1.132285) + (xy 76.891098 -1.037708) (xy 76.905866 -0.989024) (xy 76.976438 -0.856994) (xy 77.016283 -0.808444) (xy 77.035955 -0.784473) + (xy 76.976411 -0.485126) (xy 76.976411 -0.172416) (xy 77.037418 0.134286) (xy 77.157087 0.423192) (xy 77.330819 0.683201) + (xy 77.551939 0.904321) (xy 77.811948 1.078053) (xy 78.100854 1.197722) (xy 78.407556 1.258729) (xy 78.720266 1.258729) + (xy 79.026968 1.197722) (xy 79.29856 1.085225) (xy 79.311925 1.130709) (xy 79.369924 1.241534) (xy 79.44843 1.338914) + (xy 79.544425 1.419107) (xy 79.654221 1.479031) (xy 80.482676 1.830689) (xy 80.602052 1.868043) (xy 80.726422 1.881389) + (xy 80.851006 1.870215) (xy 80.971016 1.834951) (xy 81.081841 1.776952) (xy 81.179221 1.698446) (xy 81.259414 1.602451) + (xy 81.319338 1.492655) (xy 81.788215 0.388049) (xy 81.825569 0.268673) (xy 81.838915 0.144303) (xy 81.827741 0.019719) + (xy 81.792477 -0.100291) (xy 81.734478 -0.211116) (xy 81.655972 -0.308496) (xy 81.559977 -0.388689) (xy 81.450181 -0.448613) + (xy 80.621726 -0.800271) (xy 80.50235 -0.837625) (xy 80.37798 -0.850971) (xy 80.270726 -0.841351) (xy 80.248222 -0.868772) + (xy 80.132497 -0.963745) (xy 80.000468 -1.034317) (xy 79.988452 -1.037962) (xy 79.970735 -1.080734) (xy 79.797003 -1.340743) + (xy 79.575883 -1.561863) (xy 79.315874 -1.735595) (xy 79.026968 -1.855264) (xy 78.720266 -1.916271) (xy 78.407556 -1.916271) + (xy 78.371412 -1.909081) (xy 78.371412 -4.303256) (xy 78.401319 -4.273349) (xy 78.644687 -4.110735) (xy 78.915104 -3.998725) + (xy 79.202177 -3.941623) (xy 79.494873 -3.941623) (xy 79.781946 -3.998725) (xy 80.052363 -4.110735) (xy 80.295731 -4.273349) + (xy 80.502699 -4.480317) (xy 80.665313 -4.723685) (xy 80.777323 -4.994102) (xy 80.826548 -5.241575) (xy 80.887268 -5.216424) + (xy 81.299745 -5.134377) (xy 81.720303 -5.134377) (xy 82.067742 -5.203487) (xy 81.98269 -5.118435) (xy 81.694989 -4.68786) + (xy 81.496817 -4.209431) (xy 81.39579 -3.701533) (xy 81.39579 -3.183685) (xy 81.496817 -2.675787) (xy 81.694989 -2.197358) + (xy 81.98269 -1.766783) (xy 82.348864 -1.400609) (xy 82.779439 -1.112908) (xy 83.257868 -0.914736) (xy 83.765766 -0.813709) + (xy 84.283614 -0.813709) (xy 84.791512 -0.914736) (xy 85.269941 -1.112908) (xy 85.700516 -1.400609) (xy 85.90395 -1.604043) + (xy 87.214955 -1.604043) (xy 87.214955 -1.311347) (xy 87.272057 -1.024274) (xy 87.384067 -0.753857) (xy 87.546681 -0.510489) + (xy 87.753649 -0.303521) (xy 87.997017 -0.140907) (xy 88.267434 -0.028897) (xy 88.554507 0.028205) (xy 88.847203 0.028205) + (xy 89.134276 -0.028897) (xy 89.404693 -0.140907) (xy 89.648061 -0.303521) (xy 89.855029 -0.510489) (xy 90.017643 -0.753857) + (xy 90.129653 -1.024274) (xy 90.186755 -1.311347) (xy 90.186755 -1.604043) (xy 90.129653 -1.891116) (xy 90.017643 -2.161533) + (xy 89.855029 -2.404901) (xy 89.648061 -2.611869) (xy 89.404693 -2.774483) (xy 89.134276 -2.886493) (xy 88.847203 -2.943595) + (xy 88.554507 -2.943595) (xy 88.267434 -2.886493) (xy 87.997017 -2.774483) (xy 87.753649 -2.611869) (xy 87.546681 -2.404901) + (xy 87.384067 -2.161533) (xy 87.272057 -1.891116) (xy 87.214955 -1.604043) (xy 85.90395 -1.604043) (xy 86.06669 -1.766783) + (xy 86.354391 -2.197358) (xy 86.552563 -2.675787) (xy 86.65359 -3.183685) (xy 86.65359 -3.701533) (xy 86.552563 -4.209431) + (xy 86.354391 -4.68786) (xy 86.06669 -5.118435) (xy 85.700516 -5.484609) (xy 85.269941 -5.77231) (xy 84.791512 -5.970482) + (xy 84.283614 -6.071509) (xy 83.765766 -6.071509) (xy 83.257868 -5.970482) (xy 83.191506 -5.942994) (xy 83.402036 -6.258075) + (xy 83.562977 -6.646621) (xy 83.645024 -7.059098) (xy 83.645024 -7.479656) (xy 83.562977 -7.892133) (xy 83.402036 -8.280679) + (xy 83.168387 -8.63036) (xy 82.871007 -8.92774) (xy 82.521326 -9.161389) (xy 82.13278 -9.32233) (xy 81.720303 -9.404377) + (xy 81.299745 -9.404377) (xy 80.887268 -9.32233) (xy 80.498722 -9.161389) (xy 80.408442 -9.101066) (xy 80.408442 -9.799021) + (xy 80.396182 -9.923503) (xy 80.359872 -10.043201) (xy 80.300907 -10.153515) (xy 80.221555 -10.250206) (xy 80.124864 -10.329558) + (xy 80.01455 -10.388523) (xy 79.894852 -10.424833) (xy 79.77037 -10.437093) (xy 77.22037 -10.437093) (xy 77.095888 -10.424833) + (xy 77.001987 -10.396348) (xy 77.001987 -15.314065) (xy 89.727044 -15.314065) (xy 89.738218 -15.189481) (xy 89.773482 -15.069471) + (xy 89.831481 -14.958646) (xy 89.909987 -14.861266) (xy 90.005982 -14.781073) (xy 90.115778 -14.721149) (xy 90.944233 -14.369491) + (xy 91.063609 -14.332137) (xy 91.187979 -14.318791) (xy 91.203282 -14.320164) (xy 91.209485 -14.251006) (xy 91.244749 -14.130996) + (xy 91.302748 -14.020171) (xy 91.381254 -13.922791) (xy 91.477249 -13.842598) (xy 91.587044 -13.782674) (xy 93.223702 -13.087954) + (xy 93.343079 -13.0506) (xy 93.467449 -13.037254) (xy 93.592033 -13.048428) (xy 93.712043 -13.083692) (xy 93.822868 -13.141691) + (xy 93.920248 -13.220197) (xy 94.000441 -13.316192) (xy 94.060365 -13.425987) (xy 94.755085 -15.062645) (xy 94.792439 -15.182022) + (xy 94.805785 -15.306392) (xy 94.794611 -15.430976) (xy 94.759347 -15.550986) (xy 94.701348 -15.661811) (xy 94.622842 -15.759191) + (xy 94.526847 -15.839384) (xy 94.417052 -15.899308) (xy 92.780394 -16.594028) (xy 92.661017 -16.631382) (xy 92.536647 -16.644728) + (xy 92.412063 -16.633554) (xy 92.292053 -16.59829) (xy 92.181228 -16.540291) (xy 92.127173 -16.496713) (xy 92.117529 -16.508676) + (xy 92.021534 -16.588869) (xy 91.911738 -16.648793) (xy 91.083283 -17.000451) (xy 90.963907 -17.037805) (xy 90.839537 -17.051151) + (xy 90.714953 -17.039977) (xy 90.594943 -17.004713) (xy 90.484118 -16.946714) (xy 90.386738 -16.868208) (xy 90.306545 -16.772213) + (xy 90.246621 -16.662417) (xy 89.777744 -15.557811) (xy 89.74039 -15.438435) (xy 89.727044 -15.314065) (xy 77.001987 -15.314065) + (xy 77.001987 -16.89497) (xy 77.516987 -16.89497) (xy 77.641469 -16.90723) (xy 77.761167 -16.94354) (xy 77.871481 -17.002505) + (xy 77.968172 -17.081857) (xy 78.047524 -17.178548) (xy 78.106489 -17.288862) (xy 78.142799 -17.40856) (xy 78.155059 -17.533042) + (xy 78.155059 -19.295258) (xy 84.006189 -25.146387) (xy 84.006189 -24.788613) (xy 84.018449 -24.664131) (xy 84.054759 -24.544433) + (xy 84.113724 -24.434119) (xy 84.193076 -24.337428) (xy 84.289767 -24.258076) (xy 84.400081 -24.199111) (xy 84.519779 -24.162801) + (xy 84.644261 -24.150541) (xy 84.836516 -24.150541) (xy 84.836515 -18.91214) (xy 84.75471 -18.830335) (xy 84.580978 -18.570326) + (xy 84.461309 -18.28142) (xy 84.400302 -17.974718) (xy 84.400302 -17.662008) (xy 84.461309 -17.355306) (xy 84.580978 -17.0664) + (xy 84.75471 -16.806391) (xy 84.97583 -16.585271) (xy 85.235839 -16.411539) (xy 85.524745 -16.29187) (xy 85.831447 -16.230863) + (xy 86.144157 -16.230863) (xy 86.450859 -16.29187) (xy 86.722451 -16.404367) (xy 86.735816 -16.358883) (xy 86.793815 -16.248058) + (xy 86.872321 -16.150678) (xy 86.968316 -16.070485) (xy 87.078112 -16.010561) (xy 87.906567 -15.658903) (xy 88.025943 -15.621549) + (xy 88.150313 -15.608203) (xy 88.274897 -15.619377) (xy 88.394907 -15.654641) (xy 88.505732 -15.71264) (xy 88.603112 -15.791146) + (xy 88.683305 -15.887141) (xy 88.743229 -15.996937) (xy 89.212106 -17.101543) (xy 89.24946 -17.220919) (xy 89.262806 -17.345289) + (xy 89.251632 -17.469873) (xy 89.216368 -17.589883) (xy 89.158369 -17.700708) (xy 89.079863 -17.798088) (xy 88.983868 -17.878281) + (xy 88.874072 -17.938205) (xy 88.045617 -18.289863) (xy 87.926241 -18.327217) (xy 87.801871 -18.340563) (xy 87.694617 -18.330943) + (xy 87.672113 -18.358364) (xy 87.556388 -18.453337) (xy 87.424359 -18.523909) (xy 87.412343 -18.527554) (xy 87.394626 -18.570326) + (xy 87.220894 -18.830335) (xy 86.999774 -19.051455) (xy 86.739765 -19.225187) (xy 86.450859 -19.344856) (xy 86.356515 -19.363622) + (xy 86.356515 -21.484832) (xy 86.626068 -21.431215) (xy 86.918764 -21.431215) (xy 87.205837 -21.488317) (xy 87.476254 -21.600327) + (xy 87.719622 -21.762941) (xy 87.92659 -21.969909) (xy 88.089204 -22.213277) (xy 88.201214 -22.483694) (xy 88.250439 -22.731167) + (xy 88.311159 -22.706016) (xy 88.723636 -22.623969) (xy 89.144194 -22.623969) (xy 89.491633 -22.693079) (xy 89.406581 -22.608027) + (xy 89.11888 -22.177452) (xy 88.920708 -21.699023) (xy 88.819681 -21.191125) (xy 88.819681 -20.673277) (xy 88.920708 -20.165379) + (xy 89.11888 -19.68695) (xy 89.406581 -19.256375) (xy 89.772755 -18.890201) (xy 90.20333 -18.6025) (xy 90.681759 -18.404328) + (xy 91.189657 -18.303301) (xy 91.707505 -18.303301) (xy 92.215403 -18.404328) (xy 92.693832 -18.6025) (xy 93.124407 -18.890201) + (xy 93.327841 -19.093635) (xy 94.638846 -19.093635) (xy 94.638846 -18.800939) (xy 94.695948 -18.513866) (xy 94.807958 -18.243449) + (xy 94.970572 -18.000081) (xy 95.17754 -17.793113) (xy 95.420908 -17.630499) (xy 95.691325 -17.518489) (xy 95.978398 -17.461387) + (xy 96.271094 -17.461387) (xy 96.558167 -17.518489) (xy 96.828584 -17.630499) (xy 97.071952 -17.793113) (xy 97.27892 -18.000081) + (xy 97.441534 -18.243449) (xy 97.553544 -18.513866) (xy 97.610646 -18.800939) (xy 97.610646 -19.093635) (xy 97.553544 -19.380708) + (xy 97.441534 -19.651125) (xy 97.27892 -19.894493) (xy 97.071952 -20.101461) (xy 96.828584 -20.264075) (xy 96.558167 -20.376085) + (xy 96.271094 -20.433187) (xy 95.978398 -20.433187) (xy 95.691325 -20.376085) (xy 95.420908 -20.264075) (xy 95.17754 -20.101461) + (xy 94.970572 -19.894493) (xy 94.807958 -19.651125) (xy 94.695948 -19.380708) (xy 94.638846 -19.093635) (xy 93.327841 -19.093635) + (xy 93.490581 -19.256375) (xy 93.778282 -19.68695) (xy 93.976454 -20.165379) (xy 94.077481 -20.673277) (xy 94.077481 -21.191125) + (xy 93.976454 -21.699023) (xy 93.778282 -22.177452) (xy 93.490581 -22.608027) (xy 93.124407 -22.974201) (xy 92.693832 -23.261902) + (xy 92.215403 -23.460074) (xy 91.707505 -23.561101) (xy 91.189657 -23.561101) (xy 90.681759 -23.460074) (xy 90.615397 -23.432586) + (xy 90.825927 -23.747667) (xy 90.986868 -24.136213) (xy 91.068915 -24.54869) (xy 91.068915 -24.969248) (xy 90.986868 -25.381725) + (xy 90.825927 -25.770271) (xy 90.592278 -26.119952) (xy 90.294898 -26.417332) (xy 89.945217 -26.650981) (xy 89.556671 -26.811922) + (xy 89.144194 -26.893969) (xy 88.723636 -26.893969) (xy 88.311159 -26.811922) (xy 87.922613 -26.650981) (xy 87.832333 -26.590658) + (xy 87.832333 -27.288613) (xy 87.820073 -27.413095) (xy 87.783763 -27.532793) (xy 87.724798 -27.643107) (xy 87.645446 -27.739798) + (xy 87.548755 -27.81915) (xy 87.438441 -27.878115) (xy 87.318743 -27.914425) (xy 87.194261 -27.926685) (xy 84.644261 -27.926685) + (xy 84.519779 -27.914425) (xy 84.425879 -27.885941) (xy 84.425879 -34.384563) (xy 84.940879 -34.384563) (xy 85.065361 -34.396823) + (xy 85.185059 -34.433133) (xy 85.295373 -34.492098) (xy 85.392064 -34.57145) (xy 85.471416 -34.668141) (xy 85.530381 -34.778455) + (xy 85.566691 -34.898153) (xy 85.578951 -35.022635) (xy 85.578951 -37.522635) (xy 85.566691 -37.647117) (xy 85.530381 -37.766815) + (xy 85.471416 -37.877129) (xy 85.392064 -37.97382) (xy 85.295373 -38.053172) (xy 85.185059 -38.112137) (xy 85.065361 -38.148447) + (xy 84.940879 -38.160707) (xy 82.684274 -38.160707) (xy 82.679325 -38.185586) (xy 82.518384 -38.574132) (xy 82.284735 -38.923813) + (xy 81.987355 -39.221193) (xy 81.637674 -39.454842) (xy 81.249128 -39.615783) (xy 80.836651 -39.69783) (xy 80.416093 -39.69783) + (xy 80.003616 -39.615783) (xy 79.61507 -39.454842) (xy 79.265389 -39.221193) (xy 78.968009 -38.923813) (xy 78.73436 -38.574132) + (xy 78.573419 -38.185586) (xy 78.491372 -37.773109) (xy 78.491372 -37.352551) (xy 78.573419 -36.940074) (xy 78.73436 -36.551528) + (xy 78.968009 -36.201847) (xy 79.265389 -35.904467) (xy 79.61507 -35.670818) (xy 80.003616 -35.509877) (xy 80.416093 -35.42783) + (xy 80.836651 -35.42783) (xy 81.249128 -35.509877) (xy 81.637674 -35.670818) (xy 81.752807 -35.747747) (xy 81.752807 -35.022635) + (xy 81.765067 -34.898153) (xy 81.801377 -34.778455) (xy 81.860342 -34.668141) (xy 81.939694 -34.57145) (xy 82.036385 -34.492098) + (xy 82.146699 -34.433133) (xy 82.266397 -34.396823) (xy 82.390879 -34.384563) (xy 82.90588 -34.384563) (xy 82.905879 -26.195681) + (xy 77.381313 -20.671114) (xy 75.260382 -20.671114) (xy 75.255433 -20.695993) (xy 75.094492 -21.084539) (xy 74.860843 -21.43422) + (xy 74.563463 -21.7316) (xy 74.213782 -21.965249) (xy 73.825236 -22.12619) (xy 73.412759 -22.208237) (xy 72.992201 -22.208237) + (xy 72.579724 -22.12619) (xy 72.191178 -21.965249) (xy 71.841497 -21.7316) (xy 71.544117 -21.43422) (xy 71.310468 -21.084539) + (xy 71.149527 -20.695993) (xy 71.06748 -20.283516) (xy 71.06748 -19.862958) (xy 71.149527 -19.450481) (xy 71.310468 -19.061935) + (xy 71.544117 -18.712254) (xy 71.841497 -18.414874) (xy 72.191178 -18.181225) (xy 72.579724 -18.020284) (xy 72.992201 -17.938237) + (xy 73.412759 -17.938237) (xy 73.825236 -18.020284) (xy 74.213782 -18.181225) (xy 74.328915 -18.258154) (xy 74.328915 -17.533042) + (xy 74.341175 -17.40856) (xy 74.377485 -17.288862) (xy 74.43645 -17.178548) (xy 74.515802 -17.081857) (xy 74.612493 -17.002505) + (xy 74.722807 -16.94354) (xy 74.842505 -16.90723) (xy 74.966987 -16.89497) (xy 75.481988 -16.89497) (xy 75.481987 -10.270698) + (xy 75.396063 -10.184774) (xy 75.282795 -10.015256) (xy 75.204774 -9.826898) (xy 75.165 -9.626939) (xy 75.165 -9.423061) + (xy 75.168253 -9.406708) (xy 68.943068 -3.181522) (xy 67.836491 -3.181522) (xy 67.831542 -3.206401) (xy 67.670601 -3.594947) + (xy 67.436952 -3.944628) (xy 67.139572 -4.242008) (xy 66.789891 -4.475657) (xy 66.401345 -4.636598) (xy 65.988868 -4.718645) + (xy 65.56831 -4.718645) (xy 65.155833 -4.636598) (xy 64.767287 -4.475657) (xy 64.417606 -4.242008) (xy 64.120226 -3.944628) + (xy 63.886577 -3.594947) (xy 63.725636 -3.206401) (xy 63.643589 -2.793924) (xy 63.643589 -2.373366) (xy 63.725636 -1.960889) + (xy 63.886577 -1.572343) (xy 64.120226 -1.222662) (xy 64.417606 -0.925282) (xy 64.767287 -0.691633) (xy 65.155833 -0.530692) + (xy 65.56831 -0.448645) (xy 65.988868 -0.448645) (xy 66.401345 -0.530692) (xy 66.789891 -0.691633) (xy 66.905024 -0.768562) + (xy 66.905024 -0.04345) (xy 66.917284 0.081032) (xy 66.953594 0.20073) (xy 67.012559 0.311044) (xy 67.091911 0.407735) + (xy 67.188602 0.487087) (xy 67.298916 0.546052) (xy 67.418614 0.582362) (xy 67.543096 0.594622) (xy 68.058097 0.594622) + (xy 68.058096 8.457448) (xy 62.207475 14.30807) (xy 60.412599 14.30807) (xy 60.40765 14.283191) (xy 60.246709 13.894645) + (xy 60.01306 13.544964) (xy 59.71568 13.247584) (xy 59.365999 13.013935) (xy 58.977453 12.852994) (xy 58.564976 12.770947) + (xy 58.144418 12.770947) (xy 57.731941 12.852994) (xy 57.343395 13.013935) (xy 56.993714 13.247584) (xy 56.696334 13.544964) + (xy 56.462685 13.894645) (xy 56.301744 14.283191) (xy 56.219697 14.695668) (xy 53.652035 14.695668) (xy 53.652035 14.552608) + (xy 53.569988 14.140131) (xy 53.409047 13.751585) (xy 53.175398 13.401904) (xy 52.878018 13.104524) (xy 52.528337 12.870875) + (xy 52.139791 12.709934) (xy 51.727314 12.627887) (xy 51.306756 12.627887) (xy 50.894279 12.709934) (xy 50.505733 12.870875) + (xy 50.415453 12.931198) (xy 50.415453 12.233243) (xy 50.403193 12.108761) (xy 50.366883 11.989063) (xy 50.307918 11.878749) + (xy 50.228566 11.782058) (xy 50.131875 11.702706) (xy 50.021561 11.643741) (xy 49.901863 11.607431) (xy 49.777381 11.595171) + (xy 47.227381 11.595171) (xy 47.102899 11.607431) (xy 46.983201 11.643741) (xy 46.872887 11.702706) (xy 46.776196 11.782058) + (xy 46.696844 11.878749) (xy 46.637879 11.989063) (xy 46.601569 12.108761) (xy 46.589309 12.233243) (xy 41.848226 12.233243) + (xy 41.852969 12.189049) (xy 41.841795 12.064465) (xy 41.806531 11.944455) (xy 41.748532 11.83363) (xy 41.670026 11.73625) + (xy 41.574031 11.656057) (xy 41.464236 11.596133) (xy 39.827578 10.901413) (xy 39.708201 10.864059) (xy 39.583831 10.850713) + (xy 39.459247 10.861887) (xy 39.339237 10.897151) (xy 39.228412 10.95515) (xy 39.174357 10.998728) (xy 39.164713 10.986765) + (xy 39.068718 10.906572) (xy 38.958922 10.846648) (xy 38.130467 10.49499) (xy 38.011091 10.457636) (xy 37.886721 10.44429) + (xy 37.762137 10.455464) (xy 37.642127 10.490728) (xy 37.531302 10.548727) (xy 37.433922 10.627233) (xy 37.353729 10.723228) + (xy 37.293805 10.833024) (xy 36.824928 11.93763) (xy 36.787574 12.057006) (xy 36.774228 12.181376) (xy 4.921583 12.181376) + (xy -1.725144 9.360008) (xy 17.33098 9.360008) (xy 17.342154 9.484592) (xy 17.377418 9.604602) (xy 17.435417 9.715427) + (xy 17.513923 9.812807) (xy 17.609918 9.893) (xy 17.719714 9.952924) (xy 18.548169 10.304582) (xy 18.667545 10.341936) + (xy 18.791915 10.355282) (xy 18.807218 10.353909) (xy 18.813421 10.423067) (xy 18.848685 10.543077) (xy 18.906684 10.653902) + (xy 18.98519 10.751282) (xy 19.081185 10.831475) (xy 19.19098 10.891399) (xy 20.827638 11.586119) (xy 20.947015 11.623473) + (xy 21.071385 11.636819) (xy 21.195969 11.625645) (xy 21.315979 11.590381) (xy 21.426804 11.532382) (xy 21.524184 11.453876) + (xy 21.604377 11.357881) (xy 21.664301 11.248086) (xy 22.359021 9.611428) (xy 22.396375 9.492051) (xy 22.409721 9.367681) + (xy 22.398547 9.243097) (xy 22.363283 9.123087) (xy 22.305284 9.012262) (xy 22.226778 8.914882) (xy 22.130783 8.834689) + (xy 22.020988 8.774765) (xy 20.38433 8.080045) (xy 20.264953 8.042691) (xy 20.140583 8.029345) (xy 20.015999 8.040519) + (xy 19.895989 8.075783) (xy 19.785164 8.133782) (xy 19.731109 8.17736) (xy 19.721465 8.165397) (xy 19.62547 8.085204) + (xy 19.515674 8.02528) (xy 18.687219 7.673622) (xy 18.567843 7.636268) (xy 18.443473 7.622922) (xy 18.318889 7.634096) + (xy 18.198879 7.66936) (xy 18.088054 7.727359) (xy 17.990674 7.805865) (xy 17.910481 7.90186) (xy 17.850557 8.011656) + (xy 17.38168 9.116262) (xy 17.344326 9.235638) (xy 17.33098 9.360008) (xy -1.725144 9.360008) (xy -10.540443 5.618136) + (xy -1.721537 5.618136) (xy -1.710363 5.74272) (xy -1.675099 5.86273) (xy -1.6171 5.973555) (xy -1.538594 6.070935) + (xy -1.442599 6.151128) (xy -1.332803 6.211052) (xy -0.504348 6.56271) (xy -0.384972 6.600064) (xy -0.260602 6.61341) + (xy -0.245299 6.612037) (xy -0.239096 6.681195) (xy -0.203832 6.801205) (xy -0.145833 6.91203) (xy -0.067327 7.00941) + (xy 0.028668 7.089603) (xy 0.138463 7.149527) (xy 1.775121 7.844247) (xy 1.894498 7.881601) (xy 2.018868 7.894947) + (xy 2.143452 7.883773) (xy 2.263462 7.848509) (xy 2.374287 7.79051) (xy 2.471667 7.712004) (xy 2.55186 7.616009) + (xy 2.611784 7.506214) (xy 3.306504 5.869556) (xy 3.343858 5.750179) (xy 3.357204 5.625809) (xy 3.34603 5.501225) + (xy 3.310766 5.381215) (xy 3.252767 5.27039) (xy 3.174261 5.17301) (xy 3.078266 5.092817) (xy 2.968471 5.032893) + (xy 1.331813 4.338173) (xy 1.212436 4.300819) (xy 1.088066 4.287473) (xy 0.963482 4.298647) (xy 0.843472 4.333911) + (xy 0.732647 4.39191) (xy 0.678592 4.435488) (xy 0.668948 4.423525) (xy 0.572953 4.343332) (xy 0.463157 4.283408) + (xy -0.365298 3.93175) (xy -0.484674 3.894396) (xy -0.609044 3.88105) (xy -0.733628 3.892224) (xy -0.853638 3.927488) + (xy -0.964463 3.985487) (xy -1.061843 4.063993) (xy -1.142036 4.159988) (xy -1.20196 4.269784) (xy -1.670837 5.37439) + (xy -1.708191 5.493766) (xy -1.721537 5.618136) (xy -10.540443 5.618136) (xy -12.181384 4.921598) (xy -7.442392 -6.242766) + (xy -7.442392 -3.856412) (xy -7.430132 -3.73193) (xy -7.393822 -3.612232) (xy -7.334857 -3.501918) (xy -7.255505 -3.405227) + (xy -7.173278 -3.337745) (xy -7.173277 2.124007) (xy -7.176954 2.161339) (xy -7.173277 2.198672) (xy -7.16228 2.310325) + (xy -7.15304 2.340785) (xy -7.118824 2.453585) (xy -7.048252 2.585615) (xy -6.99656 2.648601) (xy -6.988735 2.658136) + (xy -7.048279 2.957483) (xy -7.048279 3.270193) (xy -6.987272 3.576895) (xy -6.867603 3.865801) (xy -6.693871 4.12581) + (xy -6.472751 4.34693) (xy -6.212742 4.520662) (xy -5.923836 4.640331) (xy -5.617134 4.701338) (xy -5.304424 4.701338) + (xy -4.997722 4.640331) (xy -4.72613 4.527834) (xy -4.712765 4.573318) (xy -4.654766 4.684143) (xy -4.57626 4.781523) + (xy -4.480265 4.861716) (xy -4.370469 4.92164) (xy -3.542014 5.273298) (xy -3.422638 5.310652) (xy -3.298268 5.323998) + (xy -3.173684 5.312824) (xy -3.053674 5.27756) (xy -2.942849 5.219561) (xy -2.845469 5.141055) (xy -2.765276 5.04506) + (xy -2.705352 4.935264) (xy -2.236475 3.830658) (xy -2.199121 3.711282) (xy -2.185775 3.586912) (xy -2.196949 3.462328) + (xy -2.232213 3.342318) (xy -2.290212 3.231493) (xy -2.368718 3.134113) (xy -2.464713 3.05392) (xy -2.574509 2.993996) + (xy -3.402964 2.642338) (xy -3.52234 2.604984) (xy -3.64671 2.591638) (xy -3.753964 2.601258) (xy -3.776468 2.573837) + (xy -3.892193 2.478864) (xy -4.024222 2.408292) (xy -4.036238 2.404647) (xy -4.053955 2.361875) (xy -4.227687 2.101866) + (xy -4.448807 1.880746) (xy -4.708816 1.707014) (xy -4.997722 1.587345) (xy -5.304424 1.526338) (xy -5.617134 1.526338) + (xy -5.653278 1.533528) (xy -5.653278 -0.860647) (xy -5.623371 -0.83074) (xy -5.380003 -0.668126) (xy -5.109586 -0.556116) + (xy -4.822513 -0.499014) (xy -4.529817 -0.499014) (xy -4.242744 -0.556116) (xy -3.972327 -0.668126) (xy -3.728959 -0.83074) + (xy -3.521991 -1.037708) (xy -3.359377 -1.281076) (xy -3.247367 -1.551493) (xy -3.198142 -1.798966) (xy -3.137422 -1.773815) + (xy -2.724945 -1.691768) (xy -2.304387 -1.691768) (xy -1.956948 -1.760878) (xy -2.042 -1.675826) (xy -2.329701 -1.245251) + (xy -2.527873 -0.766822) (xy -2.6289 -0.258924) (xy -2.6289 0.258924) (xy -2.527873 0.766822) (xy -2.329701 1.245251) + (xy -2.042 1.675826) (xy -1.675826 2.042) (xy -1.245251 2.329701) (xy -0.766822 2.527873) (xy -0.258924 2.6289) + (xy 0.258924 2.6289) (xy 0.766822 2.527873) (xy 1.245251 2.329701) (xy 1.675826 2.042) (xy 1.87926 1.838566) + (xy 3.190265 1.838566) (xy 3.190265 2.131262) (xy 3.247367 2.418335) (xy 3.359377 2.688752) (xy 3.521991 2.93212) + (xy 3.728959 3.139088) (xy 3.972327 3.301702) (xy 4.242744 3.413712) (xy 4.529817 3.470814) (xy 4.822513 3.470814) + (xy 5.109586 3.413712) (xy 5.380003 3.301702) (xy 5.623371 3.139088) (xy 5.830339 2.93212) (xy 5.992953 2.688752) + (xy 6.104963 2.418335) (xy 6.162065 2.131262) (xy 6.162065 1.838566) (xy 6.104963 1.551493) (xy 5.992953 1.281076) + (xy 5.830339 1.037708) (xy 5.623371 0.83074) (xy 5.380003 0.668126) (xy 5.109586 0.556116) (xy 4.822513 0.499014) + (xy 4.529817 0.499014) (xy 4.242744 0.556116) (xy 3.972327 0.668126) (xy 3.728959 0.83074) (xy 3.521991 1.037708) + (xy 3.359377 1.281076) (xy 3.247367 1.551493) (xy 3.190265 1.838566) (xy 1.87926 1.838566) (xy 2.042 1.675826) + (xy 2.329701 1.245251) (xy 2.527873 0.766822) (xy 2.6289 0.258924) (xy 2.6289 -0.258924) (xy 2.527873 -0.766822) + (xy 2.329701 -1.245251) (xy 2.042 -1.675826) (xy 1.675826 -2.042) (xy 1.245251 -2.329701) (xy 0.766822 -2.527873) + (xy 0.258924 -2.6289) (xy -0.258924 -2.6289) (xy -0.766822 -2.527873) (xy -0.833184 -2.500385) (xy -0.622654 -2.815466) + (xy -0.461713 -3.204012) (xy -0.379666 -3.616489) (xy -0.379666 -3.893987) (xy 2.187996 -3.893987) (xy 2.187996 -3.473429) + (xy 2.270043 -3.060952) (xy 2.430984 -2.672406) (xy 2.664633 -2.322725) (xy 2.962013 -2.025345) (xy 3.311694 -1.791696) + (xy 3.70024 -1.630755) (xy 4.112717 -1.548708) (xy 4.533275 -1.548708) (xy 4.945752 -1.630755) (xy 5.334298 -1.791696) + (xy 5.449431 -1.868625) (xy 5.449431 -1.143513) (xy 5.461691 -1.019031) (xy 5.498001 -0.899333) (xy 5.556966 -0.789019) + (xy 5.636318 -0.692328) (xy 5.733009 -0.612976) (xy 5.843323 -0.554011) (xy 5.963021 -0.517701) (xy 6.087503 -0.505441) + (xy 8.637503 -0.505441) (xy 8.761985 -0.517701) (xy 8.881683 -0.554011) (xy 8.991997 -0.612976) (xy 9.088688 -0.692328) + (xy 9.16804 -0.789019) (xy 9.227005 -0.899333) (xy 9.263315 -1.019031) (xy 9.275575 -1.143513) (xy 9.275575 -2.61454) + (xy 11.610125 -2.61454) (xy 11.610125 -0.11454) (xy 11.622385 0.009942) (xy 11.658695 0.12964) (xy 11.71766 0.239954) + (xy 11.797012 0.336645) (xy 11.893703 0.415997) (xy 12.004017 0.474962) (xy 12.123715 0.511272) (xy 12.248197 0.523532) + (xy 12.440451 0.523532) (xy 12.440452 5.761932) (xy 12.358646 5.843738) (xy 12.184914 6.103747) (xy 12.065245 6.392653) + (xy 12.004238 6.699355) (xy 12.004238 7.012065) (xy 12.065245 7.318767) (xy 12.184914 7.607673) (xy 12.358646 7.867682) + (xy 12.579766 8.088802) (xy 12.839775 8.262534) (xy 13.128681 8.382203) (xy 13.435383 8.44321) (xy 13.748093 8.44321) + (xy 14.054795 8.382203) (xy 14.326387 8.269706) (xy 14.339752 8.31519) (xy 14.397751 8.426015) (xy 14.476257 8.523395) + (xy 14.572252 8.603588) (xy 14.682048 8.663512) (xy 15.510503 9.01517) (xy 15.629879 9.052524) (xy 15.754249 9.06587) + (xy 15.878833 9.054696) (xy 15.998843 9.019432) (xy 16.109668 8.961433) (xy 16.207048 8.882927) (xy 16.287241 8.786932) + (xy 16.347165 8.677136) (xy 16.816042 7.57253) (xy 16.853396 7.453154) (xy 16.866742 7.328784) (xy 16.855568 7.2042) + (xy 16.820304 7.08419) (xy 16.762305 6.973365) (xy 16.683799 6.875985) (xy 16.587804 6.795792) (xy 16.478008 6.735868) + (xy 15.649553 6.38421) (xy 15.530177 6.346856) (xy 15.405807 6.33351) (xy 15.298553 6.34313) (xy 15.276049 6.315709) + (xy 15.160324 6.220736) (xy 15.028295 6.150164) (xy 15.016279 6.146519) (xy 14.998562 6.103747) (xy 14.82483 5.843738) + (xy 14.60371 5.622618) (xy 14.343701 5.448886) (xy 14.054795 5.329217) (xy 13.960451 5.310451) (xy 13.960451 3.189241) + (xy 14.230004 3.242858) (xy 14.5227 3.242858) (xy 14.809773 3.185756) (xy 15.08019 3.073746) (xy 15.323558 2.911132) + (xy 15.530526 2.704164) (xy 15.69314 2.460796) (xy 15.80515 2.190379) (xy 15.854375 1.942906) (xy 15.915095 1.968057) + (xy 16.327572 2.050104) (xy 16.74813 2.050104) (xy 17.095569 1.980994) (xy 17.010517 2.066046) (xy 16.722816 2.496621) + (xy 16.524644 2.97505) (xy 16.423617 3.482948) (xy 16.423617 4.000796) (xy 16.524644 4.508694) (xy 16.722816 4.987123) + (xy 17.010517 5.417698) (xy 17.376691 5.783872) (xy 17.807266 6.071573) (xy 18.285695 6.269745) (xy 18.793593 6.370772) + (xy 19.311441 6.370772) (xy 19.819339 6.269745) (xy 20.297768 6.071573) (xy 20.728343 5.783872) (xy 20.931777 5.580438) + (xy 22.242782 5.580438) (xy 22.242782 5.873134) (xy 22.299884 6.160207) (xy 22.411894 6.430624) (xy 22.574508 6.673992) + (xy 22.781476 6.88096) (xy 23.024844 7.043574) (xy 23.295261 7.155584) (xy 23.582334 7.212686) (xy 23.87503 7.212686) + (xy 24.162103 7.155584) (xy 24.43252 7.043574) (xy 24.675888 6.88096) (xy 24.882856 6.673992) (xy 25.04547 6.430624) + (xy 25.15748 6.160207) (xy 25.214582 5.873134) (xy 25.214582 5.580438) (xy 25.15748 5.293365) (xy 25.04547 5.022948) + (xy 24.882856 4.77958) (xy 24.675888 4.572612) (xy 24.43252 4.409998) (xy 24.162103 4.297988) (xy 23.87503 4.240886) + (xy 23.582334 4.240886) (xy 23.295261 4.297988) (xy 23.024844 4.409998) (xy 22.781476 4.572612) (xy 22.574508 4.77958) + (xy 22.411894 5.022948) (xy 22.299884 5.293365) (xy 22.242782 5.580438) (xy 20.931777 5.580438) (xy 21.094517 5.417698) + (xy 21.382218 4.987123) (xy 21.58039 4.508694) (xy 21.681417 4.000796) (xy 21.681417 3.482948) (xy 21.58039 2.97505) + (xy 21.382218 2.496621) (xy 21.094517 2.066046) (xy 20.728343 1.699872) (xy 20.297768 1.412171) (xy 19.819339 1.213999) + (xy 19.311441 1.112972) (xy 18.793593 1.112972) (xy 18.285695 1.213999) (xy 18.219333 1.241487) (xy 18.429863 0.926406) + (xy 18.590804 0.53786) (xy 18.672851 0.125383) (xy 18.672851 -0.152115) (xy 21.240513 -0.152115) (xy 21.240513 0.268443) + (xy 21.32256 0.68092) (xy 21.483501 1.069466) (xy 21.71715 1.419147) (xy 22.01453 1.716527) (xy 22.364211 1.950176) + (xy 22.752757 2.111117) (xy 23.165234 2.193164) (xy 23.585792 2.193164) (xy 23.998269 2.111117) (xy 24.386815 1.950176) + (xy 24.501948 1.873247) (xy 24.501948 2.598359) (xy 24.514208 2.722841) (xy 24.550518 2.842539) (xy 24.609483 2.952853) + (xy 24.688835 3.049544) (xy 24.785526 3.128896) (xy 24.89584 3.187861) (xy 25.015538 3.224171) (xy 25.14002 3.236431) + (xy 27.69002 3.236431) (xy 27.814502 3.224171) (xy 27.9342 3.187861) (xy 28.044514 3.128896) (xy 28.141205 3.049544) + (xy 28.220557 2.952853) (xy 28.279522 2.842539) (xy 28.315832 2.722841) (xy 28.328092 2.598359) (xy 28.328092 0.686709) + (xy 28.807974 0.206827) (xy 31.053373 0.206827) (xy 31.053373 2.706827) (xy 31.065633 2.831309) (xy 31.101943 2.951007) + (xy 31.160908 3.061321) (xy 31.24026 3.158012) (xy 31.322488 3.225494) (xy 31.322487 8.687256) (xy 31.318811 8.724579) + (xy 31.322487 8.761901) (xy 31.322487 8.761911) (xy 31.333484 8.873564) (xy 31.370324 8.99501) (xy 31.376941 9.016825) + (xy 31.447513 9.148855) (xy 31.463409 9.168224) (xy 31.50703 9.221376) (xy 31.447486 9.520723) (xy 31.447486 9.833433) + (xy 31.508493 10.140135) (xy 31.628162 10.429041) (xy 31.801894 10.68905) (xy 32.023014 10.91017) (xy 32.283023 11.083902) + (xy 32.571929 11.203571) (xy 32.878631 11.264578) (xy 33.191341 11.264578) (xy 33.498043 11.203571) (xy 33.769635 11.091074) + (xy 33.783 11.136558) (xy 33.840999 11.247383) (xy 33.919505 11.344763) (xy 34.0155 11.424956) (xy 34.125296 11.48488) + (xy 34.953751 11.836538) (xy 35.073127 11.873892) (xy 35.197497 11.887238) (xy 35.322081 11.876064) (xy 35.442091 11.8408) + (xy 35.552916 11.782801) (xy 35.650296 11.704295) (xy 35.730489 11.6083) (xy 35.790413 11.498504) (xy 36.25929 10.393898) + (xy 36.296644 10.274522) (xy 36.30999 10.150152) (xy 36.298816 10.025568) (xy 36.263552 9.905558) (xy 36.205553 9.794733) + (xy 36.127047 9.697353) (xy 36.031052 9.61716) (xy 35.921256 9.557236) (xy 35.092801 9.205578) (xy 34.973425 9.168224) + (xy 34.849055 9.154878) (xy 34.741801 9.164498) (xy 34.719297 9.137077) (xy 34.603572 9.042104) (xy 34.471543 8.971532) + (xy 34.459527 8.967887) (xy 34.44181 8.925115) (xy 34.268078 8.665106) (xy 34.046958 8.443986) (xy 33.786949 8.270254) + (xy 33.498043 8.150585) (xy 33.191341 8.089578) (xy 32.878631 8.089578) (xy 32.842487 8.096768) (xy 32.842487 5.702592) + (xy 32.872394 5.732499) (xy 33.115762 5.895113) (xy 33.386179 6.007123) (xy 33.673252 6.064225) (xy 33.965948 6.064225) + (xy 34.253021 6.007123) (xy 34.523438 5.895113) (xy 34.766806 5.732499) (xy 34.973774 5.525531) (xy 35.136388 5.282163) + (xy 35.248398 5.011746) (xy 35.297623 4.764273) (xy 35.358343 4.789424) (xy 35.77082 4.871471) (xy 36.191378 4.871471) + (xy 36.538817 4.802361) (xy 36.453765 4.887413) (xy 36.166064 5.317988) (xy 35.967892 5.796417) (xy 35.866865 6.304315) + (xy 35.866865 6.822163) (xy 35.967892 7.330061) (xy 36.166064 7.80849) (xy 36.453765 8.239065) (xy 36.819939 8.605239) + (xy 37.250514 8.89294) (xy 37.728943 9.091112) (xy 38.236841 9.192139) (xy 38.754689 9.192139) (xy 39.262587 9.091112) + (xy 39.741016 8.89294) (xy 40.171591 8.605239) (xy 40.375025 8.401805) (xy 41.68603 8.401805) (xy 41.68603 8.694501) + (xy 41.743132 8.981574) (xy 41.855142 9.251991) (xy 42.017756 9.495359) (xy 42.224724 9.702327) (xy 42.468092 9.864941) + (xy 42.738509 9.976951) (xy 43.025582 10.034053) (xy 43.318278 10.034053) (xy 43.605351 9.976951) (xy 43.875768 9.864941) + (xy 44.119136 9.702327) (xy 44.326104 9.495359) (xy 44.488718 9.251991) (xy 44.600728 8.981574) (xy 44.65783 8.694501) + (xy 44.65783 8.401805) (xy 44.600728 8.114732) (xy 44.488718 7.844315) (xy 44.326104 7.600947) (xy 44.119136 7.393979) + (xy 43.875768 7.231365) (xy 43.605351 7.119355) (xy 43.318278 7.062253) (xy 43.025582 7.062253) (xy 42.738509 7.119355) + (xy 42.468092 7.231365) (xy 42.224724 7.393979) (xy 42.017756 7.600947) (xy 41.855142 7.844315) (xy 41.743132 8.114732) + (xy 41.68603 8.401805) (xy 40.375025 8.401805) (xy 40.537765 8.239065) (xy 40.825466 7.80849) (xy 41.023638 7.330061) + (xy 41.124665 6.822163) (xy 41.124665 6.718199) (xy 59.734056 6.718199) (xy 59.74523 6.842783) (xy 59.780494 6.962793) + (xy 59.838493 7.073618) (xy 59.916999 7.170998) (xy 60.012994 7.251191) (xy 60.12279 7.311115) (xy 60.951245 7.662773) + (xy 61.070621 7.700127) (xy 61.194991 7.713473) (xy 61.210294 7.7121) (xy 61.216497 7.781258) (xy 61.251761 7.901268) + (xy 61.30976 8.012093) (xy 61.388266 8.109473) (xy 61.484261 8.189666) (xy 61.594056 8.24959) (xy 63.230714 8.94431) + (xy 63.350091 8.981664) (xy 63.474461 8.99501) (xy 63.599045 8.983836) (xy 63.719055 8.948572) (xy 63.82988 8.890573) + (xy 63.92726 8.812067) (xy 64.007453 8.716072) (xy 64.067377 8.606277) (xy 64.762097 6.969619) (xy 64.799451 6.850242) + (xy 64.812797 6.725872) (xy 64.801623 6.601288) (xy 64.766359 6.481278) (xy 64.70836 6.370453) (xy 64.629854 6.273073) + (xy 64.533859 6.19288) (xy 64.424064 6.132956) (xy 62.787406 5.438236) (xy 62.668029 5.400882) (xy 62.543659 5.387536) + (xy 62.419075 5.39871) (xy 62.299065 5.433974) (xy 62.18824 5.491973) (xy 62.134185 5.535551) (xy 62.124541 5.523588) + (xy 62.028546 5.443395) (xy 61.91875 5.383471) (xy 61.090295 5.031813) (xy 60.970919 4.994459) (xy 60.846549 4.981113) + (xy 60.721965 4.992287) (xy 60.601955 5.027551) (xy 60.49113 5.08555) (xy 60.39375 5.164056) (xy 60.313557 5.260051) + (xy 60.253633 5.369847) (xy 59.784756 6.474453) (xy 59.747402 6.593829) (xy 59.734056 6.718199) (xy 41.124665 6.718199) + (xy 41.124665 6.304315) (xy 41.023638 5.796417) (xy 40.825466 5.317988) (xy 40.537765 4.887413) (xy 40.171591 4.521239) + (xy 39.741016 4.233538) (xy 39.262587 4.035366) (xy 38.754689 3.934339) (xy 38.236841 3.934339) (xy 37.728943 4.035366) + (xy 37.662581 4.062854) (xy 37.873111 3.747773) (xy 38.034052 3.359227) (xy 38.116099 2.94675) (xy 38.116099 2.669252) + (xy 40.683761 2.669252) (xy 40.683761 3.08981) (xy 40.765808 3.502287) (xy 40.926749 3.890833) (xy 41.160398 4.240514) + (xy 41.457778 4.537894) (xy 41.807459 4.771543) (xy 42.196005 4.932484) (xy 42.608482 5.014531) (xy 43.02904 5.014531) + (xy 43.441517 4.932484) (xy 43.830063 4.771543) (xy 43.945196 4.694614) (xy 43.945196 5.419726) (xy 43.957456 5.544208) + (xy 43.993766 5.663906) (xy 44.052731 5.77422) (xy 44.132083 5.870911) (xy 44.228774 5.950263) (xy 44.339088 6.009228) + (xy 44.458786 6.045538) (xy 44.583268 6.057798) (xy 47.133268 6.057798) (xy 47.25775 6.045538) (xy 47.377448 6.009228) + (xy 47.487762 5.950263) (xy 47.584453 5.870911) (xy 47.663805 5.77422) (xy 47.72277 5.663906) (xy 47.75908 5.544208) + (xy 47.77134 5.419726) (xy 47.77134 3.331455) (xy 53.793163 -2.690367) (xy 53.82216 -2.714164) (xy 53.917133 -2.829889) + (xy 53.987705 -2.961918) (xy 54.013201 -3.045968) (xy 54.013201 -2.756349) (xy 54.025461 -2.631867) (xy 54.061771 -2.512169) + (xy 54.120736 -2.401855) (xy 54.200088 -2.305164) (xy 54.282316 -2.237682) (xy 54.282315 3.224079) (xy 54.278639 3.261402) + (xy 54.282315 3.298724) (xy 54.282315 3.298734) (xy 54.293312 3.410387) (xy 54.32303 3.508355) (xy 54.336769 3.553648) + (xy 54.407341 3.685678) (xy 54.447186 3.734228) (xy 54.466858 3.758199) (xy 54.407314 4.057546) (xy 54.407314 4.370256) + (xy 54.468321 4.676958) (xy 54.58799 4.965864) (xy 54.761722 5.225873) (xy 54.982842 5.446993) (xy 55.242851 5.620725) + (xy 55.531757 5.740394) (xy 55.838459 5.801401) (xy 56.151169 5.801401) (xy 56.457871 5.740394) (xy 56.729463 5.627897) + (xy 56.742828 5.673381) (xy 56.800827 5.784206) (xy 56.879333 5.881586) (xy 56.975328 5.961779) (xy 57.085124 6.021703) + (xy 57.913579 6.373361) (xy 58.032955 6.410715) (xy 58.157325 6.424061) (xy 58.281909 6.412887) (xy 58.401919 6.377623) + (xy 58.512744 6.319624) (xy 58.610124 6.241118) (xy 58.690317 6.145123) (xy 58.750241 6.035327) (xy 59.219118 4.930721) + (xy 59.256472 4.811345) (xy 59.269818 4.686975) (xy 59.258644 4.562391) (xy 59.22338 4.442381) (xy 59.165381 4.331556) + (xy 59.086875 4.234176) (xy 58.99088 4.153983) (xy 58.881084 4.094059) (xy 58.052629 3.742401) (xy 57.933253 3.705047) + (xy 57.808883 3.691701) (xy 57.701629 3.701321) (xy 57.679125 3.6739) (xy 57.5634 3.578927) (xy 57.431371 3.508355) + (xy 57.419355 3.50471) (xy 57.401638 3.461938) (xy 57.227906 3.201929) (xy 57.006786 2.980809) (xy 56.746777 2.807077) + (xy 56.457871 2.687408) (xy 56.151169 2.626401) (xy 55.838459 2.626401) (xy 55.802315 2.633591) (xy 55.802315 0.239416) + (xy 55.832222 0.269323) (xy 56.07559 0.431937) (xy 56.346007 0.543947) (xy 56.63308 0.601049) (xy 56.925776 0.601049) + (xy 57.212849 0.543947) (xy 57.483266 0.431937) (xy 57.726634 0.269323) (xy 57.933602 0.062355) (xy 58.096216 -0.181013) + (xy 58.208226 -0.45143) (xy 58.257451 -0.698903) (xy 58.318171 -0.673752) (xy 58.730648 -0.591705) (xy 59.151206 -0.591705) + (xy 59.498645 -0.660815) (xy 59.413593 -0.575763) (xy 59.125892 -0.145188) (xy 58.92772 0.333241) (xy 58.826693 0.841139) + (xy 58.826693 1.358987) (xy 58.92772 1.866885) (xy 59.125892 2.345314) (xy 59.413593 2.775889) (xy 59.779767 3.142063) + (xy 60.210342 3.429764) (xy 60.688771 3.627936) (xy 61.196669 3.728963) (xy 61.714517 3.728963) (xy 62.222415 3.627936) + (xy 62.700844 3.429764) (xy 63.131419 3.142063) (xy 63.334853 2.938629) (xy 64.645858 2.938629) (xy 64.645858 3.231325) + (xy 64.70296 3.518398) (xy 64.81497 3.788815) (xy 64.977584 4.032183) (xy 65.184552 4.239151) (xy 65.42792 4.401765) + (xy 65.698337 4.513775) (xy 65.98541 4.570877) (xy 66.278106 4.570877) (xy 66.565179 4.513775) (xy 66.835596 4.401765) + (xy 67.078964 4.239151) (xy 67.285932 4.032183) (xy 67.448546 3.788815) (xy 67.560556 3.518398) (xy 67.617658 3.231325) + (xy 67.617658 2.938629) (xy 67.560556 2.651556) (xy 67.448546 2.381139) (xy 67.285932 2.137771) (xy 67.078964 1.930803) + (xy 66.835596 1.768189) (xy 66.565179 1.656179) (xy 66.278106 1.599077) (xy 65.98541 1.599077) (xy 65.698337 1.656179) + (xy 65.42792 1.768189) (xy 65.184552 1.930803) (xy 64.977584 2.137771) (xy 64.81497 2.381139) (xy 64.70296 2.651556) + (xy 64.645858 2.938629) (xy 63.334853 2.938629) (xy 63.497593 2.775889) (xy 63.785294 2.345314) (xy 63.983466 1.866885) + (xy 64.084493 1.358987) (xy 64.084493 0.841139) (xy 63.983466 0.333241) (xy 63.785294 -0.145188) (xy 63.497593 -0.575763) + (xy 63.131419 -0.941937) (xy 62.700844 -1.229638) (xy 62.222415 -1.42781) (xy 61.714517 -1.528837) (xy 61.196669 -1.528837) + (xy 60.688771 -1.42781) (xy 60.622409 -1.400322) (xy 60.832939 -1.715403) (xy 60.99388 -2.103949) (xy 61.075927 -2.516426) + (xy 61.075927 -2.936984) (xy 60.99388 -3.349461) (xy 60.832939 -3.738007) (xy 60.59929 -4.087688) (xy 60.30191 -4.385068) + (xy 59.952229 -4.618717) (xy 59.563683 -4.779658) (xy 59.151206 -4.861705) (xy 58.730648 -4.861705) (xy 58.318171 -4.779658) + (xy 57.929625 -4.618717) (xy 57.839345 -4.558394) (xy 57.839345 -5.256349) (xy 57.827085 -5.380831) (xy 57.790775 -5.500529) + (xy 57.73181 -5.610843) (xy 57.652458 -5.707534) (xy 57.555767 -5.786886) (xy 57.445453 -5.845851) (xy 57.325755 -5.882161) + (xy 57.201273 -5.894421) (xy 54.651273 -5.894421) (xy 54.526791 -5.882161) (xy 54.407093 -5.845851) (xy 54.296779 -5.786886) + (xy 54.200088 -5.707534) (xy 54.120736 -5.610843) (xy 54.061771 -5.500529) (xy 54.042159 -5.435877) (xy 54.042159 -10.771393) + (xy 67.157947 -10.771393) (xy 67.169121 -10.646809) (xy 67.204385 -10.526799) (xy 67.262384 -10.415974) (xy 67.34089 -10.318594) + (xy 67.436885 -10.238401) (xy 67.546681 -10.178477) (xy 68.375136 -9.826819) (xy 68.494512 -9.789465) (xy 68.618882 -9.776119) + (xy 68.634185 -9.777492) (xy 68.640388 -9.708334) (xy 68.675652 -9.588324) (xy 68.733651 -9.477499) (xy 68.812157 -9.380119) + (xy 68.908152 -9.299926) (xy 69.017947 -9.240002) (xy 70.654605 -8.545282) (xy 70.773982 -8.507928) (xy 70.898352 -8.494582) + (xy 71.022936 -8.505756) (xy 71.142946 -8.54102) (xy 71.253771 -8.599019) (xy 71.351151 -8.677525) (xy 71.431344 -8.77352) + (xy 71.491268 -8.883315) (xy 72.185988 -10.519973) (xy 72.223342 -10.63935) (xy 72.236688 -10.76372) (xy 72.225514 -10.888304) + (xy 72.19025 -11.008314) (xy 72.132251 -11.119139) (xy 72.053745 -11.216519) (xy 71.95775 -11.296712) (xy 71.847955 -11.356636) + (xy 70.211297 -12.051356) (xy 70.09192 -12.08871) (xy 69.96755 -12.102056) (xy 69.842966 -12.090882) (xy 69.722956 -12.055618) + (xy 69.612131 -11.997619) (xy 69.558076 -11.954041) (xy 69.548432 -11.966004) (xy 69.452437 -12.046197) (xy 69.342641 -12.106121) + (xy 68.514186 -12.457779) (xy 68.39481 -12.495133) (xy 68.27044 -12.508479) (xy 68.145856 -12.497305) (xy 68.025846 -12.462041) + (xy 67.915021 -12.404042) (xy 67.817641 -12.325536) (xy 67.737448 -12.229541) (xy 67.677524 -12.119745) (xy 67.208647 -11.015139) + (xy 67.171293 -10.895763) (xy 67.157947 -10.771393) (xy 54.042159 -10.771393) (xy 54.042159 -11.431794) (xy 54.557159 -11.431794) + (xy 54.681641 -11.444054) (xy 54.801339 -11.480364) (xy 54.911653 -11.539329) (xy 55.008344 -11.618681) (xy 55.087696 -11.715372) + (xy 55.146661 -11.825686) (xy 55.182971 -11.945384) (xy 55.195231 -12.069866) (xy 55.195231 -14.11543) (xy 61.217055 -20.137253) + (xy 61.246052 -20.16105) (xy 61.293115 -20.218396) (xy 61.341025 -20.276774) (xy 61.411597 -20.408804) (xy 61.41518 -20.420615) + (xy 61.437092 -20.492851) (xy 61.437092 -20.245941) (xy 61.449352 -20.121459) (xy 61.485662 -20.001761) (xy 61.544627 -19.891447) + (xy 61.623979 -19.794756) (xy 61.72067 -19.715404) (xy 61.830984 -19.656439) (xy 61.950682 -19.620129) (xy 62.075164 -19.607869) + (xy 62.267418 -19.607869) (xy 62.267419 -14.369469) (xy 62.185613 -14.287663) (xy 62.011881 -14.027654) (xy 61.892212 -13.738748) + (xy 61.831205 -13.432046) (xy 61.831205 -13.119336) (xy 61.892212 -12.812634) (xy 62.011881 -12.523728) (xy 62.185613 -12.263719) + (xy 62.406733 -12.042599) (xy 62.666742 -11.868867) (xy 62.955648 -11.749198) (xy 63.26235 -11.688191) (xy 63.57506 -11.688191) + (xy 63.881762 -11.749198) (xy 64.153354 -11.861695) (xy 64.166719 -11.816211) (xy 64.224718 -11.705386) (xy 64.303224 -11.608006) + (xy 64.399219 -11.527813) (xy 64.509015 -11.467889) (xy 65.33747 -11.116231) (xy 65.456846 -11.078877) (xy 65.581216 -11.065531) + (xy 65.7058 -11.076705) (xy 65.82581 -11.111969) (xy 65.936635 -11.169968) (xy 66.034015 -11.248474) (xy 66.114208 -11.344469) + (xy 66.174132 -11.454265) (xy 66.643009 -12.558871) (xy 66.680363 -12.678247) (xy 66.693709 -12.802617) (xy 66.682535 -12.927201) + (xy 66.647271 -13.047211) (xy 66.589272 -13.158036) (xy 66.510766 -13.255416) (xy 66.414771 -13.335609) (xy 66.304975 -13.395533) + (xy 65.47652 -13.747191) (xy 65.357144 -13.784545) (xy 65.232774 -13.797891) (xy 65.12552 -13.788271) (xy 65.103016 -13.815692) + (xy 64.987291 -13.910665) (xy 64.855262 -13.981237) (xy 64.843246 -13.984882) (xy 64.825529 -14.027654) (xy 64.651797 -14.287663) + (xy 64.430677 -14.508783) (xy 64.170668 -14.682515) (xy 63.881762 -14.802184) (xy 63.787418 -14.82095) (xy 63.787418 -16.94216) + (xy 64.056971 -16.888543) (xy 64.349667 -16.888543) (xy 64.63674 -16.945645) (xy 64.907157 -17.057655) (xy 65.150525 -17.220269) + (xy 65.357493 -17.427237) (xy 65.520107 -17.670605) (xy 65.632117 -17.941022) (xy 65.681342 -18.188495) (xy 65.742062 -18.163344) + (xy 66.154539 -18.081297) (xy 66.575097 -18.081297) (xy 66.922536 -18.150407) (xy 66.837484 -18.065355) (xy 66.549783 -17.63478) + (xy 66.351611 -17.156351) (xy 66.250584 -16.648453) (xy 66.250584 -16.130605) (xy 66.351611 -15.622707) (xy 66.549783 -15.144278) + (xy 66.837484 -14.713703) (xy 67.203658 -14.347529) (xy 67.634233 -14.059828) (xy 68.112662 -13.861656) (xy 68.62056 -13.760629) + (xy 69.138408 -13.760629) (xy 69.646306 -13.861656) (xy 70.124735 -14.059828) (xy 70.55531 -14.347529) (xy 70.758744 -14.550963) + (xy 72.069749 -14.550963) (xy 72.069749 -14.258267) (xy 72.126851 -13.971194) (xy 72.238861 -13.700777) (xy 72.401475 -13.457409) + (xy 72.608443 -13.250441) (xy 72.851811 -13.087827) (xy 73.122228 -12.975817) (xy 73.409301 -12.918715) (xy 73.701997 -12.918715) + (xy 73.98907 -12.975817) (xy 74.259487 -13.087827) (xy 74.502855 -13.250441) (xy 74.709823 -13.457409) (xy 74.872437 -13.700777) + (xy 74.984447 -13.971194) (xy 75.041549 -14.258267) (xy 75.041549 -14.550963) (xy 74.984447 -14.838036) (xy 74.872437 -15.108453) + (xy 74.709823 -15.351821) (xy 74.502855 -15.558789) (xy 74.259487 -15.721403) (xy 73.98907 -15.833413) (xy 73.701997 -15.890515) + (xy 73.409301 -15.890515) (xy 73.122228 -15.833413) (xy 72.851811 -15.721403) (xy 72.608443 -15.558789) (xy 72.401475 -15.351821) + (xy 72.238861 -15.108453) (xy 72.126851 -14.838036) (xy 72.069749 -14.550963) (xy 70.758744 -14.550963) (xy 70.921484 -14.713703) + (xy 71.209185 -15.144278) (xy 71.407357 -15.622707) (xy 71.508384 -16.130605) (xy 71.508384 -16.648453) (xy 71.407357 -17.156351) + (xy 71.209185 -17.63478) (xy 70.921484 -18.065355) (xy 70.55531 -18.431529) (xy 70.124735 -18.71923) (xy 69.646306 -18.917402) + (xy 69.138408 -19.018429) (xy 68.62056 -19.018429) (xy 68.112662 -18.917402) (xy 68.0463 -18.889914) (xy 68.25683 -19.204995) + (xy 68.417771 -19.593541) (xy 68.499818 -20.006018) (xy 68.499818 -20.426576) (xy 68.417771 -20.839053) (xy 68.25683 -21.227599) + (xy 68.023181 -21.57728) (xy 67.725801 -21.87466) (xy 67.37612 -22.108309) (xy 66.987574 -22.26925) (xy 66.575097 -22.351297) + (xy 66.154539 -22.351297) (xy 65.742062 -22.26925) (xy 65.353516 -22.108309) (xy 65.263236 -22.047986) (xy 65.263236 -22.745941) + (xy 65.250976 -22.870423) (xy 65.214666 -22.990121) (xy 65.155701 -23.100435) (xy 65.076349 -23.197126) (xy 64.979658 -23.276478) + (xy 64.869344 -23.335443) (xy 64.749646 -23.371753) (xy 64.625164 -23.384013) (xy 62.075164 -23.384013) (xy 61.950682 -23.371753) + (xy 61.830984 -23.335443) (xy 61.72067 -23.276478) (xy 61.623979 -23.197126) (xy 61.544627 -23.100435) (xy 61.485662 -22.990121) + (xy 61.466051 -22.925472) (xy 61.466051 -24.950238) (xy 61.509988 -24.994175) (xy 61.623256 -25.163693) (xy 61.701277 -25.352051) + (xy 61.741051 -25.55201) (xy 61.741051 -25.755888) (xy 61.701277 -25.955847) (xy 61.623256 -26.144205) (xy 61.509988 -26.313723) + (xy 61.466051 -26.35766) (xy 61.466051 -28.260985) (xy 74.581839 -28.260985) (xy 74.593013 -28.136401) (xy 74.628277 -28.016391) + (xy 74.686276 -27.905566) (xy 74.764782 -27.808186) (xy 74.860777 -27.727993) (xy 74.970573 -27.668069) (xy 75.799028 -27.316411) + (xy 75.918404 -27.279057) (xy 76.042774 -27.265711) (xy 76.058077 -27.267084) (xy 76.06428 -27.197926) (xy 76.099544 -27.077916) + (xy 76.157543 -26.967091) (xy 76.236049 -26.869711) (xy 76.332044 -26.789518) (xy 76.441839 -26.729594) (xy 78.078497 -26.034874) + (xy 78.197874 -25.99752) (xy 78.322244 -25.984174) (xy 78.446828 -25.995348) (xy 78.566838 -26.030612) (xy 78.677663 -26.088611) + (xy 78.775043 -26.167117) (xy 78.855236 -26.263112) (xy 78.91516 -26.372907) (xy 79.60988 -28.009565) (xy 79.647234 -28.128942) + (xy 79.66058 -28.253312) (xy 79.649406 -28.377896) (xy 79.614142 -28.497906) (xy 79.556143 -28.608731) (xy 79.477637 -28.706111) + (xy 79.381642 -28.786304) (xy 79.271847 -28.846228) (xy 77.635189 -29.540948) (xy 77.515812 -29.578302) (xy 77.391442 -29.591648) + (xy 77.266858 -29.580474) (xy 77.146848 -29.54521) (xy 77.036023 -29.487211) (xy 76.981968 -29.443633) (xy 76.972324 -29.455596) + (xy 76.876329 -29.535789) (xy 76.766533 -29.595713) (xy 75.938078 -29.947371) (xy 75.818702 -29.984725) (xy 75.694332 -29.998071) + (xy 75.569748 -29.986897) (xy 75.449738 -29.951633) (xy 75.338913 -29.893634) (xy 75.241533 -29.815128) (xy 75.16134 -29.719133) + (xy 75.101416 -29.609337) (xy 74.632539 -28.504731) (xy 74.595185 -28.385355) (xy 74.581839 -28.260985) (xy 61.466051 -28.260985) + (xy 61.466051 -28.921386) (xy 61.981051 -28.921386) (xy 62.105533 -28.933646) (xy 62.225231 -28.969956) (xy 62.335545 -29.028921) + (xy 62.432236 -29.108273) (xy 62.511588 -29.204964) (xy 62.570553 -29.315278) (xy 62.606863 -29.434976) (xy 62.619123 -29.559458) + (xy 62.619123 -31.699322) (xy 68.640946 -37.721144) (xy 68.669943 -37.744941) (xy 68.764916 -37.860666) (xy 68.835488 -37.992695) + (xy 68.860984 -38.076745) (xy 68.860984 -37.735534) (xy 68.873244 -37.611052) (xy 68.909554 -37.491354) (xy 68.968519 -37.38104) + (xy 69.047871 -37.284349) (xy 69.130099 -37.216867) (xy 69.130098 -31.755105) (xy 69.126422 -31.717782) (xy 69.130098 -31.68046) + (xy 69.130098 -31.68045) (xy 69.141095 -31.568797) (xy 69.170813 -31.470829) (xy 69.184552 -31.425536) (xy 69.255124 -31.293506) + (xy 69.27102 -31.274137) (xy 69.314641 -31.220985) (xy 69.255097 -30.921638) (xy 69.255097 -30.608928) (xy 69.316104 -30.302226) + (xy 69.435773 -30.01332) (xy 69.609505 -29.753311) (xy 69.830625 -29.532191) (xy 70.090634 -29.358459) (xy 70.37954 -29.23879) + (xy 70.686242 -29.177783) (xy 70.998952 -29.177783) (xy 71.305654 -29.23879) (xy 71.577246 -29.351287) (xy 71.590611 -29.305803) + (xy 71.64861 -29.194978) (xy 71.727116 -29.097598) (xy 71.823111 -29.017405) (xy 71.932907 -28.957481) (xy 72.761362 -28.605823) + (xy 72.880738 -28.568469) (xy 73.005108 -28.555123) (xy 73.129692 -28.566297) (xy 73.249702 -28.601561) (xy 73.360527 -28.65956) + (xy 73.457907 -28.738066) (xy 73.5381 -28.834061) (xy 73.598024 -28.943857) (xy 74.066901 -30.048463) (xy 74.104255 -30.167839) + (xy 74.117601 -30.292209) (xy 74.106427 -30.416793) (xy 74.071163 -30.536803) (xy 74.013164 -30.647628) (xy 73.934658 -30.745008) + (xy 73.838663 -30.825201) (xy 73.728867 -30.885125) (xy 72.900412 -31.236783) (xy 72.781036 -31.274137) (xy 72.656666 -31.287483) + (xy 72.549412 -31.277863) (xy 72.526908 -31.305284) (xy 72.411183 -31.400257) (xy 72.279154 -31.470829) (xy 72.267138 -31.474474) + (xy 72.249421 -31.517246) (xy 72.075689 -31.777255) (xy 71.854569 -31.998375) (xy 71.59456 -32.172107) (xy 71.305654 -32.291776) + (xy 70.998952 -32.352783) (xy 70.686242 -32.352783) (xy 70.650098 -32.345593) (xy 70.650098 -34.739769) (xy 70.680005 -34.709862) + (xy 70.923373 -34.547248) (xy 71.19379 -34.435238) (xy 71.480863 -34.378136) (xy 71.773559 -34.378136) (xy 72.060632 -34.435238) + (xy 72.331049 -34.547248) (xy 72.574417 -34.709862) (xy 72.781385 -34.91683) (xy 72.943999 -35.160198) (xy 73.056009 -35.430615) + (xy 73.105234 -35.678088) (xy 73.165954 -35.652937) (xy 73.578431 -35.57089) (xy 73.998989 -35.57089) (xy 74.346428 -35.64) + (xy 74.261376 -35.554948) (xy 73.973675 -35.124373) (xy 73.775503 -34.645944) (xy 73.674476 -34.138046) (xy 73.674476 -33.620198) + (xy 73.775503 -33.1123) (xy 73.973675 -32.633871) (xy 74.261376 -32.203296) (xy 74.62755 -31.837122) (xy 75.058125 -31.549421) + (xy 75.536554 -31.351249) (xy 76.044452 -31.250222) (xy 76.5623 -31.250222) (xy 77.070198 -31.351249) (xy 77.548627 -31.549421) + (xy 77.979202 -31.837122) (xy 78.182636 -32.040556) (xy 79.493641 -32.040556) (xy 79.493641 -31.74786) (xy 79.550743 -31.460787) + (xy 79.662753 -31.19037) (xy 79.825367 -30.947002) (xy 80.032335 -30.740034) (xy 80.275703 -30.57742) (xy 80.54612 -30.46541) + (xy 80.833193 -30.408308) (xy 81.125889 -30.408308) (xy 81.412962 -30.46541) (xy 81.683379 -30.57742) (xy 81.926747 -30.740034) + (xy 82.133715 -30.947002) (xy 82.296329 -31.19037) (xy 82.408339 -31.460787) (xy 82.465441 -31.74786) (xy 82.465441 -32.040556) + (xy 82.408339 -32.327629) (xy 82.296329 -32.598046) (xy 82.133715 -32.841414) (xy 81.926747 -33.048382) (xy 81.683379 -33.210996) + (xy 81.412962 -33.323006) (xy 81.125889 -33.380108) (xy 80.833193 -33.380108) (xy 80.54612 -33.323006) (xy 80.275703 -33.210996) + (xy 80.032335 -33.048382) (xy 79.825367 -32.841414) (xy 79.662753 -32.598046) (xy 79.550743 -32.327629) (xy 79.493641 -32.040556) + (xy 78.182636 -32.040556) (xy 78.345376 -32.203296) (xy 78.633077 -32.633871) (xy 78.831249 -33.1123) (xy 78.932276 -33.620198) + (xy 78.932276 -34.138046) (xy 78.831249 -34.645944) (xy 78.633077 -35.124373) (xy 78.345376 -35.554948) (xy 77.979202 -35.921122) + (xy 77.548627 -36.208823) (xy 77.070198 -36.406995) (xy 76.5623 -36.508022) (xy 76.044452 -36.508022) (xy 75.536554 -36.406995) + (xy 75.470192 -36.379507) (xy 75.680722 -36.694588) (xy 75.841663 -37.083134) (xy 75.92371 -37.495611) (xy 75.92371 -37.916169) + (xy 75.841663 -38.328646) (xy 75.680722 -38.717192) (xy 75.447073 -39.066873) (xy 75.149693 -39.364253) (xy 74.800012 -39.597902) + (xy 74.411466 -39.758843) (xy 73.998989 -39.84089) (xy 73.578431 -39.84089) (xy 73.165954 -39.758843) (xy 72.777408 -39.597902) + (xy 72.687128 -39.537579) (xy 72.687128 -40.235534) (xy 72.674868 -40.360016) (xy 72.638558 -40.479714) (xy 72.579593 -40.590028) + (xy 72.500241 -40.686719) (xy 72.40355 -40.766071) (xy 72.293236 -40.825036) (xy 72.173538 -40.861346) (xy 72.049056 -40.873606) + (xy 69.499056 -40.873606) (xy 69.374574 -40.861346) (xy 69.254876 -40.825036) (xy 69.144562 -40.766071) (xy 69.047871 -40.686719) + (xy 68.968519 -40.590028) (xy 68.909554 -40.479714) (xy 68.889942 -40.415062) (xy 68.889942 -46.410978) (xy 69.404942 -46.410978) + (xy 69.529424 -46.423238) (xy 69.649122 -46.459548) (xy 69.759436 -46.518513) (xy 69.856127 -46.597865) (xy 69.935479 -46.694556) + (xy 69.994444 -46.80487) (xy 70.030754 -46.924568) (xy 70.043014 -47.04905) (xy 70.043014 -49.54905) (xy 70.030754 -49.673532) + (xy 69.994444 -49.79323) (xy 69.935479 -49.903544) (xy 69.856127 -50.000235) (xy 69.759436 -50.079587) (xy 69.649122 -50.138552) + (xy 69.529424 -50.174862) (xy 69.404942 -50.187122) (xy 67.148337 -50.187122) (xy 67.143388 -50.212001) (xy 66.982447 -50.600547) + (xy 66.748798 -50.950228) (xy 66.451418 -51.247608) (xy 66.101737 -51.481257) (xy 65.713191 -51.642198) (xy 65.300714 -51.724245) + (xy 64.880156 -51.724245) (xy 64.467679 -51.642198) (xy 64.079133 -51.481257) (xy 63.729452 -51.247608) (xy 63.432072 -50.950228) + (xy 63.198423 -50.600547) (xy 63.037482 -50.212001) (xy 62.955435 -49.799524) (xy 62.955435 -49.378966) (xy 63.037482 -48.966489) + (xy 63.198423 -48.577943) (xy 63.432072 -48.228262) (xy 63.729452 -47.930882) (xy 64.079133 -47.697233) (xy 64.467679 -47.536292) + (xy 64.880156 -47.454245) (xy 65.300714 -47.454245) (xy 65.713191 -47.536292) (xy 66.101737 -47.697233) (xy 66.21687 -47.774162) + (xy 66.21687 -47.04905) (xy 66.22913 -46.924568) (xy 66.26544 -46.80487) (xy 66.324405 -46.694556) (xy 66.403757 -46.597865) + (xy 66.500448 -46.518513) (xy 66.610762 -46.459548) (xy 66.73046 -46.423238) (xy 66.854942 -46.410978) (xy 67.369943 -46.410978) + (xy 67.369942 -38.599744) (xy 61.467729 -32.69753) (xy 59.724446 -32.69753) (xy 59.719497 -32.722409) (xy 59.558556 -33.110955) + (xy 59.324907 -33.460636) (xy 59.027527 -33.758016) (xy 58.677846 -33.991665) (xy 58.2893 -34.152606) (xy 57.876823 -34.234653) + (xy 57.456265 -34.234653) (xy 57.043788 -34.152606) (xy 56.655242 -33.991665) (xy 56.305561 -33.758016) (xy 56.008181 -33.460636) + (xy 55.774532 -33.110955) (xy 55.613591 -32.722409) (xy 55.531544 -32.309932) (xy 55.531544 -31.889374) (xy 55.613591 -31.476897) + (xy 55.774532 -31.088351) (xy 56.008181 -30.73867) (xy 56.305561 -30.44129) (xy 56.655242 -30.207641) (xy 57.043788 -30.0467) + (xy 57.456265 -29.964653) (xy 57.876823 -29.964653) (xy 58.2893 -30.0467) (xy 58.677846 -30.207641) (xy 58.792979 -30.28457) + (xy 58.792979 -29.559458) (xy 58.805239 -29.434976) (xy 58.841549 -29.315278) (xy 58.900514 -29.204964) (xy 58.979866 -29.108273) + (xy 59.076557 -29.028921) (xy 59.186871 -28.969956) (xy 59.306569 -28.933646) (xy 59.431051 -28.921386) (xy 59.946052 -28.921386) + (xy 59.946051 -26.35766) (xy 59.902114 -26.313723) (xy 59.788846 -26.144205) (xy 59.710825 -25.955847) (xy 59.671051 -25.755888) + (xy 59.671051 -25.55201) (xy 59.710825 -25.352051) (xy 59.788846 -25.163693) (xy 59.902114 -24.994175) (xy 59.946052 -24.950237) + (xy 59.946051 -21.015853) (xy 54.138137 -15.207938) (xy 52.300554 -15.207938) (xy 52.295605 -15.232817) (xy 52.134664 -15.621363) + (xy 51.901015 -15.971044) (xy 51.603635 -16.268424) (xy 51.253954 -16.502073) (xy 50.865408 -16.663014) (xy 50.452931 -16.745061) + (xy 50.032373 -16.745061) (xy 49.619896 -16.663014) (xy 49.23135 -16.502073) (xy 48.881669 -16.268424) (xy 48.584289 -15.971044) + (xy 48.35064 -15.621363) (xy 48.189699 -15.232817) (xy 48.107652 -14.82034) (xy 48.107652 -14.399782) (xy 48.189699 -13.987305) + (xy 48.35064 -13.598759) (xy 48.584289 -13.249078) (xy 48.881669 -12.951698) (xy 49.23135 -12.718049) (xy 49.619896 -12.557108) + (xy 50.032373 -12.475061) (xy 50.452931 -12.475061) (xy 50.865408 -12.557108) (xy 51.253954 -12.718049) (xy 51.369087 -12.794978) + (xy 51.369087 -12.069866) (xy 51.381347 -11.945384) (xy 51.417657 -11.825686) (xy 51.476622 -11.715372) (xy 51.555974 -11.618681) + (xy 51.652665 -11.539329) (xy 51.762979 -11.480364) (xy 51.882677 -11.444054) (xy 52.007159 -11.431794) (xy 52.52216 -11.431794) + (xy 52.522159 -3.568967) (xy 46.671539 2.281654) (xy 44.876663 2.281654) (xy 44.871714 2.256775) (xy 44.710773 1.868229) + (xy 44.477124 1.518548) (xy 44.179744 1.221168) (xy 43.830063 0.987519) (xy 43.441517 0.826578) (xy 43.02904 0.744531) + (xy 42.608482 0.744531) (xy 42.196005 0.826578) (xy 41.807459 0.987519) (xy 41.457778 1.221168) (xy 41.160398 1.518548) + (xy 40.926749 1.868229) (xy 40.765808 2.256775) (xy 40.683761 2.669252) (xy 38.116099 2.669252) (xy 38.116099 2.526192) + (xy 38.034052 2.113715) (xy 37.873111 1.725169) (xy 37.639462 1.375488) (xy 37.342082 1.078108) (xy 36.992401 0.844459) + (xy 36.603855 0.683518) (xy 36.191378 0.601471) (xy 35.77082 0.601471) (xy 35.358343 0.683518) (xy 34.969797 0.844459) + (xy 34.879517 0.904782) (xy 34.879517 0.206827) (xy 34.867257 0.082345) (xy 34.830947 -0.037353) (xy 34.771982 -0.147667) + (xy 34.69263 -0.244358) (xy 34.595939 -0.32371) (xy 34.485625 -0.382675) (xy 34.365927 -0.418985) (xy 34.241445 -0.431245) + (xy 31.691445 -0.431245) (xy 31.566963 -0.418985) (xy 31.447265 -0.382675) (xy 31.336951 -0.32371) (xy 31.24026 -0.244358) + (xy 31.160908 -0.147667) (xy 31.101943 -0.037353) (xy 31.065633 0.082345) (xy 31.053373 0.206827) (xy 28.807974 0.206827) + (xy 34.323018 -5.308217) (xy 44.198119 -5.308217) (xy 44.209293 -5.183633) (xy 44.244557 -5.063623) (xy 44.302556 -4.952798) + (xy 44.381062 -4.855418) (xy 44.477057 -4.775225) (xy 44.586853 -4.715301) (xy 45.415308 -4.363643) (xy 45.534684 -4.326289) + (xy 45.659054 -4.312943) (xy 45.674357 -4.314316) (xy 45.68056 -4.245158) (xy 45.715824 -4.125148) (xy 45.773823 -4.014323) + (xy 45.852329 -3.916943) (xy 45.948324 -3.83675) (xy 46.058119 -3.776826) (xy 47.694777 -3.082106) (xy 47.814154 -3.044752) + (xy 47.938524 -3.031406) (xy 48.063108 -3.04258) (xy 48.183118 -3.077844) (xy 48.293943 -3.135843) (xy 48.391323 -3.214349) + (xy 48.471516 -3.310344) (xy 48.53144 -3.420139) (xy 49.22616 -5.056797) (xy 49.263514 -5.176174) (xy 49.27686 -5.300544) + (xy 49.265686 -5.425128) (xy 49.230422 -5.545138) (xy 49.172423 -5.655963) (xy 49.093917 -5.753343) (xy 48.997922 -5.833536) + (xy 48.888127 -5.89346) (xy 47.251469 -6.58818) (xy 47.132092 -6.625534) (xy 47.007722 -6.63888) (xy 46.883138 -6.627706) + (xy 46.763128 -6.592442) (xy 46.652303 -6.534443) (xy 46.598248 -6.490865) (xy 46.588604 -6.502828) (xy 46.492609 -6.583021) + (xy 46.382813 -6.642945) (xy 45.554358 -6.994603) (xy 45.434982 -7.031957) (xy 45.310612 -7.045303) (xy 45.186028 -7.034129) + (xy 45.066018 -6.998865) (xy 44.955193 -6.940866) (xy 44.857813 -6.86236) (xy 44.77762 -6.766365) (xy 44.717696 -6.656569) + (xy 44.248819 -5.551963) (xy 44.211465 -5.432587) (xy 44.198119 -5.308217) (xy 34.323018 -5.308217) (xy 34.349915 -5.335113) + (xy 34.378912 -5.35891) (xy 34.473885 -5.474635) (xy 34.544457 -5.606664) (xy 34.587914 -5.749925) (xy 34.598911 -5.861578) + (xy 34.598911 -5.861579) (xy 34.602588 -5.898911) (xy 34.598911 -5.936244) (xy 34.598911 -14.253161) (xy 35.113911 -14.253161) + (xy 35.238393 -14.265421) (xy 35.358091 -14.301731) (xy 35.468405 -14.360696) (xy 35.565096 -14.440048) (xy 35.644448 -14.536739) + (xy 35.703413 -14.647053) (xy 35.739723 -14.766751) (xy 35.751983 -14.891233) (xy 35.751983 -16.897182) (xy 36.137566 -17.282765) + (xy 38.477264 -17.282765) (xy 38.477264 -14.782765) (xy 38.489524 -14.658283) (xy 38.525834 -14.538585) (xy 38.584799 -14.428271) + (xy 38.664151 -14.33158) (xy 38.760842 -14.252228) (xy 38.871156 -14.193263) (xy 38.990854 -14.156953) (xy 39.115336 -14.144693) + (xy 39.30759 -14.144693) (xy 39.307591 -8.906293) (xy 39.225785 -8.824487) (xy 39.052053 -8.564478) (xy 38.932384 -8.275572) + (xy 38.871377 -7.96887) (xy 38.871377 -7.65616) (xy 38.932384 -7.349458) (xy 39.052053 -7.060552) (xy 39.225785 -6.800543) + (xy 39.446905 -6.579423) (xy 39.706914 -6.405691) (xy 39.99582 -6.286022) (xy 40.302522 -6.225015) (xy 40.615232 -6.225015) + (xy 40.921934 -6.286022) (xy 41.193526 -6.398519) (xy 41.206891 -6.353035) (xy 41.26489 -6.24221) (xy 41.343396 -6.14483) + (xy 41.439391 -6.064637) (xy 41.549187 -6.004713) (xy 42.377642 -5.653055) (xy 42.497018 -5.615701) (xy 42.621388 -5.602355) + (xy 42.745972 -5.613529) (xy 42.865982 -5.648793) (xy 42.976807 -5.706792) (xy 43.074187 -5.785298) (xy 43.15438 -5.881293) + (xy 43.214304 -5.991089) (xy 43.683181 -7.095695) (xy 43.720535 -7.215071) (xy 43.733881 -7.339441) (xy 43.722707 -7.464025) + (xy 43.687443 -7.584035) (xy 43.629444 -7.69486) (xy 43.550938 -7.79224) (xy 43.454943 -7.872433) (xy 43.345147 -7.932357) + (xy 42.516692 -8.284015) (xy 42.397316 -8.321369) (xy 42.272946 -8.334715) (xy 42.165692 -8.325095) (xy 42.143188 -8.352516) + (xy 42.027463 -8.447489) (xy 41.895434 -8.518061) (xy 41.883418 -8.521706) (xy 41.865701 -8.564478) (xy 41.691969 -8.824487) + (xy 41.470849 -9.045607) (xy 41.21084 -9.219339) (xy 40.921934 -9.339008) (xy 40.82759 -9.357774) (xy 40.82759 -11.478984) + (xy 41.097143 -11.425367) (xy 41.389839 -11.425367) (xy 41.676912 -11.482469) (xy 41.947329 -11.594479) (xy 42.190697 -11.757093) + (xy 42.397665 -11.964061) (xy 42.560279 -12.207429) (xy 42.672289 -12.477846) (xy 42.721514 -12.725319) (xy 42.782234 -12.700168) + (xy 43.194711 -12.618121) (xy 43.615269 -12.618121) (xy 43.962708 -12.687231) (xy 43.877656 -12.602179) (xy 43.589955 -12.171604) + (xy 43.391783 -11.693175) (xy 43.290756 -11.185277) (xy 43.290756 -10.667429) (xy 43.391783 -10.159531) (xy 43.589955 -9.681102) + (xy 43.877656 -9.250527) (xy 44.24383 -8.884353) (xy 44.674405 -8.596652) (xy 45.152834 -8.39848) (xy 45.660732 -8.297453) + (xy 46.17858 -8.297453) (xy 46.686478 -8.39848) (xy 47.164907 -8.596652) (xy 47.595482 -8.884353) (xy 47.798916 -9.087787) + (xy 49.109921 -9.087787) (xy 49.109921 -8.795091) (xy 49.167023 -8.508018) (xy 49.279033 -8.237601) (xy 49.441647 -7.994233) + (xy 49.648615 -7.787265) (xy 49.891983 -7.624651) (xy 50.1624 -7.512641) (xy 50.449473 -7.455539) (xy 50.742169 -7.455539) + (xy 51.029242 -7.512641) (xy 51.299659 -7.624651) (xy 51.543027 -7.787265) (xy 51.749995 -7.994233) (xy 51.912609 -8.237601) + (xy 52.024619 -8.508018) (xy 52.081721 -8.795091) (xy 52.081721 -9.087787) (xy 52.024619 -9.37486) (xy 51.912609 -9.645277) + (xy 51.749995 -9.888645) (xy 51.543027 -10.095613) (xy 51.299659 -10.258227) (xy 51.029242 -10.370237) (xy 50.742169 -10.427339) + (xy 50.449473 -10.427339) (xy 50.1624 -10.370237) (xy 49.891983 -10.258227) (xy 49.648615 -10.095613) (xy 49.441647 -9.888645) + (xy 49.279033 -9.645277) (xy 49.167023 -9.37486) (xy 49.109921 -9.087787) (xy 47.798916 -9.087787) (xy 47.961656 -9.250527) + (xy 48.249357 -9.681102) (xy 48.447529 -10.159531) (xy 48.548556 -10.667429) (xy 48.548556 -11.185277) (xy 48.447529 -11.693175) + (xy 48.249357 -12.171604) (xy 47.961656 -12.602179) (xy 47.595482 -12.968353) (xy 47.164907 -13.256054) (xy 46.686478 -13.454226) + (xy 46.17858 -13.555253) (xy 45.660732 -13.555253) (xy 45.152834 -13.454226) (xy 45.086472 -13.426738) (xy 45.297002 -13.741819) + (xy 45.457943 -14.130365) (xy 45.53999 -14.542842) (xy 45.53999 -14.9634) (xy 45.457943 -15.375877) (xy 45.297002 -15.764423) + (xy 45.063353 -16.114104) (xy 44.765973 -16.411484) (xy 44.416292 -16.645133) (xy 44.027746 -16.806074) (xy 43.615269 -16.888121) + (xy 43.194711 -16.888121) (xy 42.782234 -16.806074) (xy 42.393688 -16.645133) (xy 42.303408 -16.58481) (xy 42.303408 -17.282765) + (xy 42.291148 -17.407247) (xy 42.254838 -17.526945) (xy 42.195873 -17.637259) (xy 42.116521 -17.73395) (xy 42.01983 -17.813302) + (xy 41.909516 -17.872267) (xy 41.789818 -17.908577) (xy 41.665336 -17.920837) (xy 39.115336 -17.920837) (xy 38.990854 -17.908577) + (xy 38.871156 -17.872267) (xy 38.760842 -17.813302) (xy 38.664151 -17.73395) (xy 38.584799 -17.637259) (xy 38.525834 -17.526945) + (xy 38.489524 -17.407247) (xy 38.477264 -17.282765) (xy 36.137566 -17.282765) (xy 41.65261 -22.797809) (xy 51.622011 -22.797809) + (xy 51.633185 -22.673225) (xy 51.668449 -22.553215) (xy 51.726448 -22.44239) (xy 51.804954 -22.34501) (xy 51.900949 -22.264817) + (xy 52.010745 -22.204893) (xy 52.8392 -21.853235) (xy 52.958576 -21.815881) (xy 53.082946 -21.802535) (xy 53.098249 -21.803908) + (xy 53.104452 -21.73475) (xy 53.139716 -21.61474) (xy 53.197715 -21.503915) (xy 53.276221 -21.406535) (xy 53.372216 -21.326342) + (xy 53.482011 -21.266418) (xy 55.118669 -20.571698) (xy 55.238046 -20.534344) (xy 55.362416 -20.520998) (xy 55.487 -20.532172) + (xy 55.60701 -20.567436) (xy 55.717835 -20.625435) (xy 55.815215 -20.703941) (xy 55.895408 -20.799936) (xy 55.955332 -20.909731) + (xy 56.650052 -22.546389) (xy 56.687406 -22.665766) (xy 56.700752 -22.790136) (xy 56.689578 -22.91472) (xy 56.654314 -23.03473) + (xy 56.596315 -23.145555) (xy 56.517809 -23.242935) (xy 56.421814 -23.323128) (xy 56.312019 -23.383052) (xy 54.675361 -24.077772) + (xy 54.555984 -24.115126) (xy 54.431614 -24.128472) (xy 54.30703 -24.117298) (xy 54.18702 -24.082034) (xy 54.076195 -24.024035) + (xy 54.02214 -23.980457) (xy 54.012496 -23.99242) (xy 53.916501 -24.072613) (xy 53.806705 -24.132537) (xy 52.97825 -24.484195) + (xy 52.858874 -24.521549) (xy 52.734504 -24.534895) (xy 52.60992 -24.523721) (xy 52.48991 -24.488457) (xy 52.379085 -24.430458) + (xy 52.281705 -24.351952) (xy 52.201512 -24.255957) (xy 52.141588 -24.146161) (xy 51.672711 -23.041555) (xy 51.635357 -22.922179) + (xy 51.622011 -22.797809) (xy 41.65261 -22.797809) (xy 41.773807 -22.919005) (xy 41.802804 -22.942802) (xy 41.897777 -23.058527) + (xy 41.968349 -23.190556) (xy 42.011806 -23.333817) (xy 42.022803 -23.44547) (xy 42.022803 -23.44548) (xy 42.026479 -23.482803) + (xy 42.022803 -23.520126) (xy 42.022803 -27.224092) (xy 42.06674 -27.268029) (xy 42.180008 -27.437547) (xy 42.258029 -27.625905) + (xy 42.297803 -27.825864) (xy 42.297803 -28.029742) (xy 42.258029 -28.229701) (xy 42.180008 -28.418059) (xy 42.06674 -28.587577) + (xy 42.022803 -28.631514) (xy 42.022803 -31.742753) (xy 42.537803 -31.742753) (xy 42.662285 -31.755013) (xy 42.781983 -31.791323) + (xy 42.892297 -31.850288) (xy 42.988988 -31.92964) (xy 43.06834 -32.026331) (xy 43.127305 -32.136645) (xy 43.163615 -32.256343) + (xy 43.175875 -32.380825) (xy 43.175875 -34.481074) (xy 43.467158 -34.772357) (xy 45.901156 -34.772357) (xy 45.901156 -32.272357) + (xy 45.913416 -32.147875) (xy 45.949726 -32.028177) (xy 46.008691 -31.917863) (xy 46.088043 -31.821172) (xy 46.170271 -31.75369) + (xy 46.17027 -26.291929) (xy 46.166594 -26.254606) (xy 46.17027 -26.217284) (xy 46.17027 -26.217274) (xy 46.181267 -26.105621) + (xy 46.220316 -25.976892) (xy 46.224724 -25.96236) (xy 46.295296 -25.83033) (xy 46.335141 -25.78178) (xy 46.354813 -25.757809) + (xy 46.295269 -25.458462) (xy 46.295269 -25.145752) (xy 46.356276 -24.83905) (xy 46.475945 -24.550144) (xy 46.649677 -24.290135) + (xy 46.870797 -24.069015) (xy 47.130806 -23.895283) (xy 47.419712 -23.775614) (xy 47.726414 -23.714607) (xy 48.039124 -23.714607) + (xy 48.345826 -23.775614) (xy 48.617418 -23.888111) (xy 48.630783 -23.842627) (xy 48.688782 -23.731802) (xy 48.767288 -23.634422) + (xy 48.863283 -23.554229) (xy 48.973079 -23.494305) (xy 49.801534 -23.142647) (xy 49.92091 -23.105293) (xy 50.04528 -23.091947) + (xy 50.169864 -23.103121) (xy 50.289874 -23.138385) (xy 50.400699 -23.196384) (xy 50.498079 -23.27489) (xy 50.578272 -23.370885) + (xy 50.638196 -23.480681) (xy 51.107073 -24.585287) (xy 51.144427 -24.704663) (xy 51.157773 -24.829033) (xy 51.146599 -24.953617) + (xy 51.111335 -25.073627) (xy 51.053336 -25.184452) (xy 50.97483 -25.281832) (xy 50.878835 -25.362025) (xy 50.769039 -25.421949) + (xy 49.940584 -25.773607) (xy 49.821208 -25.810961) (xy 49.696838 -25.824307) (xy 49.589584 -25.814687) (xy 49.56708 -25.842108) + (xy 49.451355 -25.937081) (xy 49.319326 -26.007653) (xy 49.30731 -26.011298) (xy 49.289593 -26.05407) (xy 49.115861 -26.314079) + (xy 48.894741 -26.535199) (xy 48.634732 -26.708931) (xy 48.345826 -26.8286) (xy 48.039124 -26.889607) (xy 47.726414 -26.889607) + (xy 47.69027 -26.882417) (xy 47.69027 -29.276592) (xy 47.720177 -29.246685) (xy 47.963545 -29.084071) (xy 48.233962 -28.972061) + (xy 48.521035 -28.914959) (xy 48.813731 -28.914959) (xy 49.100804 -28.972061) (xy 49.371221 -29.084071) (xy 49.614589 -29.246685) + (xy 49.821557 -29.453653) (xy 49.984171 -29.697021) (xy 50.096181 -29.967438) (xy 50.145406 -30.214911) (xy 50.206126 -30.18976) + (xy 50.618603 -30.107713) (xy 51.039161 -30.107713) (xy 51.3866 -30.176823) (xy 51.301548 -30.091771) (xy 51.013847 -29.661196) + (xy 50.815675 -29.182767) (xy 50.714648 -28.674869) (xy 50.714648 -28.157021) (xy 50.815675 -27.649123) (xy 51.013847 -27.170694) + (xy 51.301548 -26.740119) (xy 51.667722 -26.373945) (xy 52.098297 -26.086244) (xy 52.576726 -25.888072) (xy 53.084624 -25.787045) + (xy 53.602472 -25.787045) (xy 54.11037 -25.888072) (xy 54.588799 -26.086244) (xy 55.019374 -26.373945) (xy 55.222808 -26.577379) + (xy 56.533813 -26.577379) (xy 56.533813 -26.284683) (xy 56.590915 -25.99761) (xy 56.702925 -25.727193) (xy 56.865539 -25.483825) + (xy 57.072507 -25.276857) (xy 57.315875 -25.114243) (xy 57.586292 -25.002233) (xy 57.873365 -24.945131) (xy 58.166061 -24.945131) + (xy 58.453134 -25.002233) (xy 58.723551 -25.114243) (xy 58.966919 -25.276857) (xy 59.173887 -25.483825) (xy 59.336501 -25.727193) + (xy 59.448511 -25.99761) (xy 59.505613 -26.284683) (xy 59.505613 -26.577379) (xy 59.448511 -26.864452) (xy 59.336501 -27.134869) + (xy 59.173887 -27.378237) (xy 58.966919 -27.585205) (xy 58.723551 -27.747819) (xy 58.453134 -27.859829) (xy 58.166061 -27.916931) + (xy 57.873365 -27.916931) (xy 57.586292 -27.859829) (xy 57.315875 -27.747819) (xy 57.072507 -27.585205) (xy 56.865539 -27.378237) + (xy 56.702925 -27.134869) (xy 56.590915 -26.864452) (xy 56.533813 -26.577379) (xy 55.222808 -26.577379) (xy 55.385548 -26.740119) + (xy 55.673249 -27.170694) (xy 55.871421 -27.649123) (xy 55.972448 -28.157021) (xy 55.972448 -28.674869) (xy 55.871421 -29.182767) + (xy 55.673249 -29.661196) (xy 55.385548 -30.091771) (xy 55.019374 -30.457945) (xy 54.588799 -30.745646) (xy 54.11037 -30.943818) + (xy 53.602472 -31.044845) (xy 53.084624 -31.044845) (xy 52.576726 -30.943818) (xy 52.510364 -30.91633) (xy 52.720894 -31.231411) + (xy 52.881835 -31.619957) (xy 52.963882 -32.032434) (xy 52.963882 -32.452992) (xy 52.881835 -32.865469) (xy 52.720894 -33.254015) + (xy 52.487245 -33.603696) (xy 52.189865 -33.901076) (xy 51.840184 -34.134725) (xy 51.451638 -34.295666) (xy 51.039161 -34.377713) + (xy 50.618603 -34.377713) (xy 50.206126 -34.295666) (xy 49.81758 -34.134725) (xy 49.7273 -34.074402) (xy 49.7273 -34.772357) + (xy 49.71504 -34.896839) (xy 49.67873 -35.016537) (xy 49.619765 -35.126851) (xy 49.540413 -35.223542) (xy 49.443722 -35.302894) + (xy 49.333408 -35.361859) (xy 49.21371 -35.398169) (xy 49.089228 -35.410429) (xy 46.539228 -35.410429) (xy 46.414746 -35.398169) + (xy 46.295048 -35.361859) (xy 46.184734 -35.302894) (xy 46.088043 -35.223542) (xy 46.008691 -35.126851) (xy 45.949726 -35.016537) + (xy 45.913416 -34.896839) (xy 45.901156 -34.772357) (xy 43.467158 -34.772357) (xy 48.982202 -40.287401) (xy 59.045902 -40.287401) + (xy 59.057076 -40.162817) (xy 59.09234 -40.042807) (xy 59.150339 -39.931982) (xy 59.228845 -39.834602) (xy 59.32484 -39.754409) + (xy 59.434636 -39.694485) (xy 60.263091 -39.342827) (xy 60.382467 -39.305473) (xy 60.506837 -39.292127) (xy 60.52214 -39.2935) + (xy 60.528343 -39.224342) (xy 60.563607 -39.104332) (xy 60.621606 -38.993507) (xy 60.700112 -38.896127) (xy 60.796107 -38.815934) + (xy 60.905902 -38.75601) (xy 62.54256 -38.06129) (xy 62.661937 -38.023936) (xy 62.786307 -38.01059) (xy 62.910891 -38.021764) + (xy 63.030901 -38.057028) (xy 63.141726 -38.115027) (xy 63.239106 -38.193533) (xy 63.319299 -38.289528) (xy 63.379223 -38.399323) + (xy 64.073943 -40.035981) (xy 64.111297 -40.155358) (xy 64.124643 -40.279728) (xy 64.113469 -40.404312) (xy 64.078205 -40.524322) + (xy 64.020206 -40.635147) (xy 63.9417 -40.732527) (xy 63.845705 -40.81272) (xy 63.73591 -40.872644) (xy 62.099252 -41.567364) + (xy 61.979875 -41.604718) (xy 61.855505 -41.618064) (xy 61.730921 -41.60689) (xy 61.610911 -41.571626) (xy 61.500086 -41.513627) + (xy 61.446031 -41.470049) (xy 61.436387 -41.482012) (xy 61.340392 -41.562205) (xy 61.230596 -41.622129) (xy 60.402141 -41.973787) + (xy 60.282765 -42.011141) (xy 60.158395 -42.024487) (xy 60.033811 -42.013313) (xy 59.913801 -41.978049) (xy 59.802976 -41.92005) + (xy 59.705596 -41.841544) (xy 59.625403 -41.745549) (xy 59.565479 -41.635753) (xy 59.096602 -40.531147) (xy 59.059248 -40.411771) + (xy 59.045902 -40.287401) (xy 48.982202 -40.287401) (xy 49.197698 -40.502896) (xy 49.226695 -40.526693) (xy 49.321668 -40.642418) + (xy 49.39224 -40.774447) (xy 49.435697 -40.917708) (xy 49.446694 -41.029361) (xy 49.446694 -41.02937) (xy 49.45037 -41.066693) + (xy 49.446694 -41.104016) (xy 49.446694 -49.232346) (xy 49.961694 -49.232346) (xy 50.086176 -49.244606) (xy 50.205874 -49.280916) + (xy 50.316188 -49.339881) (xy 50.412879 -49.419233) (xy 50.492231 -49.515924) (xy 50.551196 -49.626238) (xy 50.587506 -49.745936) + (xy 50.599766 -49.870418) (xy 50.599766 -52.261949) (xy 53.325047 -52.261949) (xy 53.325047 -49.761949) (xy 53.337307 -49.637467) + (xy 53.373617 -49.517769) (xy 53.432582 -49.407455) (xy 53.511934 -49.310764) (xy 53.594162 -49.243282) (xy 53.594161 -43.781521) + (xy 53.590485 -43.744198) (xy 53.594161 -43.706876) (xy 53.594161 -43.706866) (xy 53.605158 -43.595213) (xy 53.634876 -43.497245) + (xy 53.648615 -43.451952) (xy 53.719187 -43.319922) (xy 53.759032 -43.271372) (xy 53.778704 -43.247401) (xy 53.71916 -42.948054) + (xy 53.71916 -42.635344) (xy 53.780167 -42.328642) (xy 53.899836 -42.039736) (xy 54.073568 -41.779727) (xy 54.294688 -41.558607) + (xy 54.554697 -41.384875) (xy 54.843603 -41.265206) (xy 55.150305 -41.204199) (xy 55.463015 -41.204199) (xy 55.769717 -41.265206) + (xy 56.041309 -41.377703) (xy 56.054674 -41.332219) (xy 56.112673 -41.221394) (xy 56.191179 -41.124014) (xy 56.287174 -41.043821) + (xy 56.39697 -40.983897) (xy 57.225425 -40.632239) (xy 57.344801 -40.594885) (xy 57.469171 -40.581539) (xy 57.593755 -40.592713) + (xy 57.713765 -40.627977) (xy 57.82459 -40.685976) (xy 57.92197 -40.764482) (xy 58.002163 -40.860477) (xy 58.062087 -40.970273) + (xy 58.530964 -42.074879) (xy 58.568318 -42.194255) (xy 58.581664 -42.318625) (xy 58.57049 -42.443209) (xy 58.535226 -42.563219) + (xy 58.477227 -42.674044) (xy 58.398721 -42.771424) (xy 58.302726 -42.851617) (xy 58.19293 -42.911541) (xy 57.364475 -43.263199) + (xy 57.245099 -43.300553) (xy 57.120729 -43.313899) (xy 57.013475 -43.304279) (xy 56.990971 -43.3317) (xy 56.875246 -43.426673) + (xy 56.743217 -43.497245) (xy 56.731201 -43.50089) (xy 56.713484 -43.543662) (xy 56.539752 -43.803671) (xy 56.318632 -44.024791) + (xy 56.058623 -44.198523) (xy 55.769717 -44.318192) (xy 55.463015 -44.379199) (xy 55.150305 -44.379199) (xy 55.114161 -44.372009) + (xy 55.114161 -46.766184) (xy 55.144068 -46.736277) (xy 55.387436 -46.573663) (xy 55.657853 -46.461653) (xy 55.944926 -46.404551) + (xy 56.237622 -46.404551) (xy 56.524695 -46.461653) (xy 56.795112 -46.573663) (xy 57.03848 -46.736277) (xy 57.245448 -46.943245) + (xy 57.408062 -47.186613) (xy 57.520072 -47.45703) (xy 57.569297 -47.704503) (xy 57.630017 -47.679352) (xy 58.042494 -47.597305) + (xy 58.463052 -47.597305) (xy 58.810491 -47.666415) (xy 58.725439 -47.581363) (xy 58.437738 -47.150788) (xy 58.239566 -46.672359) + (xy 58.138539 -46.164461) (xy 58.138539 -45.646613) (xy 58.239566 -45.138715) (xy 58.437738 -44.660286) (xy 58.725439 -44.229711) + (xy 59.091613 -43.863537) (xy 59.522188 -43.575836) (xy 60.000617 -43.377664) (xy 60.508515 -43.276637) (xy 61.026363 -43.276637) + (xy 61.534261 -43.377664) (xy 62.01269 -43.575836) (xy 62.443265 -43.863537) (xy 62.646699 -44.066971) (xy 63.957704 -44.066971) + (xy 63.957704 -43.774275) (xy 64.014806 -43.487202) (xy 64.126816 -43.216785) (xy 64.28943 -42.973417) (xy 64.496398 -42.766449) + (xy 64.739766 -42.603835) (xy 65.010183 -42.491825) (xy 65.297256 -42.434723) (xy 65.589952 -42.434723) (xy 65.877025 -42.491825) + (xy 66.147442 -42.603835) (xy 66.39081 -42.766449) (xy 66.597778 -42.973417) (xy 66.760392 -43.216785) (xy 66.872402 -43.487202) + (xy 66.929504 -43.774275) (xy 66.929504 -44.066971) (xy 66.872402 -44.354044) (xy 66.760392 -44.624461) (xy 66.597778 -44.867829) + (xy 66.39081 -45.074797) (xy 66.147442 -45.237411) (xy 65.877025 -45.349421) (xy 65.589952 -45.406523) (xy 65.297256 -45.406523) + (xy 65.010183 -45.349421) (xy 64.739766 -45.237411) (xy 64.496398 -45.074797) (xy 64.28943 -44.867829) (xy 64.126816 -44.624461) + (xy 64.014806 -44.354044) (xy 63.957704 -44.066971) (xy 62.646699 -44.066971) (xy 62.809439 -44.229711) (xy 63.09714 -44.660286) + (xy 63.295312 -45.138715) (xy 63.396339 -45.646613) (xy 63.396339 -46.164461) (xy 63.295312 -46.672359) (xy 63.09714 -47.150788) + (xy 62.809439 -47.581363) (xy 62.443265 -47.947537) (xy 62.01269 -48.235238) (xy 61.534261 -48.43341) (xy 61.026363 -48.534437) + (xy 60.508515 -48.534437) (xy 60.000617 -48.43341) (xy 59.934255 -48.405922) (xy 60.144785 -48.721003) (xy 60.305726 -49.109549) + (xy 60.387773 -49.522026) (xy 60.387773 -49.942584) (xy 60.305726 -50.355061) (xy 60.144785 -50.743607) (xy 59.911136 -51.093288) + (xy 59.613756 -51.390668) (xy 59.264075 -51.624317) (xy 58.875529 -51.785258) (xy 58.463052 -51.867305) (xy 58.042494 -51.867305) + (xy 57.630017 -51.785258) (xy 57.241471 -51.624317) (xy 57.151191 -51.563994) (xy 57.151191 -52.261949) (xy 57.138931 -52.386431) + (xy 57.102621 -52.506129) (xy 57.043656 -52.616443) (xy 56.964304 -52.713134) (xy 56.867613 -52.792486) (xy 56.757299 -52.851451) + (xy 56.637601 -52.887761) (xy 56.513119 -52.900021) (xy 53.963119 -52.900021) (xy 53.838637 -52.887761) (xy 53.718939 -52.851451) + (xy 53.608625 -52.792486) (xy 53.511934 -52.713134) (xy 53.432582 -52.616443) (xy 53.373617 -52.506129) (xy 53.337307 -52.386431) + (xy 53.325047 -52.261949) (xy 50.599766 -52.261949) (xy 50.599766 -52.370418) (xy 50.587506 -52.4949) (xy 50.551196 -52.614598) + (xy 50.492231 -52.724912) (xy 50.412879 -52.821603) (xy 50.316188 -52.900955) (xy 50.205874 -52.95992) (xy 50.086176 -52.99623) + (xy 49.961694 -53.00849) (xy 47.705089 -53.00849) (xy 47.70014 -53.033369) (xy 47.539199 -53.421915) (xy 47.30555 -53.771596) + (xy 47.00817 -54.068976) (xy 46.658489 -54.302625) (xy 46.269943 -54.463566) (xy 45.857466 -54.545613) (xy 45.436908 -54.545613) + (xy 45.024431 -54.463566) (xy 44.635885 -54.302625) (xy 44.286204 -54.068976) (xy 43.988824 -53.771596) (xy 43.755175 -53.421915) + (xy 43.594234 -53.033369) (xy 43.512187 -52.620892) (xy 43.512187 -52.200334) (xy 43.594234 -51.787857) (xy 43.755175 -51.399311) + (xy 43.988824 -51.04963) (xy 44.286204 -50.75225) (xy 44.635885 -50.518601) (xy 45.024431 -50.35766) (xy 45.436908 -50.275613) + (xy 45.857466 -50.275613) (xy 46.269943 -50.35766) (xy 46.658489 -50.518601) (xy 46.773622 -50.59553) (xy 46.773622 -49.870418) + (xy 46.785882 -49.745936) (xy 46.822192 -49.626238) (xy 46.881157 -49.515924) (xy 46.960509 -49.419233) (xy 47.0572 -49.339881) + (xy 47.167514 -49.280916) (xy 47.287212 -49.244606) (xy 47.411694 -49.232346) (xy 47.926695 -49.232346) (xy 47.926694 -41.381496) + (xy 42.064096 -35.518897) (xy 40.281198 -35.518897) (xy 40.276249 -35.543776) (xy 40.115308 -35.932322) (xy 39.881659 -36.282003) + (xy 39.584279 -36.579383) (xy 39.234598 -36.813032) (xy 38.846052 -36.973973) (xy 38.433575 -37.05602) (xy 38.013017 -37.05602) + (xy 37.60054 -36.973973) (xy 37.211994 -36.813032) (xy 36.862313 -36.579383) (xy 36.564933 -36.282003) (xy 36.331284 -35.932322) + (xy 36.170343 -35.543776) (xy 36.088296 -35.131299) (xy 36.088296 -34.710741) (xy 36.170343 -34.298264) (xy 36.331284 -33.909718) + (xy 36.564933 -33.560037) (xy 36.862313 -33.262657) (xy 37.211994 -33.029008) (xy 37.60054 -32.868067) (xy 38.013017 -32.78602) + (xy 38.433575 -32.78602) (xy 38.846052 -32.868067) (xy 39.234598 -33.029008) (xy 39.349731 -33.105937) (xy 39.349731 -32.380825) + (xy 39.361991 -32.256343) (xy 39.398301 -32.136645) (xy 39.457266 -32.026331) (xy 39.536618 -31.92964) (xy 39.633309 -31.850288) + (xy 39.743623 -31.791323) (xy 39.863321 -31.755013) (xy 39.987803 -31.742753) (xy 40.502804 -31.742753) (xy 40.502803 -28.631514) + (xy 40.458866 -28.587577) (xy 40.345598 -28.418059) (xy 40.267577 -28.229701) (xy 40.227803 -28.029742) (xy 40.227803 -27.825864) + (xy 40.267577 -27.625905) (xy 40.345598 -27.437547) (xy 40.458866 -27.268029) (xy 40.502804 -27.224091) (xy 40.502803 -23.797605) + (xy 34.734504 -18.029305) (xy 32.857306 -18.029305) (xy 32.852357 -18.054184) (xy 32.691416 -18.44273) (xy 32.457767 -18.792411) + (xy 32.160387 -19.089791) (xy 31.810706 -19.32344) (xy 31.42216 -19.484381) (xy 31.009683 -19.566428) (xy 30.589125 -19.566428) + (xy 30.176648 -19.484381) (xy 29.788102 -19.32344) (xy 29.438421 -19.089791) (xy 29.141041 -18.792411) (xy 28.907392 -18.44273) + (xy 28.746451 -18.054184) (xy 28.664404 -17.641707) (xy 28.664404 -17.221149) (xy 28.746451 -16.808672) (xy 28.907392 -16.420126) + (xy 29.141041 -16.070445) (xy 29.438421 -15.773065) (xy 29.788102 -15.539416) (xy 30.176648 -15.378475) (xy 30.589125 -15.296428) + (xy 31.009683 -15.296428) (xy 31.42216 -15.378475) (xy 31.810706 -15.539416) (xy 31.925839 -15.616345) (xy 31.925839 -14.891233) + (xy 31.938099 -14.766751) (xy 31.974409 -14.647053) (xy 32.033374 -14.536739) (xy 32.112726 -14.440048) (xy 32.209417 -14.360696) + (xy 32.319731 -14.301731) (xy 32.439429 -14.265421) (xy 32.563911 -14.253161) (xy 33.078912 -14.253161) (xy 33.078911 -6.213713) + (xy 27.404912 -0.539713) (xy 25.433415 -0.539713) (xy 25.428466 -0.564592) (xy 25.267525 -0.953138) (xy 25.033876 -1.302819) + (xy 24.736496 -1.600199) (xy 24.386815 -1.833848) (xy 23.998269 -1.994789) (xy 23.585792 -2.076836) (xy 23.165234 -2.076836) + (xy 22.752757 -1.994789) (xy 22.364211 -1.833848) (xy 22.01453 -1.600199) (xy 21.71715 -1.302819) (xy 21.483501 -0.953138) + (xy 21.32256 -0.564592) (xy 21.240513 -0.152115) (xy 18.672851 -0.152115) (xy 18.672851 -0.295175) (xy 18.590804 -0.707652) + (xy 18.429863 -1.096198) (xy 18.196214 -1.445879) (xy 17.898834 -1.743259) (xy 17.549153 -1.976908) (xy 17.160607 -2.137849) + (xy 16.74813 -2.219896) (xy 16.327572 -2.219896) (xy 15.915095 -2.137849) (xy 15.526549 -1.976908) (xy 15.436269 -1.916585) + (xy 15.436269 -2.61454) (xy 15.424009 -2.739022) (xy 15.387699 -2.85872) (xy 15.328734 -2.969034) (xy 15.249382 -3.065725) + (xy 15.152691 -3.145077) (xy 15.042377 -3.204042) (xy 14.922679 -3.240352) (xy 14.798197 -3.252612) (xy 12.248197 -3.252612) + (xy 12.123715 -3.240352) (xy 12.004017 -3.204042) (xy 11.893703 -3.145077) (xy 11.797012 -3.065725) (xy 11.71766 -2.969034) + (xy 11.658695 -2.85872) (xy 11.622385 -2.739022) (xy 11.610125 -2.61454) (xy 9.275575 -2.61454) (xy 9.275575 -3.000768) + (xy 14.404391 -8.129584) (xy 24.754872 -8.129584) (xy 24.766046 -8.005) (xy 24.80131 -7.88499) (xy 24.859309 -7.774165) + (xy 24.937815 -7.676785) (xy 25.03381 -7.596592) (xy 25.143606 -7.536668) (xy 25.972061 -7.18501) (xy 26.091437 -7.147656) + (xy 26.215807 -7.13431) (xy 26.23111 -7.135683) (xy 26.237313 -7.066525) (xy 26.272577 -6.946515) (xy 26.330576 -6.83569) + (xy 26.409082 -6.73831) (xy 26.505077 -6.658117) (xy 26.614872 -6.598193) (xy 28.25153 -5.903473) (xy 28.370907 -5.866119) + (xy 28.495277 -5.852773) (xy 28.619861 -5.863947) (xy 28.739871 -5.899211) (xy 28.850696 -5.95721) (xy 28.948076 -6.035716) + (xy 29.028269 -6.131711) (xy 29.088193 -6.241506) (xy 29.782913 -7.878164) (xy 29.820267 -7.997541) (xy 29.833613 -8.121911) + (xy 29.822439 -8.246495) (xy 29.787175 -8.366505) (xy 29.729176 -8.47733) (xy 29.65067 -8.57471) (xy 29.554675 -8.654903) + (xy 29.44488 -8.714827) (xy 27.808222 -9.409547) (xy 27.688845 -9.446901) (xy 27.564475 -9.460247) (xy 27.439891 -9.449073) + (xy 27.319881 -9.413809) (xy 27.209056 -9.35581) (xy 27.155001 -9.312232) (xy 27.145357 -9.324195) (xy 27.049362 -9.404388) + (xy 26.939566 -9.464312) (xy 26.111111 -9.81597) (xy 25.991735 -9.853324) (xy 25.867365 -9.86667) (xy 25.742781 -9.855496) + (xy 25.622771 -9.820232) (xy 25.511946 -9.762233) (xy 25.414566 -9.683727) (xy 25.334373 -9.587732) (xy 25.274449 -9.477936) + (xy 24.805572 -8.37333) (xy 24.768218 -8.253954) (xy 24.754872 -8.129584) (xy 14.404391 -8.129584) (xy 15.297398 -9.02259) + (xy 15.326395 -9.046387) (xy 15.421368 -9.162112) (xy 15.49194 -9.294141) (xy 15.535397 -9.437402) (xy 15.546394 -9.549055) + (xy 15.546394 -9.549064) (xy 15.55007 -9.586387) (xy 15.546394 -9.62371) (xy 15.546394 -17.995033) (xy 16.061394 -17.995033) + (xy 16.185876 -18.007293) (xy 16.305574 -18.043603) (xy 16.415888 -18.102568) (xy 16.512579 -18.18192) (xy 16.591931 -18.278611) + (xy 16.650896 -18.388925) (xy 16.687206 -18.508623) (xy 16.699466 -18.633105) (xy 16.699466 -20.104132) (xy 19.034016 -20.104132) + (xy 19.034016 -17.604132) (xy 19.046276 -17.47965) (xy 19.082586 -17.359952) (xy 19.141551 -17.249638) (xy 19.220903 -17.152947) + (xy 19.317594 -17.073595) (xy 19.427908 -17.01463) (xy 19.547606 -16.97832) (xy 19.672088 -16.96606) (xy 20.187089 -16.96606) + (xy 20.187089 -16.934616) (xy 19.552133 -16.299659) (xy 19.52313 -16.275857) (xy 19.486205 -16.230863) (xy 19.428157 -16.160132) + (xy 19.380218 -16.070445) (xy 19.357585 -16.028102) (xy 19.314128 -15.884841) (xy 19.303131 -15.773188) (xy 19.303131 -15.773178) + (xy 19.299455 -15.735856) (xy 19.303131 -15.698533) (xy 19.303132 -11.623713) (xy 19.299455 -11.586381) (xy 19.303132 -11.549048) + (xy 19.314129 -11.437395) (xy 19.314994 -11.434545) (xy 19.357585 -11.294135) (xy 19.428157 -11.162105) (xy 19.481638 -11.096939) + (xy 19.487674 -11.089584) (xy 19.42813 -10.790237) (xy 19.42813 -10.477527) (xy 19.489137 -10.170825) (xy 19.608806 -9.881919) + (xy 19.782538 -9.62191) (xy 20.003658 -9.40079) (xy 20.263667 -9.227058) (xy 20.552573 -9.107389) (xy 20.859275 -9.046382) + (xy 21.171985 -9.046382) (xy 21.478687 -9.107389) (xy 21.750279 -9.219886) (xy 21.763644 -9.174402) (xy 21.821643 -9.063577) + (xy 21.900149 -8.966197) (xy 21.996144 -8.886004) (xy 22.10594 -8.82608) (xy 22.934395 -8.474422) (xy 23.053771 -8.437068) + (xy 23.178141 -8.423722) (xy 23.302725 -8.434896) (xy 23.422735 -8.47016) (xy 23.53356 -8.528159) (xy 23.63094 -8.606665) + (xy 23.711133 -8.70266) (xy 23.771057 -8.812456) (xy 24.239934 -9.917062) (xy 24.277288 -10.036438) (xy 24.290634 -10.160808) + (xy 24.27946 -10.285392) (xy 24.244196 -10.405402) (xy 24.186197 -10.516227) (xy 24.107691 -10.613607) (xy 24.011696 -10.6938) + (xy 23.9019 -10.753724) (xy 23.073445 -11.105382) (xy 22.954069 -11.142736) (xy 22.829699 -11.156082) (xy 22.722445 -11.146462) + (xy 22.699941 -11.173883) (xy 22.584216 -11.268856) (xy 22.452187 -11.339428) (xy 22.440171 -11.343073) (xy 22.422454 -11.385845) + (xy 22.248722 -11.645854) (xy 22.027602 -11.866974) (xy 21.767593 -12.040706) (xy 21.478687 -12.160375) (xy 21.171985 -12.221382) + (xy 20.859275 -12.221382) (xy 20.823131 -12.214192) (xy 20.823131 -14.608366) (xy 20.853037 -14.57846) (xy 21.096405 -14.415846) + (xy 21.366822 -14.303836) (xy 21.653895 -14.246734) (xy 21.946591 -14.246734) (xy 22.233664 -14.303836) (xy 22.504081 -14.415846) + (xy 22.747449 -14.57846) (xy 22.954417 -14.785428) (xy 23.117031 -15.028796) (xy 23.229041 -15.299213) (xy 23.278266 -15.546686) + (xy 23.338986 -15.521535) (xy 23.751463 -15.439488) (xy 24.172021 -15.439488) (xy 24.51946 -15.508598) (xy 24.434408 -15.423546) + (xy 24.146707 -14.992971) (xy 23.948535 -14.514542) (xy 23.847508 -14.006644) (xy 23.847508 -13.488796) (xy 23.948535 -12.980898) + (xy 24.146707 -12.502469) (xy 24.434408 -12.071894) (xy 24.800582 -11.70572) (xy 25.231157 -11.418019) (xy 25.709586 -11.219847) + (xy 26.217484 -11.11882) (xy 26.735332 -11.11882) (xy 27.24323 -11.219847) (xy 27.721659 -11.418019) (xy 28.152234 -11.70572) + (xy 28.355668 -11.909154) (xy 29.666673 -11.909154) (xy 29.666673 -11.616458) (xy 29.723775 -11.329385) (xy 29.835785 -11.058968) + (xy 29.998399 -10.8156) (xy 30.205367 -10.608632) (xy 30.448735 -10.446018) (xy 30.719152 -10.334008) (xy 31.006225 -10.276906) + (xy 31.298921 -10.276906) (xy 31.585994 -10.334008) (xy 31.856411 -10.446018) (xy 32.099779 -10.608632) (xy 32.306747 -10.8156) + (xy 32.469361 -11.058968) (xy 32.581371 -11.329385) (xy 32.638473 -11.616458) (xy 32.638473 -11.909154) (xy 32.581371 -12.196227) + (xy 32.469361 -12.466644) (xy 32.306747 -12.710012) (xy 32.099779 -12.91698) (xy 31.856411 -13.079594) (xy 31.585994 -13.191604) + (xy 31.298921 -13.248706) (xy 31.006225 -13.248706) (xy 30.719152 -13.191604) (xy 30.448735 -13.079594) (xy 30.205367 -12.91698) + (xy 29.998399 -12.710012) (xy 29.835785 -12.466644) (xy 29.723775 -12.196227) (xy 29.666673 -11.909154) (xy 28.355668 -11.909154) + (xy 28.518408 -12.071894) (xy 28.806109 -12.502469) (xy 29.004281 -12.980898) (xy 29.105308 -13.488796) (xy 29.105308 -14.006644) + (xy 29.004281 -14.514542) (xy 28.806109 -14.992971) (xy 28.518408 -15.423546) (xy 28.152234 -15.78972) (xy 27.721659 -16.077421) + (xy 27.24323 -16.275593) (xy 26.735332 -16.37662) (xy 26.217484 -16.37662) (xy 25.709586 -16.275593) (xy 25.643224 -16.248105) + (xy 25.853754 -16.563186) (xy 26.014695 -16.951732) (xy 26.096742 -17.364209) (xy 26.096742 -17.784767) (xy 26.014695 -18.197244) + (xy 25.853754 -18.58579) (xy 25.620105 -18.935471) (xy 25.322725 -19.232851) (xy 24.973044 -19.4665) (xy 24.584498 -19.627441) + (xy 24.172021 -19.709488) (xy 23.751463 -19.709488) (xy 23.338986 -19.627441) (xy 22.95044 -19.4665) (xy 22.86016 -19.406177) + (xy 22.86016 -20.104132) (xy 22.8479 -20.228614) (xy 22.81159 -20.348312) (xy 22.752625 -20.458626) (xy 22.673273 -20.555317) + (xy 22.576582 -20.634669) (xy 22.466268 -20.693634) (xy 22.34657 -20.729944) (xy 22.222088 -20.742204) (xy 19.672088 -20.742204) + (xy 19.547606 -20.729944) (xy 19.427908 -20.693634) (xy 19.317594 -20.634669) (xy 19.220903 -20.555317) (xy 19.141551 -20.458626) + (xy 19.082586 -20.348312) (xy 19.046276 -20.228614) (xy 19.034016 -20.104132) (xy 16.699466 -20.104132) (xy 16.699466 -20.721376) + (xy 21.597266 -25.619176) (xy 32.178763 -25.619176) (xy 32.189937 -25.494592) (xy 32.225201 -25.374582) (xy 32.2832 -25.263757) + (xy 32.361706 -25.166377) (xy 32.457701 -25.086184) (xy 32.567497 -25.02626) (xy 33.395952 -24.674602) (xy 33.515328 -24.637248) + (xy 33.639698 -24.623902) (xy 33.655001 -24.625275) (xy 33.661204 -24.556117) (xy 33.696468 -24.436107) (xy 33.754467 -24.325282) + (xy 33.832973 -24.227902) (xy 33.928968 -24.147709) (xy 34.038763 -24.087785) (xy 35.675421 -23.393065) (xy 35.794798 -23.355711) + (xy 35.919168 -23.342365) (xy 36.043752 -23.353539) (xy 36.163762 -23.388803) (xy 36.274587 -23.446802) (xy 36.371967 -23.525308) + (xy 36.45216 -23.621303) (xy 36.512084 -23.731098) (xy 37.206804 -25.367756) (xy 37.244158 -25.487133) (xy 37.257504 -25.611503) + (xy 37.24633 -25.736087) (xy 37.211066 -25.856097) (xy 37.153067 -25.966922) (xy 37.074561 -26.064302) (xy 36.978566 -26.144495) + (xy 36.868771 -26.204419) (xy 35.232113 -26.899139) (xy 35.112736 -26.936493) (xy 34.988366 -26.949839) (xy 34.863782 -26.938665) + (xy 34.743772 -26.903401) (xy 34.632947 -26.845402) (xy 34.578892 -26.801824) (xy 34.569248 -26.813787) (xy 34.473253 -26.89398) + (xy 34.363457 -26.953904) (xy 33.535002 -27.305562) (xy 33.415626 -27.342916) (xy 33.291256 -27.356262) (xy 33.166672 -27.345088) + (xy 33.046662 -27.309824) (xy 32.935837 -27.251825) (xy 32.838457 -27.173319) (xy 32.758264 -27.077324) (xy 32.69834 -26.967528) + (xy 32.229463 -25.862922) (xy 32.192109 -25.743546) (xy 32.178763 -25.619176) (xy 21.597266 -25.619176) (xy 22.72129 -26.743199) + (xy 22.750287 -26.766996) (xy 22.84526 -26.882721) (xy 22.915832 -27.01475) (xy 22.959289 -27.158011) (xy 22.970286 -27.269664) + (xy 22.970286 -27.269672) (xy 22.973962 -27.306997) (xy 22.970286 -27.344322) (xy 22.970286 -35.484625) (xy 23.485286 -35.484625) + (xy 23.609768 -35.496885) (xy 23.729466 -35.533195) (xy 23.83978 -35.59216) (xy 23.936471 -35.671512) (xy 24.015823 -35.768203) + (xy 24.074788 -35.878517) (xy 24.111098 -35.998215) (xy 24.123358 -36.122697) (xy 24.123358 -37.593724) (xy 26.457908 -37.593724) + (xy 26.457908 -35.093724) (xy 26.470168 -34.969242) (xy 26.506478 -34.849544) (xy 26.565443 -34.73923) (xy 26.644795 -34.642539) + (xy 26.741486 -34.563187) (xy 26.8518 -34.504222) (xy 26.971498 -34.467912) (xy 27.09598 -34.455652) (xy 27.288234 -34.455652) + (xy 27.288235 -29.217252) (xy 27.206429 -29.135446) (xy 27.032697 -28.875437) (xy 26.913028 -28.586531) (xy 26.852021 -28.279829) + (xy 26.852021 -27.967119) (xy 26.913028 -27.660417) (xy 27.032697 -27.371511) (xy 27.206429 -27.111502) (xy 27.427549 -26.890382) + (xy 27.687558 -26.71665) (xy 27.976464 -26.596981) (xy 28.283166 -26.535974) (xy 28.595876 -26.535974) (xy 28.902578 -26.596981) + (xy 29.17417 -26.709478) (xy 29.187535 -26.663994) (xy 29.245534 -26.553169) (xy 29.32404 -26.455789) (xy 29.420035 -26.375596) + (xy 29.529831 -26.315672) (xy 30.358286 -25.964014) (xy 30.477662 -25.92666) (xy 30.602032 -25.913314) (xy 30.726616 -25.924488) + (xy 30.846626 -25.959752) (xy 30.957451 -26.017751) (xy 31.054831 -26.096257) (xy 31.135024 -26.192252) (xy 31.194948 -26.302048) + (xy 31.663825 -27.406654) (xy 31.701179 -27.52603) (xy 31.714525 -27.6504) (xy 31.703351 -27.774984) (xy 31.668087 -27.894994) + (xy 31.610088 -28.005819) (xy 31.531582 -28.103199) (xy 31.435587 -28.183392) (xy 31.325791 -28.243316) (xy 30.497336 -28.594974) + (xy 30.37796 -28.632328) (xy 30.25359 -28.645674) (xy 30.146336 -28.636054) (xy 30.123832 -28.663475) (xy 30.008107 -28.758448) + (xy 29.876078 -28.82902) (xy 29.864062 -28.832665) (xy 29.846345 -28.875437) (xy 29.672613 -29.135446) (xy 29.451493 -29.356566) + (xy 29.191484 -29.530298) (xy 28.902578 -29.649967) (xy 28.808234 -29.668733) (xy 28.808234 -31.789943) (xy 29.077787 -31.736326) + (xy 29.370483 -31.736326) (xy 29.657556 -31.793428) (xy 29.927973 -31.905438) (xy 30.171341 -32.068052) (xy 30.378309 -32.27502) + (xy 30.540923 -32.518388) (xy 30.652933 -32.788805) (xy 30.702158 -33.036278) (xy 30.762878 -33.011127) (xy 31.175355 -32.92908) + (xy 31.595913 -32.92908) (xy 31.943352 -32.99819) (xy 31.8583 -32.913138) (xy 31.570599 -32.482563) (xy 31.372427 -32.004134) + (xy 31.2714 -31.496236) (xy 31.2714 -30.978388) (xy 31.372427 -30.47049) (xy 31.570599 -29.992061) (xy 31.8583 -29.561486) + (xy 32.224474 -29.195312) (xy 32.655049 -28.907611) (xy 33.133478 -28.709439) (xy 33.641376 -28.608412) (xy 34.159224 -28.608412) + (xy 34.667122 -28.709439) (xy 35.145551 -28.907611) (xy 35.576126 -29.195312) (xy 35.77956 -29.398746) (xy 37.090565 -29.398746) + (xy 37.090565 -29.10605) (xy 37.147667 -28.818977) (xy 37.259677 -28.54856) (xy 37.422291 -28.305192) (xy 37.629259 -28.098224) + (xy 37.872627 -27.93561) (xy 38.143044 -27.8236) (xy 38.430117 -27.766498) (xy 38.722813 -27.766498) (xy 39.009886 -27.8236) + (xy 39.280303 -27.93561) (xy 39.523671 -28.098224) (xy 39.730639 -28.305192) (xy 39.893253 -28.54856) (xy 40.005263 -28.818977) + (xy 40.062365 -29.10605) (xy 40.062365 -29.398746) (xy 40.005263 -29.685819) (xy 39.893253 -29.956236) (xy 39.730639 -30.199604) + (xy 39.523671 -30.406572) (xy 39.280303 -30.569186) (xy 39.009886 -30.681196) (xy 38.722813 -30.738298) (xy 38.430117 -30.738298) + (xy 38.143044 -30.681196) (xy 37.872627 -30.569186) (xy 37.629259 -30.406572) (xy 37.422291 -30.199604) (xy 37.259677 -29.956236) + (xy 37.147667 -29.685819) (xy 37.090565 -29.398746) (xy 35.77956 -29.398746) (xy 35.9423 -29.561486) (xy 36.230001 -29.992061) + (xy 36.428173 -30.47049) (xy 36.5292 -30.978388) (xy 36.5292 -31.496236) (xy 36.428173 -32.004134) (xy 36.230001 -32.482563) + (xy 35.9423 -32.913138) (xy 35.576126 -33.279312) (xy 35.145551 -33.567013) (xy 34.667122 -33.765185) (xy 34.159224 -33.866212) + (xy 33.641376 -33.866212) (xy 33.133478 -33.765185) (xy 33.067116 -33.737697) (xy 33.277646 -34.052778) (xy 33.438587 -34.441324) + (xy 33.520634 -34.853801) (xy 33.520634 -35.274359) (xy 33.438587 -35.686836) (xy 33.277646 -36.075382) (xy 33.043997 -36.425063) + (xy 32.746617 -36.722443) (xy 32.396936 -36.956092) (xy 32.00839 -37.117033) (xy 31.595913 -37.19908) (xy 31.175355 -37.19908) + (xy 30.762878 -37.117033) (xy 30.374332 -36.956092) (xy 30.284052 -36.895769) (xy 30.284052 -37.593724) (xy 30.271792 -37.718206) + (xy 30.235482 -37.837904) (xy 30.176517 -37.948218) (xy 30.097165 -38.044909) (xy 30.000474 -38.124261) (xy 29.89016 -38.183226) + (xy 29.770462 -38.219536) (xy 29.64598 -38.231796) (xy 27.09598 -38.231796) (xy 26.971498 -38.219536) (xy 26.8518 -38.183226) + (xy 26.741486 -38.124261) (xy 26.644795 -38.044909) (xy 26.565443 -37.948218) (xy 26.506478 -37.837904) (xy 26.470168 -37.718206) + (xy 26.457908 -37.593724) (xy 24.123358 -37.593724) (xy 24.123358 -38.622697) (xy 24.111098 -38.747179) (xy 24.074788 -38.866877) + (xy 24.015823 -38.977191) (xy 23.936471 -39.073882) (xy 23.83978 -39.153234) (xy 23.729466 -39.212199) (xy 23.648999 -39.236609) + (xy 27.521158 -43.108768) (xy 39.602655 -43.108768) (xy 39.613829 -42.984184) (xy 39.649093 -42.864174) (xy 39.707092 -42.753349) + (xy 39.785598 -42.655969) (xy 39.881593 -42.575776) (xy 39.991389 -42.515852) (xy 40.819844 -42.164194) (xy 40.93922 -42.12684) + (xy 41.06359 -42.113494) (xy 41.078893 -42.114867) (xy 41.085096 -42.045709) (xy 41.12036 -41.925699) (xy 41.178359 -41.814874) + (xy 41.256865 -41.717494) (xy 41.35286 -41.637301) (xy 41.462655 -41.577377) (xy 43.099313 -40.882657) (xy 43.21869 -40.845303) + (xy 43.34306 -40.831957) (xy 43.467644 -40.843131) (xy 43.587654 -40.878395) (xy 43.698479 -40.936394) (xy 43.795859 -41.0149) + (xy 43.876052 -41.110895) (xy 43.935976 -41.22069) (xy 44.630696 -42.857348) (xy 44.66805 -42.976725) (xy 44.681396 -43.101095) + (xy 44.670222 -43.225679) (xy 44.634958 -43.345689) (xy 44.576959 -43.456514) (xy 44.498453 -43.553894) (xy 44.402458 -43.634087) + (xy 44.292663 -43.694011) (xy 42.656005 -44.388731) (xy 42.536628 -44.426085) (xy 42.412258 -44.439431) (xy 42.287674 -44.428257) + (xy 42.167664 -44.392993) (xy 42.056839 -44.334994) (xy 42.002784 -44.291416) (xy 41.99314 -44.303379) (xy 41.897145 -44.383572) + (xy 41.787349 -44.443496) (xy 40.958894 -44.795154) (xy 40.839518 -44.832508) (xy 40.715148 -44.845854) (xy 40.590564 -44.83468) + (xy 40.470554 -44.799416) (xy 40.359729 -44.741417) (xy 40.262349 -44.662911) (xy 40.182156 -44.566916) (xy 40.122232 -44.45712) + (xy 39.653355 -43.352514) (xy 39.616001 -43.233138) (xy 39.602655 -43.108768) (xy 27.521158 -43.108768) (xy 30.145181 -45.73279) + (xy 30.174178 -45.756587) (xy 30.269151 -45.872312) (xy 30.339723 -46.004341) (xy 30.38318 -46.147602) (xy 30.394177 -46.259255) + (xy 30.394177 -46.259264) (xy 30.397853 -46.296587) (xy 30.394177 -46.33391) (xy 30.394177 -49.037112) (xy 30.438114 -49.081049) + (xy 30.551382 -49.250567) (xy 30.629403 -49.438925) (xy 30.669177 -49.638884) (xy 30.669177 -49.842762) (xy 30.629403 -50.042721) + (xy 30.551382 -50.231079) (xy 30.438114 -50.400597) (xy 30.394177 -50.444534) (xy 30.394177 -52.974218) (xy 30.909177 -52.974218) + (xy 31.033659 -52.986478) (xy 31.153357 -53.022788) (xy 31.263671 -53.081753) (xy 31.360362 -53.161105) (xy 31.439714 -53.257796) + (xy 31.498679 -53.36811) (xy 31.534989 -53.487808) (xy 31.547249 -53.61229) (xy 31.547249 -55.083317) (xy 33.881799 -55.083317) + (xy 33.881799 -52.583317) (xy 33.894059 -52.458835) (xy 33.930369 -52.339137) (xy 33.989334 -52.228823) (xy 34.068686 -52.132132) + (xy 34.150915 -52.064649) (xy 34.150914 -46.602888) (xy 34.147238 -46.565565) (xy 34.150914 -46.528243) (xy 34.150914 -46.528233) + (xy 34.161911 -46.41658) (xy 34.191629 -46.318612) (xy 34.205368 -46.273319) (xy 34.27594 -46.141289) (xy 34.291836 -46.12192) + (xy 34.335457 -46.068768) (xy 34.275913 -45.769421) (xy 34.275913 -45.456711) (xy 34.33692 -45.150009) (xy 34.456589 -44.861103) + (xy 34.630321 -44.601094) (xy 34.851441 -44.379974) (xy 35.11145 -44.206242) (xy 35.400356 -44.086573) (xy 35.707058 -44.025566) + (xy 36.019768 -44.025566) (xy 36.32647 -44.086573) (xy 36.598062 -44.19907) (xy 36.611427 -44.153586) (xy 36.669426 -44.042761) + (xy 36.747932 -43.945381) (xy 36.843927 -43.865188) (xy 36.953723 -43.805264) (xy 37.782178 -43.453606) (xy 37.901554 -43.416252) + (xy 38.025924 -43.402906) (xy 38.150508 -43.41408) (xy 38.270518 -43.449344) (xy 38.381343 -43.507343) (xy 38.478723 -43.585849) + (xy 38.558916 -43.681844) (xy 38.61884 -43.79164) (xy 39.087717 -44.896246) (xy 39.125071 -45.015622) (xy 39.138417 -45.139992) + (xy 39.127243 -45.264576) (xy 39.091979 -45.384586) (xy 39.03398 -45.495411) (xy 38.955474 -45.592791) (xy 38.859479 -45.672984) + (xy 38.749683 -45.732908) (xy 37.921228 -46.084566) (xy 37.801852 -46.12192) (xy 37.677482 -46.135266) (xy 37.570228 -46.125646) + (xy 37.547724 -46.153067) (xy 37.431999 -46.24804) (xy 37.29997 -46.318612) (xy 37.287954 -46.322257) (xy 37.270237 -46.365029) + (xy 37.096505 -46.625038) (xy 36.875385 -46.846158) (xy 36.615376 -47.01989) (xy 36.32647 -47.139559) (xy 36.019768 -47.200566) + (xy 35.707058 -47.200566) (xy 35.670914 -47.193376) (xy 35.670914 -49.587551) (xy 35.70082 -49.557645) (xy 35.944188 -49.395031) + (xy 36.214605 -49.283021) (xy 36.501678 -49.225919) (xy 36.794374 -49.225919) (xy 37.081447 -49.283021) (xy 37.351864 -49.395031) + (xy 37.595232 -49.557645) (xy 37.8022 -49.764613) (xy 37.964814 -50.007981) (xy 38.076824 -50.278398) (xy 38.126049 -50.525871) + (xy 38.186769 -50.50072) (xy 38.599246 -50.418673) (xy 39.019804 -50.418673) (xy 39.367243 -50.487783) (xy 39.282191 -50.402731) + (xy 38.99449 -49.972156) (xy 38.796318 -49.493727) (xy 38.695291 -48.985829) (xy 38.695291 -48.467981) (xy 38.796318 -47.960083) + (xy 38.99449 -47.481654) (xy 39.282191 -47.051079) (xy 39.648365 -46.684905) (xy 40.07894 -46.397204) (xy 40.557369 -46.199032) + (xy 41.065267 -46.098005) (xy 41.583115 -46.098005) (xy 42.091013 -46.199032) (xy 42.569442 -46.397204) (xy 43.000017 -46.684905) + (xy 43.203451 -46.888339) (xy 44.514456 -46.888339) (xy 44.514456 -46.595643) (xy 44.571558 -46.30857) (xy 44.683568 -46.038153) + (xy 44.846182 -45.794785) (xy 45.05315 -45.587817) (xy 45.296518 -45.425203) (xy 45.566935 -45.313193) (xy 45.854008 -45.256091) + (xy 46.146704 -45.256091) (xy 46.433777 -45.313193) (xy 46.704194 -45.425203) (xy 46.947562 -45.587817) (xy 47.15453 -45.794785) + (xy 47.317144 -46.038153) (xy 47.429154 -46.30857) (xy 47.486256 -46.595643) (xy 47.486256 -46.888339) (xy 47.429154 -47.175412) + (xy 47.317144 -47.445829) (xy 47.15453 -47.689197) (xy 46.947562 -47.896165) (xy 46.704194 -48.058779) (xy 46.433777 -48.170789) + (xy 46.146704 -48.227891) (xy 45.854008 -48.227891) (xy 45.566935 -48.170789) (xy 45.296518 -48.058779) (xy 45.05315 -47.896165) + (xy 44.846182 -47.689197) (xy 44.683568 -47.445829) (xy 44.571558 -47.175412) (xy 44.514456 -46.888339) (xy 43.203451 -46.888339) + (xy 43.366191 -47.051079) (xy 43.653892 -47.481654) (xy 43.852064 -47.960083) (xy 43.953091 -48.467981) (xy 43.953091 -48.985829) + (xy 43.852064 -49.493727) (xy 43.653892 -49.972156) (xy 43.366191 -50.402731) (xy 43.000017 -50.768905) (xy 42.569442 -51.056606) + (xy 42.091013 -51.254778) (xy 41.583115 -51.355805) (xy 41.065267 -51.355805) (xy 40.557369 -51.254778) (xy 40.491007 -51.22729) + (xy 40.701537 -51.542371) (xy 40.862478 -51.930917) (xy 40.944525 -52.343394) (xy 40.944525 -52.763952) (xy 40.862478 -53.176429) + (xy 40.701537 -53.564975) (xy 40.467888 -53.914656) (xy 40.170508 -54.212036) (xy 39.820827 -54.445685) (xy 39.432281 -54.606626) + (xy 39.019804 -54.688673) (xy 38.599246 -54.688673) (xy 38.186769 -54.606626) (xy 37.798223 -54.445685) (xy 37.707943 -54.385362) + (xy 37.707943 -55.083317) (xy 37.695683 -55.207799) (xy 37.659373 -55.327497) (xy 37.600408 -55.437811) (xy 37.521056 -55.534502) + (xy 37.424365 -55.613854) (xy 37.314051 -55.672819) (xy 37.194353 -55.709129) (xy 37.069871 -55.721389) (xy 34.519871 -55.721389) + (xy 34.395389 -55.709129) (xy 34.275691 -55.672819) (xy 34.165377 -55.613854) (xy 34.068686 -55.534502) (xy 33.989334 -55.437811) + (xy 33.930369 -55.327497) (xy 33.894059 -55.207799) (xy 33.881799 -55.083317) (xy 31.547249 -55.083317) (xy 31.547249 -56.11229) + (xy 31.534989 -56.236772) (xy 31.498679 -56.35647) (xy 31.439714 -56.466784) (xy 31.360362 -56.563475) (xy 31.263671 -56.642827) + (xy 31.153357 -56.701792) (xy 31.033659 -56.738102) (xy 30.909177 -56.750362) (xy 28.652572 -56.750362) (xy 28.647623 -56.775241) + (xy 28.486682 -57.163787) (xy 28.253033 -57.513468) (xy 27.955653 -57.810848) (xy 27.605972 -58.044497) (xy 27.217426 -58.205438) + (xy 26.804949 -58.287485) (xy 26.384391 -58.287485) (xy 25.971914 -58.205438) (xy 25.583368 -58.044497) (xy 25.233687 -57.810848) + (xy 24.936307 -57.513468) (xy 24.702658 -57.163787) (xy 24.541717 -56.775241) (xy 24.45967 -56.362764) (xy 24.45967 -55.942206) + (xy 24.541717 -55.529729) (xy 24.702658 -55.141183) (xy 24.936307 -54.791502) (xy 25.233687 -54.494122) (xy 25.583368 -54.260473) + (xy 25.971914 -54.099532) (xy 26.384391 -54.017485) (xy 26.804949 -54.017485) (xy 27.217426 -54.099532) (xy 27.605972 -54.260473) + (xy 27.721105 -54.337402) (xy 27.721105 -53.61229) (xy 27.733365 -53.487808) (xy 27.769675 -53.36811) (xy 27.82864 -53.257796) + (xy 27.907992 -53.161105) (xy 28.004683 -53.081753) (xy 28.114997 -53.022788) (xy 28.234695 -52.986478) (xy 28.359177 -52.974218) + (xy 28.874178 -52.974218) (xy 28.874177 -50.444534) (xy 28.83024 -50.400597) (xy 28.716972 -50.231079) (xy 28.638951 -50.042721) + (xy 28.599177 -49.842762) (xy 28.599177 -49.638884) (xy 28.638951 -49.438925) (xy 28.716972 -49.250567) (xy 28.83024 -49.081049) + (xy 28.874178 -49.037111) (xy 28.874177 -46.61139) (xy 21.699284 -39.436496) (xy 21.670286 -39.412698) (xy 21.646488 -39.3837) + (xy 21.646487 -39.383699) (xy 21.575312 -39.296973) (xy 21.55596 -39.260769) (xy 21.228681 -39.260769) (xy 21.223732 -39.285648) + (xy 21.062791 -39.674194) (xy 20.829142 -40.023875) (xy 20.531762 -40.321255) (xy 20.182081 -40.554904) (xy 19.793535 -40.715845) + (xy 19.381058 -40.797892) (xy 18.9605 -40.797892) (xy 18.548023 -40.715845) (xy 18.159477 -40.554904) (xy 17.809796 -40.321255) + (xy 17.512416 -40.023875) (xy 17.278767 -39.674194) (xy 17.117826 -39.285648) (xy 17.035779 -38.873171) (xy 17.035779 -38.452613) + (xy 17.117826 -38.040136) (xy 17.278767 -37.65159) (xy 17.512416 -37.301909) (xy 17.809796 -37.004529) (xy 18.159477 -36.77088) + (xy 18.548023 -36.609939) (xy 18.9605 -36.527892) (xy 19.381058 -36.527892) (xy 19.793535 -36.609939) (xy 20.182081 -36.77088) + (xy 20.297214 -36.847809) (xy 20.297214 -36.122697) (xy 20.309474 -35.998215) (xy 20.345784 -35.878517) (xy 20.404749 -35.768203) + (xy 20.484101 -35.671512) (xy 20.580792 -35.59216) (xy 20.691106 -35.533195) (xy 20.810804 -35.496885) (xy 20.935286 -35.484625) + (xy 21.450287 -35.484625) (xy 21.450286 -27.621799) (xy 15.599665 -21.771177) (xy 13.804789 -21.771177) (xy 13.79984 -21.796056) + (xy 13.638899 -22.184602) (xy 13.40525 -22.534283) (xy 13.10787 -22.831663) (xy 12.758189 -23.065312) (xy 12.369643 -23.226253) + (xy 11.957166 -23.3083) (xy 11.536608 -23.3083) (xy 11.124131 -23.226253) (xy 10.735585 -23.065312) (xy 10.385904 -22.831663) + (xy 10.088524 -22.534283) (xy 9.854875 -22.184602) (xy 9.693934 -21.796056) (xy 9.611887 -21.383579) (xy 9.611887 -20.963021) + (xy 9.693934 -20.550544) (xy 9.854875 -20.161998) (xy 10.088524 -19.812317) (xy 10.385904 -19.514937) (xy 10.735585 -19.281288) + (xy 11.124131 -19.120347) (xy 11.536608 -19.0383) (xy 11.957166 -19.0383) (xy 12.369643 -19.120347) (xy 12.758189 -19.281288) + (xy 12.873322 -19.358217) (xy 12.873322 -18.633105) (xy 12.885582 -18.508623) (xy 12.921892 -18.388925) (xy 12.980857 -18.278611) + (xy 13.060209 -18.18192) (xy 13.1569 -18.102568) (xy 13.267214 -18.043603) (xy 13.386912 -18.007293) (xy 13.511394 -17.995033) + (xy 14.026395 -17.995033) (xy 14.026394 -9.90119) (xy 8.40679 -4.281585) (xy 6.380898 -4.281585) (xy 6.375949 -4.306464) + (xy 6.215008 -4.69501) (xy 5.981359 -5.044691) (xy 5.683979 -5.342071) (xy 5.334298 -5.57572) (xy 4.945752 -5.736661) + (xy 4.533275 -5.818708) (xy 4.112717 -5.818708) (xy 3.70024 -5.736661) (xy 3.311694 -5.57572) (xy 2.962013 -5.342071) + (xy 2.664633 -5.044691) (xy 2.430984 -4.69501) (xy 2.270043 -4.306464) (xy 2.187996 -3.893987) (xy -0.379666 -3.893987) + (xy -0.379666 -4.037047) (xy -0.461713 -4.449524) (xy -0.622654 -4.83807) (xy -0.856303 -5.187751) (xy -1.153683 -5.485131) + (xy -1.503364 -5.71878) (xy -1.89191 -5.879721) (xy -2.304387 -5.961768) (xy -2.724945 -5.961768) (xy -3.137422 -5.879721) + (xy -3.525968 -5.71878) (xy -3.616248 -5.658457) (xy -3.616248 -6.356412) (xy -3.628508 -6.480894) (xy -3.664818 -6.600592) + (xy -3.723783 -6.710906) (xy -3.803135 -6.807597) (xy -3.899826 -6.886949) (xy -4.01014 -6.945914) (xy -4.129838 -6.982224) + (xy -4.25432 -6.994484) (xy -6.80432 -6.994484) (xy -6.928802 -6.982224) (xy -7.0485 -6.945914) (xy -7.158814 -6.886949) + (xy -7.174373 -6.87418) (xy -5.053156 -11.871456) (xy 5.702355 -11.871456) (xy 5.713529 -11.746872) (xy 5.748793 -11.626862) + (xy 5.806792 -11.516037) (xy 5.885298 -11.418657) (xy 5.981293 -11.338464) (xy 6.091089 -11.27854) (xy 6.919544 -10.926882) + (xy 7.03892 -10.889528) (xy 7.16329 -10.876182) (xy 7.178593 -10.877555) (xy 7.184796 -10.808397) (xy 7.22006 -10.688387) + (xy 7.278059 -10.577562) (xy 7.356565 -10.480182) (xy 7.45256 -10.399989) (xy 7.562355 -10.340065) (xy 9.199013 -9.645345) + (xy 9.31839 -9.607991) (xy 9.44276 -9.594645) (xy 9.567344 -9.605819) (xy 9.687354 -9.641083) (xy 9.798179 -9.699082) + (xy 9.895559 -9.777588) (xy 9.975752 -9.873583) (xy 10.035676 -9.983378) (xy 10.730396 -11.620036) (xy 10.76775 -11.739413) + (xy 10.781096 -11.863783) (xy 10.769922 -11.988367) (xy 10.734658 -12.108377) (xy 10.676659 -12.219202) (xy 10.598153 -12.316582) + (xy 10.502158 -12.396775) (xy 10.392363 -12.456699) (xy 8.755705 -13.151419) (xy 8.636328 -13.188773) (xy 8.511958 -13.202119) + (xy 8.387374 -13.190945) (xy 8.267364 -13.155681) (xy 8.156539 -13.097682) (xy 8.102484 -13.054104) (xy 8.09284 -13.066067) + (xy 7.996845 -13.14626) (xy 7.887049 -13.206184) (xy 7.058594 -13.557842) (xy 6.939218 -13.595196) (xy 6.814848 -13.608542) + (xy 6.690264 -13.597368) (xy 6.570254 -13.562104) (xy 6.459429 -13.504105) (xy 6.362049 -13.425599) (xy 6.281856 -13.329604) + (xy 6.221932 -13.219808) (xy 5.753055 -12.115202) (xy 5.715701 -11.995826) (xy 5.702355 -11.871456) (xy -5.053156 -11.871456) + (xy -0.018501 -23.732357) (xy -0.018501 -21.346004) (xy -0.006241 -21.221522) (xy 0.030069 -21.101824) (xy 0.089034 -20.99151) + (xy 0.168386 -20.894819) (xy 0.265077 -20.815467) (xy 0.375391 -20.756502) (xy 0.495089 -20.720192) (xy 0.619571 -20.707932) + (xy 0.811825 -20.707932) (xy 0.811826 -15.469531) (xy 0.730021 -15.387726) (xy 0.556289 -15.127717) (xy 0.43662 -14.838811) + (xy 0.375613 -14.532109) (xy 0.375613 -14.219399) (xy 0.43662 -13.912697) (xy 0.556289 -13.623791) (xy 0.730021 -13.363782) + (xy 0.951141 -13.142662) (xy 1.21115 -12.96893) (xy 1.500056 -12.849261) (xy 1.806758 -12.788254) (xy 2.119468 -12.788254) + (xy 2.42617 -12.849261) (xy 2.697762 -12.961758) (xy 2.711127 -12.916274) (xy 2.769126 -12.805449) (xy 2.847632 -12.708069) + (xy 2.943627 -12.627876) (xy 3.053423 -12.567952) (xy 3.881878 -12.216294) (xy 4.001254 -12.17894) (xy 4.125624 -12.165594) + (xy 4.250208 -12.176768) (xy 4.370218 -12.212032) (xy 4.481043 -12.270031) (xy 4.578423 -12.348537) (xy 4.658616 -12.444532) + (xy 4.71854 -12.554328) (xy 5.187417 -13.658934) (xy 5.224771 -13.77831) (xy 5.238117 -13.90268) (xy 5.226943 -14.027264) + (xy 5.191679 -14.147274) (xy 5.13368 -14.258099) (xy 5.055174 -14.355479) (xy 4.959179 -14.435672) (xy 4.849383 -14.495596) + (xy 4.020928 -14.847254) (xy 3.901552 -14.884608) (xy 3.777182 -14.897954) (xy 3.669928 -14.888334) (xy 3.647424 -14.915755) + (xy 3.531699 -15.010728) (xy 3.39967 -15.0813) (xy 3.387654 -15.084945) (xy 3.369937 -15.127717) (xy 3.196205 -15.387726) + (xy 2.975085 -15.608846) (xy 2.715076 -15.782578) (xy 2.42617 -15.902247) (xy 2.331825 -15.921013) (xy 2.331825 -18.042223) + (xy 2.601378 -17.988606) (xy 2.894074 -17.988606) (xy 3.181147 -18.045708) (xy 3.451564 -18.157718) (xy 3.694932 -18.320332) + (xy 3.9019 -18.5273) (xy 4.064514 -18.770668) (xy 4.176524 -19.041085) (xy 4.225749 -19.288558) (xy 4.286469 -19.263407) + (xy 4.698946 -19.18136) (xy 5.119504 -19.18136) (xy 5.466943 -19.25047) (xy 5.381891 -19.165418) (xy 5.09419 -18.734843) + (xy 4.896018 -18.256414) (xy 4.794991 -17.748516) (xy 4.794991 -17.230668) (xy 4.896018 -16.72277) (xy 5.09419 -16.244341) + (xy 5.381891 -15.813766) (xy 5.748065 -15.447592) (xy 6.17864 -15.159891) (xy 6.657069 -14.961719) (xy 7.164967 -14.860692) + (xy 7.682815 -14.860692) (xy 8.190713 -14.961719) (xy 8.669142 -15.159891) (xy 9.099717 -15.447592) (xy 9.303151 -15.651026) + (xy 10.614156 -15.651026) (xy 10.614156 -15.35833) (xy 10.671258 -15.071257) (xy 10.783268 -14.80084) (xy 10.945882 -14.557472) + (xy 11.15285 -14.350504) (xy 11.396218 -14.18789) (xy 11.666635 -14.07588) (xy 11.953708 -14.018778) (xy 12.246404 -14.018778) + (xy 12.533477 -14.07588) (xy 12.803894 -14.18789) (xy 13.047262 -14.350504) (xy 13.25423 -14.557472) (xy 13.416844 -14.80084) + (xy 13.528854 -15.071257) (xy 13.585956 -15.35833) (xy 13.585956 -15.651026) (xy 13.528854 -15.938099) (xy 13.416844 -16.208516) + (xy 13.25423 -16.451884) (xy 13.047262 -16.658852) (xy 12.803894 -16.821466) (xy 12.533477 -16.933476) (xy 12.246404 -16.990578) + (xy 11.953708 -16.990578) (xy 11.666635 -16.933476) (xy 11.396218 -16.821466) (xy 11.15285 -16.658852) (xy 10.945882 -16.451884) + (xy 10.783268 -16.208516) (xy 10.671258 -15.938099) (xy 10.614156 -15.651026) (xy 9.303151 -15.651026) (xy 9.465891 -15.813766) + (xy 9.753592 -16.244341) (xy 9.951764 -16.72277) (xy 10.052791 -17.230668) (xy 10.052791 -17.748516) (xy 9.951764 -18.256414) + (xy 9.753592 -18.734843) (xy 9.465891 -19.165418) (xy 9.099717 -19.531592) (xy 8.669142 -19.819293) (xy 8.190713 -20.017465) + (xy 7.682815 -20.118492) (xy 7.164967 -20.118492) (xy 6.657069 -20.017465) (xy 6.590707 -19.989977) (xy 6.801237 -20.305058) + (xy 6.962178 -20.693604) (xy 7.044225 -21.106081) (xy 7.044225 -21.526639) (xy 6.962178 -21.939116) (xy 6.801237 -22.327662) + (xy 6.567588 -22.677343) (xy 6.270208 -22.974723) (xy 5.920527 -23.208372) (xy 5.531981 -23.369313) (xy 5.119504 -23.45136) + (xy 4.698946 -23.45136) (xy 4.286469 -23.369313) (xy 3.897923 -23.208372) (xy 3.807643 -23.148049) (xy 3.807643 -23.846004) + (xy 3.795383 -23.970486) (xy 3.759073 -24.090184) (xy 3.700108 -24.200498) (xy 3.620756 -24.297189) (xy 3.524065 -24.376541) + (xy 3.413751 -24.435506) (xy 3.294053 -24.471816) (xy 3.169571 -24.484076) (xy 0.619571 -24.484076) (xy 0.495089 -24.471816) + (xy 0.375391 -24.435506) (xy 0.265077 -24.376541) (xy 0.249519 -24.363773) (xy 2.370736 -29.361048) (xy 13.126246 -29.361048) + (xy 13.13742 -29.236464) (xy 13.172684 -29.116454) (xy 13.230683 -29.005629) (xy 13.309189 -28.908249) (xy 13.405184 -28.828056) + (xy 13.51498 -28.768132) (xy 14.343435 -28.416474) (xy 14.462811 -28.37912) (xy 14.587181 -28.365774) (xy 14.602484 -28.367147) + (xy 14.608687 -28.297989) (xy 14.643951 -28.177979) (xy 14.70195 -28.067154) (xy 14.780456 -27.969774) (xy 14.876451 -27.889581) + (xy 14.986246 -27.829657) (xy 16.622904 -27.134937) (xy 16.742281 -27.097583) (xy 16.866651 -27.084237) (xy 16.991235 -27.095411) + (xy 17.111245 -27.130675) (xy 17.22207 -27.188674) (xy 17.31945 -27.26718) (xy 17.399643 -27.363175) (xy 17.459567 -27.47297) + (xy 18.154287 -29.109628) (xy 18.191641 -29.229005) (xy 18.204987 -29.353375) (xy 18.193813 -29.477959) (xy 18.158549 -29.597969) + (xy 18.10055 -29.708794) (xy 18.022044 -29.806174) (xy 17.926049 -29.886367) (xy 17.816254 -29.946291) (xy 16.179596 -30.641011) + (xy 16.060219 -30.678365) (xy 15.935849 -30.691711) (xy 15.811265 -30.680537) (xy 15.691255 -30.645273) (xy 15.58043 -30.587274) + (xy 15.526375 -30.543696) (xy 15.516731 -30.555659) (xy 15.420736 -30.635852) (xy 15.31094 -30.695776) (xy 14.482485 -31.047434) + (xy 14.363109 -31.084788) (xy 14.238739 -31.098134) (xy 14.114155 -31.08696) (xy 13.994145 -31.051696) (xy 13.88332 -30.993697) + (xy 13.78594 -30.915191) (xy 13.705747 -30.819196) (xy 13.645823 -30.7094) (xy 13.176946 -29.604794) (xy 13.139592 -29.485418) + (xy 13.126246 -29.361048) (xy 2.370736 -29.361048) (xy 7.405391 -41.22195) (xy 7.405391 -38.835596) (xy 7.417651 -38.711114) + (xy 7.453961 -38.591416) (xy 7.512926 -38.481102) (xy 7.592278 -38.384411) (xy 7.688969 -38.305059) (xy 7.799283 -38.246094) + (xy 7.918981 -38.209784) (xy 8.043463 -38.197524) (xy 8.235717 -38.197524) (xy 8.235718 -32.959124) (xy 8.153912 -32.877318) + (xy 7.98018 -32.617309) (xy 7.860511 -32.328403) (xy 7.799504 -32.021701) (xy 7.799504 -31.708991) (xy 7.860511 -31.402289) + (xy 7.98018 -31.113383) (xy 8.153912 -30.853374) (xy 8.375032 -30.632254) (xy 8.635041 -30.458522) (xy 8.923947 -30.338853) + (xy 9.230649 -30.277846) (xy 9.543359 -30.277846) (xy 9.850061 -30.338853) (xy 10.121653 -30.45135) (xy 10.135018 -30.405866) + (xy 10.193017 -30.295041) (xy 10.271523 -30.197661) (xy 10.367518 -30.117468) (xy 10.477314 -30.057544) (xy 11.305769 -29.705886) + (xy 11.425145 -29.668532) (xy 11.549515 -29.655186) (xy 11.674099 -29.66636) (xy 11.794109 -29.701624) (xy 11.904934 -29.759623) + (xy 12.002314 -29.838129) (xy 12.082507 -29.934124) (xy 12.142431 -30.04392) (xy 12.611308 -31.148526) (xy 12.648662 -31.267902) + (xy 12.662008 -31.392272) (xy 12.650834 -31.516856) (xy 12.61557 -31.636866) (xy 12.557571 -31.747691) (xy 12.479065 -31.845071) + (xy 12.38307 -31.925264) (xy 12.273274 -31.985188) (xy 11.444819 -32.336846) (xy 11.325443 -32.3742) (xy 11.201073 -32.387546) + (xy 11.093819 -32.377926) (xy 11.071315 -32.405347) (xy 10.95559 -32.50032) (xy 10.823561 -32.570892) (xy 10.811545 -32.574537) + (xy 10.793828 -32.617309) (xy 10.620096 -32.877318) (xy 10.398976 -33.098438) (xy 10.138967 -33.27217) (xy 9.850061 -33.391839) + (xy 9.755717 -33.410605) (xy 9.755717 -35.531815) (xy 10.02527 -35.478198) (xy 10.317966 -35.478198) (xy 10.605039 -35.5353) + (xy 10.875456 -35.64731) (xy 11.118824 -35.809924) (xy 11.325792 -36.016892) (xy 11.488406 -36.26026) (xy 11.600416 -36.530677) + (xy 11.649641 -36.77815) (xy 11.710361 -36.752999) (xy 12.122838 -36.670952) (xy 12.543396 -36.670952) (xy 12.890835 -36.740062) + (xy 12.805783 -36.65501) (xy 12.518082 -36.224435) (xy 12.31991 -35.746006) (xy 12.218883 -35.238108) (xy 12.218883 -34.72026) + (xy 12.31991 -34.212362) (xy 12.518082 -33.733933) (xy 12.805783 -33.303358) (xy 13.171957 -32.937184) (xy 13.602532 -32.649483) + (xy 14.080961 -32.451311) (xy 14.588859 -32.350284) (xy 15.106707 -32.350284) (xy 15.614605 -32.451311) (xy 16.093034 -32.649483) + (xy 16.523609 -32.937184) (xy 16.727043 -33.140618) (xy 18.038048 -33.140618) (xy 18.038048 -32.847922) (xy 18.09515 -32.560849) + (xy 18.20716 -32.290432) (xy 18.369774 -32.047064) (xy 18.576742 -31.840096) (xy 18.82011 -31.677482) (xy 19.090527 -31.565472) + (xy 19.3776 -31.50837) (xy 19.670296 -31.50837) (xy 19.957369 -31.565472) (xy 20.227786 -31.677482) (xy 20.471154 -31.840096) + (xy 20.678122 -32.047064) (xy 20.840736 -32.290432) (xy 20.952746 -32.560849) (xy 21.009848 -32.847922) (xy 21.009848 -33.140618) + (xy 20.952746 -33.427691) (xy 20.840736 -33.698108) (xy 20.678122 -33.941476) (xy 20.471154 -34.148444) (xy 20.227786 -34.311058) + (xy 19.957369 -34.423068) (xy 19.670296 -34.48017) (xy 19.3776 -34.48017) (xy 19.090527 -34.423068) (xy 18.82011 -34.311058) + (xy 18.576742 -34.148444) (xy 18.369774 -33.941476) (xy 18.20716 -33.698108) (xy 18.09515 -33.427691) (xy 18.038048 -33.140618) + (xy 16.727043 -33.140618) (xy 16.889783 -33.303358) (xy 17.177484 -33.733933) (xy 17.375656 -34.212362) (xy 17.476683 -34.72026) + (xy 17.476683 -35.238108) (xy 17.375656 -35.746006) (xy 17.177484 -36.224435) (xy 16.889783 -36.65501) (xy 16.523609 -37.021184) + (xy 16.093034 -37.308885) (xy 15.614605 -37.507057) (xy 15.106707 -37.608084) (xy 14.588859 -37.608084) (xy 14.080961 -37.507057) + (xy 14.014599 -37.479569) (xy 14.225129 -37.79465) (xy 14.38607 -38.183196) (xy 14.468117 -38.595673) (xy 14.468117 -39.016231) + (xy 14.38607 -39.428708) (xy 14.225129 -39.817254) (xy 13.99148 -40.166935) (xy 13.6941 -40.464315) (xy 13.344419 -40.697964) + (xy 12.955873 -40.858905) (xy 12.543396 -40.940952) (xy 12.122838 -40.940952) (xy 11.710361 -40.858905) (xy 11.321815 -40.697964) + (xy 11.231535 -40.637641) (xy 11.231535 -41.335596) (xy 11.219275 -41.460078) (xy 11.182965 -41.579776) (xy 11.124 -41.69009) + (xy 11.044648 -41.786781) (xy 10.947957 -41.866133) (xy 10.837643 -41.925098) (xy 10.717945 -41.961408) (xy 10.593463 -41.973668) + (xy 8.043463 -41.973668) (xy 7.918981 -41.961408) (xy 7.799283 -41.925098) (xy 7.688969 -41.866133) (xy 7.673411 -41.853365) + (xy 9.794628 -46.85064) (xy 20.550138 -46.85064) (xy 20.561312 -46.726056) (xy 20.596576 -46.606046) (xy 20.654575 -46.495221) + (xy 20.733081 -46.397841) (xy 20.829076 -46.317648) (xy 20.938872 -46.257724) (xy 21.767327 -45.906066) (xy 21.886703 -45.868712) + (xy 22.011073 -45.855366) (xy 22.026376 -45.856739) (xy 22.032579 -45.787581) (xy 22.067843 -45.667571) (xy 22.125842 -45.556746) + (xy 22.204348 -45.459366) (xy 22.300343 -45.379173) (xy 22.410138 -45.319249) (xy 24.046796 -44.624529) (xy 24.166173 -44.587175) + (xy 24.290543 -44.573829) (xy 24.415127 -44.585003) (xy 24.535137 -44.620267) (xy 24.645962 -44.678266) (xy 24.743342 -44.756772) + (xy 24.823535 -44.852767) (xy 24.883459 -44.962562) (xy 25.578179 -46.59922) (xy 25.615533 -46.718597) (xy 25.628879 -46.842967) + (xy 25.617705 -46.967551) (xy 25.582441 -47.087561) (xy 25.524442 -47.198386) (xy 25.445936 -47.295766) (xy 25.349941 -47.375959) + (xy 25.240146 -47.435883) (xy 23.603488 -48.130603) (xy 23.484111 -48.167957) (xy 23.359741 -48.181303) (xy 23.235157 -48.170129) + (xy 23.115147 -48.134865) (xy 23.004322 -48.076866) (xy 22.950267 -48.033288) (xy 22.940623 -48.045251) (xy 22.844628 -48.125444) + (xy 22.734832 -48.185368) (xy 21.906377 -48.537026) (xy 21.787001 -48.57438) (xy 21.662631 -48.587726) (xy 21.538047 -48.576552) + (xy 21.418037 -48.541288) (xy 21.307212 -48.483289) (xy 21.209832 -48.404783) (xy 21.129639 -48.308788) (xy 21.069715 -48.198992) + (xy 20.600838 -47.094386) (xy 20.563484 -46.97501) (xy 20.550138 -46.85064) (xy 9.794628 -46.85064) (xy 14.829282 -58.71154) + (xy 14.829282 -56.325189) (xy 14.841542 -56.200707) (xy 14.877852 -56.081009) (xy 14.936817 -55.970695) (xy 15.016169 -55.874004) + (xy 15.098397 -55.806521) (xy 15.098398 -50.344769) (xy 15.094721 -50.307437) (xy 15.109395 -50.158452) (xy 15.152851 -50.015191) + (xy 15.223423 -49.883161) (xy 15.276904 -49.817995) (xy 15.28294 -49.81064) (xy 15.223396 -49.511293) (xy 15.223396 -49.198583) + (xy 15.284403 -48.891881) (xy 15.404072 -48.602975) (xy 15.577804 -48.342966) (xy 15.798924 -48.121846) (xy 16.058933 -47.948114) + (xy 16.347839 -47.828445) (xy 16.654541 -47.767438) (xy 16.967251 -47.767438) (xy 17.273953 -47.828445) (xy 17.545545 -47.940942) + (xy 17.55891 -47.895458) (xy 17.616909 -47.784633) (xy 17.695415 -47.687253) (xy 17.79141 -47.60706) (xy 17.901206 -47.547136) + (xy 18.729661 -47.195478) (xy 18.849037 -47.158124) (xy 18.973407 -47.144778) (xy 19.097991 -47.155952) (xy 19.218001 -47.191216) + (xy 19.328826 -47.249215) (xy 19.426206 -47.327721) (xy 19.506399 -47.423716) (xy 19.566323 -47.533512) (xy 20.0352 -48.638118) + (xy 20.072554 -48.757494) (xy 20.0859 -48.881864) (xy 20.074726 -49.006448) (xy 20.039462 -49.126458) (xy 19.981463 -49.237283) + (xy 19.902957 -49.334663) (xy 19.806962 -49.414856) (xy 19.697166 -49.47478) (xy 18.868711 -49.826438) (xy 18.749335 -49.863792) + (xy 18.624965 -49.877138) (xy 18.517711 -49.867518) (xy 18.495207 -49.894939) (xy 18.379482 -49.989912) (xy 18.247453 -50.060484) + (xy 18.235437 -50.064129) (xy 18.21772 -50.106901) (xy 18.043988 -50.36691) (xy 17.822868 -50.58803) (xy 17.562859 -50.761762) + (xy 17.273953 -50.881431) (xy 16.967251 -50.942438) (xy 16.654541 -50.942438) (xy 16.618397 -50.935248) (xy 16.618397 -53.329423) + (xy 16.648303 -53.299517) (xy 16.891671 -53.136903) (xy 17.162088 -53.024893) (xy 17.449161 -52.967791) (xy 17.741857 -52.967791) + (xy 18.02893 -53.024893) (xy 18.299347 -53.136903) (xy 18.542715 -53.299517) (xy 18.749683 -53.506485) (xy 18.912297 -53.749853) + (xy 19.024307 -54.02027) (xy 19.073532 -54.267743) (xy 19.134252 -54.242592) (xy 19.546729 -54.160545) (xy 19.967287 -54.160545) + (xy 20.314726 -54.229655) (xy 20.229674 -54.144603) (xy 19.941973 -53.714028) (xy 19.743801 -53.235599) (xy 19.642774 -52.727701) + (xy 19.642774 -52.209853) (xy 19.743801 -51.701955) (xy 19.941973 -51.223526) (xy 20.229674 -50.792951) (xy 20.595848 -50.426777) + (xy 21.026423 -50.139076) (xy 21.504852 -49.940904) (xy 22.01275 -49.839877) (xy 22.530598 -49.839877) (xy 23.038496 -49.940904) + (xy 23.516925 -50.139076) (xy 23.9475 -50.426777) (xy 24.150934 -50.630211) (xy 25.461939 -50.630211) (xy 25.461939 -50.337515) + (xy 25.519041 -50.050442) (xy 25.631051 -49.780025) (xy 25.793665 -49.536657) (xy 26.000633 -49.329689) (xy 26.244001 -49.167075) + (xy 26.514418 -49.055065) (xy 26.801491 -48.997963) (xy 27.094187 -48.997963) (xy 27.38126 -49.055065) (xy 27.651677 -49.167075) + (xy 27.895045 -49.329689) (xy 28.102013 -49.536657) (xy 28.264627 -49.780025) (xy 28.376637 -50.050442) (xy 28.433739 -50.337515) + (xy 28.433739 -50.630211) (xy 28.376637 -50.917284) (xy 28.264627 -51.187701) (xy 28.102013 -51.431069) (xy 27.895045 -51.638037) + (xy 27.651677 -51.800651) (xy 27.38126 -51.912661) (xy 27.094187 -51.969763) (xy 26.801491 -51.969763) (xy 26.514418 -51.912661) + (xy 26.244001 -51.800651) (xy 26.000633 -51.638037) (xy 25.793665 -51.431069) (xy 25.631051 -51.187701) (xy 25.519041 -50.917284) + (xy 25.461939 -50.630211) (xy 24.150934 -50.630211) (xy 24.313674 -50.792951) (xy 24.601375 -51.223526) (xy 24.799547 -51.701955) + (xy 24.900574 -52.209853) (xy 24.900574 -52.727701) (xy 24.799547 -53.235599) (xy 24.601375 -53.714028) (xy 24.313674 -54.144603) + (xy 23.9475 -54.510777) (xy 23.516925 -54.798478) (xy 23.038496 -54.99665) (xy 22.530598 -55.097677) (xy 22.01275 -55.097677) + (xy 21.504852 -54.99665) (xy 21.43849 -54.969162) (xy 21.64902 -55.284243) (xy 21.809961 -55.672789) (xy 21.892008 -56.085266) + (xy 21.892008 -56.505824) (xy 21.809961 -56.918301) (xy 21.64902 -57.306847) (xy 21.415371 -57.656528) (xy 21.117991 -57.953908) + (xy 20.76831 -58.187557) (xy 20.379764 -58.348498) (xy 19.967287 -58.430545) (xy 19.546729 -58.430545) (xy 19.134252 -58.348498) + (xy 18.745706 -58.187557) (xy 18.655426 -58.127234) (xy 18.655426 -58.825189) (xy 18.643166 -58.949671) (xy 18.606856 -59.069369) + (xy 18.547891 -59.179683) (xy 18.468539 -59.276374) (xy 18.371848 -59.355726) (xy 18.261534 -59.414691) (xy 18.141836 -59.451001) + (xy 18.017354 -59.463261) (xy 15.467354 -59.463261) (xy 15.342872 -59.451001) (xy 15.223174 -59.414691) (xy 15.11286 -59.355726) + (xy 15.097303 -59.342959) (xy 17.408106 -64.786869) (xy 55.268625 -58.331934) (xy 73.50969 -50.589061) (xy 104.11173 -25.68011) + (xy 104.164578 -25.636738) (xy 104.196751 -25.619541) (xy 104.227165 -25.599396) (xy 104.258272 -25.586658) (xy 104.287921 -25.57081) + (xy 104.322837 -25.560218) (xy 104.356591 -25.546396) (xy 104.38958 -25.539972) (xy 104.421757 -25.530211) (xy 104.458069 -25.526635) + (xy 104.49387 -25.519663) (xy 104.562184 -25.519938) (xy 118.585437 -25.519938) (xy 118.65375 -25.519663) (xy 118.689552 -25.526635) + (xy 118.725864 -25.530211) (xy 118.758037 -25.539971) (xy 118.791028 -25.546395) (xy 118.824784 -25.560218) (xy 118.8597 -25.57081) + (xy 118.889351 -25.586659) (xy 118.920455 -25.599396) (xy 118.950863 -25.619537) (xy 118.983043 -25.636738) (xy 119.036134 -25.680308) + (xy 130.115947 -34.698874) (xy 137.416939 -34.698874) (xy 137.416939 -32.198874) (xy 137.429199 -32.074392) (xy 137.465509 -31.954694) + (xy 137.524474 -31.84438) (xy 137.603826 -31.747689) (xy 137.700517 -31.668337) (xy 137.810831 -31.609372) (xy 137.930529 -31.573062) + (xy 138.055011 -31.560802) (xy 139.096047 -31.560802) (xy 143.37994 -27.276908) (xy 143.403738 -27.24791) (xy 143.519463 -27.152937) + (xy 143.651492 -27.082365) (xy 143.794753 -27.038908) (xy 143.88812 -27.029712) (xy 144.057685 -26.775939) (xy 144.278805 -26.554819) + (xy 144.538814 -26.381087) (xy 144.82772 -26.261418) (xy 145.134422 -26.200411) (xy 145.447132 -26.200411) (xy 145.753834 -26.261418) + (xy 146.04274 -26.381087) (xy 146.302749 -26.554819) (xy 146.523869 -26.775939) (xy 146.697601 -27.035948) (xy 146.715318 -27.07872) + (xy 146.727334 -27.082365) (xy 146.859363 -27.152937) (xy 146.975088 -27.24791) (xy 146.997592 -27.275331) (xy 147.104846 -27.265711) + (xy 147.229216 -27.279057) (xy 147.348592 -27.316411) (xy 148.177047 -27.668069) (xy 148.286843 -27.727993) (xy 148.382838 -27.808186) + (xy 148.461344 -27.905566) (xy 148.519343 -28.016391) (xy 148.554607 -28.136401) (xy 148.565781 -28.260985) (xy 148.552435 -28.385355) + (xy 148.515081 -28.504731) (xy 148.046204 -29.609337) (xy 147.98628 -29.719133) (xy 147.906087 -29.815128) (xy 147.808707 -29.893634) + (xy 147.697882 -29.951633) (xy 147.577872 -29.986897) (xy 147.453288 -29.998071) (xy 147.328918 -29.984725) (xy 147.209542 -29.947371) + (xy 146.381087 -29.595713) (xy 146.271291 -29.535789) (xy 146.175296 -29.455596) (xy 146.09679 -29.358216) (xy 146.038791 -29.247391) + (xy 146.025426 -29.201907) (xy 145.753834 -29.314404) (xy 145.447132 -29.375411) (xy 145.134422 -29.375411) (xy 144.82772 -29.314404) + (xy 144.538814 -29.194735) (xy 144.278805 -29.021003) (xy 144.057685 -28.799883) (xy 144.037211 -28.769241) (xy 142.514243 -30.292209) + (xy 149.030019 -30.292209) (xy 149.043365 -30.167839) (xy 149.080719 -30.048463) (xy 149.549596 -28.943857) (xy 149.60952 -28.834061) + (xy 149.689713 -28.738066) (xy 149.787093 -28.65956) (xy 149.897918 -28.601561) (xy 150.017928 -28.566297) (xy 150.142512 -28.555123) + (xy 150.266882 -28.568469) (xy 150.386258 -28.605823) (xy 151.214713 -28.957481) (xy 151.324509 -29.017405) (xy 151.420504 -29.097598) + (xy 151.430148 -29.109561) (xy 151.484203 -29.065983) (xy 151.595028 -29.007984) (xy 151.715038 -28.97272) (xy 151.839622 -28.961546) + (xy 151.963992 -28.974892) (xy 152.083369 -29.012246) (xy 153.720027 -29.706966) (xy 153.829822 -29.76689) (xy 153.925817 -29.847083) + (xy 154.004323 -29.944463) (xy 154.062322 -30.055288) (xy 154.097586 -30.175298) (xy 154.10876 -30.299882) (xy 154.095414 -30.424252) + (xy 154.05806 -30.543629) (xy 153.36334 -32.180287) (xy 153.303416 -32.290082) (xy 153.223223 -32.386077) (xy 153.125843 -32.464583) + (xy 153.015018 -32.522582) (xy 152.895008 -32.557846) (xy 152.770424 -32.56902) (xy 152.646054 -32.555674) (xy 152.526677 -32.51832) + (xy 150.890019 -31.8236) (xy 150.780224 -31.763676) (xy 150.684229 -31.683483) (xy 150.605723 -31.586103) (xy 150.547724 -31.475278) + (xy 150.51246 -31.355268) (xy 150.506257 -31.28611) (xy 150.490954 -31.287483) (xy 150.366584 -31.274137) (xy 150.247208 -31.236783) + (xy 149.418753 -30.885125) (xy 149.308957 -30.825201) (xy 149.212962 -30.745008) (xy 149.134456 -30.647628) (xy 149.076457 -30.536803) + (xy 149.041193 -30.416793) (xy 149.030019 -30.292209) (xy 142.514243 -30.292209) (xy 142.384254 -30.422197) (xy 142.601501 -30.46541) + (xy 142.871918 -30.57742) (xy 143.115286 -30.740034) (xy 143.322254 -30.947002) (xy 143.484868 -31.19037) (xy 143.596878 -31.460787) + (xy 143.65398 -31.74786) (xy 143.65398 -32.040556) (xy 143.596878 -32.327629) (xy 143.484868 -32.598046) (xy 143.33213 -32.826634) + (xy 143.355966 -32.836507) (xy 143.705647 -33.070156) (xy 144.003027 -33.367536) (xy 144.215345 -33.685293) (xy 144.215345 -33.620198) + (xy 144.316372 -33.1123) (xy 144.514544 -32.633871) (xy 144.802245 -32.203296) (xy 145.168419 -31.837122) (xy 145.598994 -31.549421) + (xy 146.077423 -31.351249) (xy 146.585321 -31.250222) (xy 147.103169 -31.250222) (xy 147.611067 -31.351249) (xy 148.089496 -31.549421) + (xy 148.520071 -31.837122) (xy 148.886245 -32.203296) (xy 149.173946 -32.633871) (xy 149.372118 -33.1123) (xy 149.473145 -33.620198) + (xy 149.473145 -34.138046) (xy 149.372118 -34.645944) (xy 149.173946 -35.124373) (xy 148.886245 -35.554948) (xy 148.520071 -35.921122) + (xy 148.386481 -36.010384) (xy 150.03451 -36.010384) (xy 150.03451 -35.717688) (xy 150.091612 -35.430615) (xy 150.203622 -35.160198) + (xy 150.366236 -34.91683) (xy 150.573204 -34.709862) (xy 150.816572 -34.547248) (xy 151.086989 -34.435238) (xy 151.374062 -34.378136) + (xy 151.666758 -34.378136) (xy 151.953831 -34.435238) (xy 152.224248 -34.547248) (xy 152.467616 -34.709862) (xy 152.674584 -34.91683) + (xy 152.837198 -35.160198) (xy 152.949208 -35.430615) (xy 153.00631 -35.717688) (xy 153.00631 -36.010384) (xy 152.949208 -36.297457) + (xy 152.837198 -36.567874) (xy 152.674584 -36.811242) (xy 152.467616 -37.01821) (xy 152.224248 -37.180824) (xy 151.953831 -37.292834) + (xy 151.666758 -37.349936) (xy 151.374062 -37.349936) (xy 151.086989 -37.292834) (xy 150.816572 -37.180824) (xy 150.573204 -37.01821) + (xy 150.366236 -36.811242) (xy 150.203622 -36.567874) (xy 150.091612 -36.297457) (xy 150.03451 -36.010384) (xy 148.386481 -36.010384) + (xy 148.089496 -36.208823) (xy 147.611067 -36.406995) (xy 147.103169 -36.508022) (xy 146.585321 -36.508022) (xy 146.077423 -36.406995) + (xy 145.598994 -36.208823) (xy 145.168419 -35.921122) (xy 144.802245 -35.554948) (xy 144.514544 -35.124373) (xy 144.466042 -35.007279) + (xy 144.397617 -35.351275) (xy 144.236676 -35.739821) (xy 144.003027 -36.089502) (xy 143.705647 -36.386882) (xy 143.355966 -36.620531) + (xy 142.96742 -36.781472) (xy 142.554943 -36.863519) (xy 142.134385 -36.863519) (xy 141.721908 -36.781472) (xy 141.333362 -36.620531) + (xy 140.983681 -36.386882) (xy 140.686301 -36.089502) (xy 140.452652 -35.739821) (xy 140.291711 -35.351275) (xy 140.288861 -35.336946) + (xy 138.055011 -35.336946) (xy 137.930529 -35.324686) (xy 137.810831 -35.288376) (xy 137.700517 -35.229411) (xy 137.603826 -35.150059) + (xy 137.524474 -35.053368) (xy 137.465509 -34.943054) (xy 137.429199 -34.823356) (xy 137.416939 -34.698874) (xy 130.115947 -34.698874) + (xy 136.331394 -39.758023) (xy 145.062413 -39.758023) (xy 145.062413 -39.337465) (xy 145.14446 -38.924988) (xy 145.305401 -38.536442) + (xy 145.53905 -38.186761) (xy 145.83643 -37.889381) (xy 146.186111 -37.655732) (xy 146.574657 -37.494791) (xy 146.987134 -37.412744) + (xy 147.407692 -37.412744) (xy 147.820169 -37.494791) (xy 148.208715 -37.655732) (xy 148.558396 -37.889381) (xy 148.855776 -38.186761) + (xy 149.089425 -38.536442) (xy 149.250366 -38.924988) (xy 149.255315 -38.949866) (xy 151.050191 -38.949866) (xy 156.900812 -33.099244) + (xy 156.900811 -25.236417) (xy 156.385811 -25.236417) (xy 156.261329 -25.224157) (xy 156.141631 -25.187847) (xy 156.031317 -25.128882) + (xy 155.934626 -25.04953) (xy 155.855274 -24.952839) (xy 155.796309 -24.842525) (xy 155.759999 -24.722827) (xy 155.747739 -24.598345) + (xy 155.747739 -23.873234) (xy 155.632606 -23.950163) (xy 155.24406 -24.111104) (xy 154.831583 -24.193151) (xy 154.411025 -24.193151) + (xy 153.998548 -24.111104) (xy 153.610002 -23.950163) (xy 153.260321 -23.716514) (xy 152.962941 -23.419134) (xy 152.729292 -23.069453) + (xy 152.568351 -22.680907) (xy 152.486304 -22.26843) (xy 152.486304 -21.847872) (xy 152.568351 -21.435395) (xy 152.729292 -21.046849) + (xy 152.962941 -20.697168) (xy 153.260321 -20.399788) (xy 153.610002 -20.166139) (xy 153.998548 -20.005198) (xy 154.411025 -19.923151) + (xy 154.831583 -19.923151) (xy 155.24406 -20.005198) (xy 155.632606 -20.166139) (xy 155.982287 -20.399788) (xy 156.279667 -20.697168) + (xy 156.513316 -21.046849) (xy 156.674257 -21.435395) (xy 156.679206 -21.460273) (xy 158.474081 -21.460273) (xy 161.542078 -18.392275) + (xy 161.542078 -18.330139) (xy 161.581852 -18.13018) (xy 161.659873 -17.941822) (xy 161.773141 -17.772304) (xy 161.917304 -17.628141) + (xy 162.086822 -17.514873) (xy 162.27518 -17.436852) (xy 162.475139 -17.397078) (xy 162.537277 -17.397078) (xy 164.324704 -15.60965) + (xy 164.324703 -7.746825) (xy 163.809703 -7.746825) (xy 163.685221 -7.734565) (xy 163.565523 -7.698255) (xy 163.455209 -7.63929) + (xy 163.358518 -7.559938) (xy 163.279166 -7.463247) (xy 163.220201 -7.352933) (xy 163.183891 -7.233235) (xy 163.171631 -7.108753) + (xy 163.171631 -6.383642) (xy 163.056498 -6.460571) (xy 162.667952 -6.621512) (xy 162.255475 -6.703559) (xy 161.834917 -6.703559) + (xy 161.42244 -6.621512) (xy 161.033894 -6.460571) (xy 160.684213 -6.226922) (xy 160.386833 -5.929542) (xy 160.153184 -5.579861) + (xy 159.992243 -5.191315) (xy 159.910196 -4.778838) (xy 159.910196 -4.35828) (xy 159.992243 -3.945803) (xy 160.153184 -3.557257) + (xy 160.386833 -3.207576) (xy 160.684213 -2.910196) (xy 161.033894 -2.676547) (xy 161.42244 -2.515606) (xy 161.834917 -2.433559) + (xy 162.255475 -2.433559) (xy 162.667952 -2.515606) (xy 163.056498 -2.676547) (xy 163.406179 -2.910196) (xy 163.703559 -3.207576) + (xy 163.937208 -3.557257) (xy 164.098149 -3.945803) (xy 164.103098 -3.970681) (xy 165.897974 -3.970681) (xy 171.748595 1.879941) + (xy 171.748594 9.742767) (xy 171.233594 9.742767) (xy 171.109112 9.755027) (xy 170.989414 9.791337) (xy 170.8791 9.850302) + (xy 170.782409 9.929654) (xy 170.703057 10.026345) (xy 170.644092 10.136659) (xy 170.607782 10.256357) (xy 170.595522 10.380839) + (xy 170.595522 11.10595) (xy 170.480389 11.029021) (xy 170.091843 10.86808) (xy 169.679366 10.786033) (xy 169.258808 10.786033) + (xy 168.846331 10.86808) (xy 168.457785 11.029021) (xy 168.108104 11.26267) (xy 167.810724 11.56005) (xy 167.577075 11.909731) + (xy 167.416134 12.298277) (xy 167.334087 12.710754) (xy 167.334087 13.131312) (xy 167.416134 13.543789) (xy 167.577075 13.932335) + (xy 167.810724 14.282016) (xy 168.108104 14.579396) (xy 168.457785 14.813045) (xy 168.846331 14.973986) (xy 169.258808 15.056033) + (xy 169.679366 15.056033) (xy 170.091843 14.973986) (xy 170.480389 14.813045) (xy 170.83007 14.579396) (xy 171.12745 14.282016) + (xy 171.361099 13.932335) (xy 171.52204 13.543789) (xy 171.526989 13.518911) (xy 173.783594 13.518911) (xy 173.908076 13.506651) + (xy 174.027774 13.470341) (xy 174.138088 13.411376) (xy 174.234779 13.332024) (xy 174.314131 13.235333) (xy 174.373096 13.125019) + (xy 174.409406 13.005321) (xy 174.421666 12.880839) (xy 174.421666 10.380839) (xy 174.409406 10.256357) (xy 174.373096 10.136659) + (xy 174.314131 10.026345) (xy 174.234779 9.929654) (xy 174.138088 9.850302) (xy 174.027774 9.791337) (xy 173.908076 9.755027) + (xy 173.783594 9.742767) (xy 173.268594 9.742767) (xy 173.268594 5.743487) (xy 175.22455 5.743487) (xy 175.22455 8.243487) + (xy 175.23681 8.367969) (xy 175.27312 8.487667) (xy 175.332085 8.597981) (xy 175.411437 8.694672) (xy 175.508128 8.774024) + (xy 175.618442 8.832989) (xy 175.73814 8.869299) (xy 175.862622 8.881559) (xy 176.903658 8.881559) (xy 181.187551 13.165453) + (xy 181.211349 13.194451) (xy 181.327074 13.289424) (xy 181.459103 13.359996) (xy 181.602364 13.403453) (xy 181.695731 13.412649) + (xy 181.865296 13.666422) (xy 182.086416 13.887542) (xy 182.346425 14.061274) (xy 182.635331 14.180943) (xy 182.942033 14.24195) + (xy 183.254743 14.24195) (xy 183.561445 14.180943) (xy 183.850351 14.061274) (xy 184.11036 13.887542) (xy 184.33148 13.666422) + (xy 184.505212 13.406413) (xy 184.522929 13.363641) (xy 184.534945 13.359996) (xy 184.666974 13.289424) (xy 184.782699 13.194451) + (xy 184.805203 13.16703) (xy 184.912457 13.17665) (xy 185.036827 13.163304) (xy 185.156203 13.12595) (xy 185.984658 12.774292) + (xy 186.094454 12.714368) (xy 186.190449 12.634175) (xy 186.268955 12.536795) (xy 186.326954 12.42597) (xy 186.362218 12.30596) + (xy 186.373392 12.181376) (xy 186.360046 12.057006) (xy 186.322692 11.93763) (xy 185.853815 10.833024) (xy 185.793891 10.723228) + (xy 185.713698 10.627233) (xy 185.616318 10.548727) (xy 185.505493 10.490728) (xy 185.385483 10.455464) (xy 185.260899 10.44429) + (xy 185.136529 10.457636) (xy 185.017153 10.49499) (xy 184.188698 10.846648) (xy 184.078902 10.906572) (xy 183.982907 10.986765) + (xy 183.904401 11.084145) (xy 183.846402 11.19497) (xy 183.833037 11.240454) (xy 183.561445 11.127957) (xy 183.254743 11.06695) + (xy 182.942033 11.06695) (xy 182.635331 11.127957) (xy 182.346425 11.247626) (xy 182.086416 11.421358) (xy 181.865296 11.642478) + (xy 181.844822 11.67312) (xy 180.321854 10.150152) (xy 186.83763 10.150152) (xy 186.850976 10.274522) (xy 186.88833 10.393898) + (xy 187.357207 11.498504) (xy 187.417131 11.6083) (xy 187.497324 11.704295) (xy 187.594704 11.782801) (xy 187.705529 11.8408) + (xy 187.825539 11.876064) (xy 187.950123 11.887238) (xy 188.074493 11.873892) (xy 188.193869 11.836538) (xy 189.022324 11.48488) + (xy 189.13212 11.424956) (xy 189.228115 11.344763) (xy 189.237759 11.3328) (xy 189.291814 11.376378) (xy 189.402639 11.434377) + (xy 189.522649 11.469641) (xy 189.647233 11.480815) (xy 189.771603 11.467469) (xy 189.89098 11.430115) (xy 191.527638 10.735395) + (xy 191.637433 10.675471) (xy 191.733428 10.595278) (xy 191.811934 10.497898) (xy 191.869933 10.387073) (xy 191.905197 10.267063) + (xy 191.916371 10.142479) (xy 191.903025 10.018109) (xy 191.865671 9.898732) (xy 191.170951 8.262074) (xy 191.111027 8.152279) + (xy 191.030834 8.056284) (xy 190.933454 7.977778) (xy 190.822629 7.919779) (xy 190.702619 7.884515) (xy 190.578035 7.873341) + (xy 190.453665 7.886687) (xy 190.334288 7.924041) (xy 188.69763 8.618761) (xy 188.587835 8.678685) (xy 188.49184 8.758878) + (xy 188.413334 8.856258) (xy 188.355335 8.967083) (xy 188.320071 9.087093) (xy 188.313868 9.156251) (xy 188.298565 9.154878) + (xy 188.174195 9.168224) (xy 188.054819 9.205578) (xy 187.226364 9.557236) (xy 187.116568 9.61716) (xy 187.020573 9.697353) + (xy 186.942067 9.794733) (xy 186.884068 9.905558) (xy 186.848804 10.025568) (xy 186.83763 10.150152) (xy 180.321854 10.150152) + (xy 180.191865 10.020164) (xy 180.409112 9.976951) (xy 180.679529 9.864941) (xy 180.922897 9.702327) (xy 181.129865 9.495359) + (xy 181.292479 9.251991) (xy 181.404489 8.981574) (xy 181.461591 8.694501) (xy 181.461591 8.401805) (xy 181.404489 8.114732) + (xy 181.292479 7.844315) (xy 181.139741 7.615727) (xy 181.163577 7.605854) (xy 181.513258 7.372205) (xy 181.810638 7.074825) + (xy 182.022956 6.757068) (xy 182.022956 6.822163) (xy 182.123983 7.330061) (xy 182.322155 7.80849) (xy 182.609856 8.239065) + (xy 182.97603 8.605239) (xy 183.406605 8.89294) (xy 183.885034 9.091112) (xy 184.392932 9.192139) (xy 184.91078 9.192139) + (xy 185.418678 9.091112) (xy 185.897107 8.89294) (xy 186.327682 8.605239) (xy 186.693856 8.239065) (xy 186.981557 7.80849) + (xy 187.179729 7.330061) (xy 187.280756 6.822163) (xy 187.280756 6.304315) (xy 187.179729 5.796417) (xy 186.981557 5.317988) + (xy 186.693856 4.887413) (xy 186.327682 4.521239) (xy 186.194092 4.431977) (xy 187.842121 4.431977) (xy 187.842121 4.724673) + (xy 187.899223 5.011746) (xy 188.011233 5.282163) (xy 188.173847 5.525531) (xy 188.380815 5.732499) (xy 188.624183 5.895113) + (xy 188.8946 6.007123) (xy 189.181673 6.064225) (xy 189.474369 6.064225) (xy 189.761442 6.007123) (xy 190.031859 5.895113) + (xy 190.275227 5.732499) (xy 190.482195 5.525531) (xy 190.644809 5.282163) (xy 190.756819 5.011746) (xy 190.813921 4.724673) + (xy 190.813921 4.431977) (xy 190.756819 4.144904) (xy 190.644809 3.874487) (xy 190.482195 3.631119) (xy 190.275227 3.424151) + (xy 190.031859 3.261537) (xy 189.761442 3.149527) (xy 189.474369 3.092425) (xy 189.181673 3.092425) (xy 188.8946 3.149527) + (xy 188.624183 3.261537) (xy 188.380815 3.424151) (xy 188.173847 3.631119) (xy 188.011233 3.874487) (xy 187.899223 4.144904) + (xy 187.842121 4.431977) (xy 186.194092 4.431977) (xy 185.897107 4.233538) (xy 185.418678 4.035366) (xy 184.91078 3.934339) + (xy 184.392932 3.934339) (xy 183.885034 4.035366) (xy 183.406605 4.233538) (xy 182.97603 4.521239) (xy 182.609856 4.887413) + (xy 182.322155 5.317988) (xy 182.273653 5.435082) (xy 182.205228 5.091086) (xy 182.044287 4.70254) (xy 181.810638 4.352859) + (xy 181.513258 4.055479) (xy 181.163577 3.82183) (xy 180.775031 3.660889) (xy 180.362554 3.578842) (xy 179.941996 3.578842) + (xy 179.529519 3.660889) (xy 179.140973 3.82183) (xy 178.791292 4.055479) (xy 178.493912 4.352859) (xy 178.260263 4.70254) + (xy 178.099322 5.091086) (xy 178.096472 5.105415) (xy 175.862622 5.105415) (xy 175.73814 5.117675) (xy 175.618442 5.153985) + (xy 175.508128 5.21295) (xy 175.411437 5.292302) (xy 175.332085 5.388993) (xy 175.27312 5.499307) (xy 175.23681 5.619005) + (xy 175.22455 5.743487) (xy 173.268594 5.743487) (xy 173.268594 1.60246) (xy 173.27227 1.565137) (xy 173.268594 1.527814) + (xy 173.268594 1.527805) (xy 173.257597 1.416152) (xy 173.21414 1.272891) (xy 173.143568 1.140862) (xy 173.048595 1.025137) + (xy 173.019597 1.001339) (xy 166.997775 -5.020482) (xy 166.997775 -7.108753) (xy 166.985515 -7.233235) (xy 166.949205 -7.352933) + (xy 166.89024 -7.463247) (xy 166.810888 -7.559938) (xy 166.714197 -7.63929) (xy 166.603883 -7.698255) (xy 166.484185 -7.734565) + (xy 166.359703 -7.746825) (xy 165.844703 -7.746825) (xy 165.844703 -11.746105) (xy 167.800658 -11.746105) (xy 167.800658 -9.246105) + (xy 167.812918 -9.121623) (xy 167.849228 -9.001925) (xy 167.908193 -8.891611) (xy 167.987545 -8.79492) (xy 168.084236 -8.715568) + (xy 168.19455 -8.656603) (xy 168.314248 -8.620293) (xy 168.43873 -8.608033) (xy 169.479768 -8.608033) (xy 173.76366 -4.32414) + (xy 173.787458 -4.295142) (xy 173.816456 -4.271344) (xy 173.903182 -4.200169) (xy 173.987062 -4.155334) (xy 174.035212 -4.129597) + (xy 174.178473 -4.08614) (xy 174.27184 -4.076944) (xy 174.441405 -3.823171) (xy 174.662525 -3.602051) (xy 174.922534 -3.428319) + (xy 175.21144 -3.30865) (xy 175.518142 -3.247643) (xy 175.830852 -3.247643) (xy 176.137554 -3.30865) (xy 176.42646 -3.428319) + (xy 176.686469 -3.602051) (xy 176.907589 -3.823171) (xy 177.081321 -4.08318) (xy 177.099038 -4.125952) (xy 177.111054 -4.129597) + (xy 177.243083 -4.200169) (xy 177.358808 -4.295142) (xy 177.381312 -4.322563) (xy 177.488566 -4.312943) (xy 177.612936 -4.326289) + (xy 177.732312 -4.363643) (xy 178.560767 -4.715301) (xy 178.670563 -4.775225) (xy 178.766558 -4.855418) (xy 178.845064 -4.952798) + (xy 178.903063 -5.063623) (xy 178.938327 -5.183633) (xy 178.949501 -5.308217) (xy 178.936155 -5.432587) (xy 178.898801 -5.551963) + (xy 178.429924 -6.656569) (xy 178.37 -6.766365) (xy 178.289807 -6.86236) (xy 178.192427 -6.940866) (xy 178.081602 -6.998865) + (xy 177.961592 -7.034129) (xy 177.837008 -7.045303) (xy 177.712638 -7.031957) (xy 177.593262 -6.994603) (xy 176.764807 -6.642945) + (xy 176.655011 -6.583021) (xy 176.559016 -6.502828) (xy 176.48051 -6.405448) (xy 176.422511 -6.294623) (xy 176.409146 -6.249139) + (xy 176.137554 -6.361636) (xy 175.830852 -6.422643) (xy 175.518142 -6.422643) (xy 175.21144 -6.361636) (xy 174.922534 -6.241967) + (xy 174.662525 -6.068235) (xy 174.441405 -5.847115) (xy 174.420931 -5.816473) (xy 172.897963 -7.339441) (xy 179.413739 -7.339441) + (xy 179.427085 -7.215071) (xy 179.464439 -7.095695) (xy 179.933316 -5.991089) (xy 179.99324 -5.881293) (xy 180.073433 -5.785298) + (xy 180.170813 -5.706792) (xy 180.281638 -5.648793) (xy 180.401648 -5.613529) (xy 180.526232 -5.602355) (xy 180.650602 -5.615701) + (xy 180.769978 -5.653055) (xy 181.598433 -6.004713) (xy 181.708229 -6.064637) (xy 181.804224 -6.14483) (xy 181.813868 -6.156793) + (xy 181.867923 -6.113215) (xy 181.978748 -6.055216) (xy 182.098758 -6.019952) (xy 182.223342 -6.008778) (xy 182.347712 -6.022124) + (xy 182.467089 -6.059478) (xy 184.103747 -6.754198) (xy 184.213542 -6.814122) (xy 184.309537 -6.894315) (xy 184.388043 -6.991695) + (xy 184.446042 -7.10252) (xy 184.481306 -7.22253) (xy 184.49248 -7.347114) (xy 184.479134 -7.471484) (xy 184.44178 -7.590861) + (xy 183.74706 -9.227519) (xy 183.687136 -9.337314) (xy 183.606943 -9.433309) (xy 183.509563 -9.511815) (xy 183.398738 -9.569814) + (xy 183.278728 -9.605078) (xy 183.154144 -9.616252) (xy 183.029774 -9.602906) (xy 182.910397 -9.565552) (xy 181.273739 -8.870832) + (xy 181.163944 -8.810908) (xy 181.067949 -8.730715) (xy 180.989443 -8.633335) (xy 180.931444 -8.52251) (xy 180.89618 -8.4025) + (xy 180.889977 -8.333342) (xy 180.874674 -8.334715) (xy 180.750304 -8.321369) (xy 180.630928 -8.284015) (xy 179.802473 -7.932357) + (xy 179.692677 -7.872433) (xy 179.596682 -7.79224) (xy 179.518176 -7.69486) (xy 179.460177 -7.584035) (xy 179.424913 -7.464025) + (xy 179.413739 -7.339441) (xy 172.897963 -7.339441) (xy 172.767975 -7.469429) (xy 172.98522 -7.512641) (xy 173.255637 -7.624651) + (xy 173.499005 -7.787265) (xy 173.705973 -7.994233) (xy 173.868587 -8.237601) (xy 173.980597 -8.508018) (xy 174.037699 -8.795091) + (xy 174.037699 -9.087787) (xy 173.980597 -9.37486) (xy 173.868587 -9.645277) (xy 173.715849 -9.873865) (xy 173.739685 -9.883738) + (xy 174.089366 -10.117387) (xy 174.386746 -10.414767) (xy 174.599064 -10.732524) (xy 174.599064 -10.667429) (xy 174.700091 -10.159531) + (xy 174.898263 -9.681102) (xy 175.185964 -9.250527) (xy 175.552138 -8.884353) (xy 175.982713 -8.596652) (xy 176.461142 -8.39848) + (xy 176.96904 -8.297453) (xy 177.486888 -8.297453) (xy 177.994786 -8.39848) (xy 178.473215 -8.596652) (xy 178.90379 -8.884353) + (xy 179.269964 -9.250527) (xy 179.557665 -9.681102) (xy 179.755837 -10.159531) (xy 179.856864 -10.667429) (xy 179.856864 -11.185277) + (xy 179.755837 -11.693175) (xy 179.557665 -12.171604) (xy 179.269964 -12.602179) (xy 178.90379 -12.968353) (xy 178.7702 -13.057615) + (xy 180.418229 -13.057615) (xy 180.418229 -12.764919) (xy 180.475331 -12.477846) (xy 180.587341 -12.207429) (xy 180.749955 -11.964061) + (xy 180.956923 -11.757093) (xy 181.200291 -11.594479) (xy 181.470708 -11.482469) (xy 181.757781 -11.425367) (xy 182.050477 -11.425367) + (xy 182.33755 -11.482469) (xy 182.607967 -11.594479) (xy 182.851335 -11.757093) (xy 183.058303 -11.964061) (xy 183.220917 -12.207429) + (xy 183.332927 -12.477846) (xy 183.390029 -12.764919) (xy 183.390029 -13.057615) (xy 183.332927 -13.344688) (xy 183.220917 -13.615105) + (xy 183.058303 -13.858473) (xy 182.851335 -14.065441) (xy 182.607967 -14.228055) (xy 182.33755 -14.340065) (xy 182.050477 -14.397167) + (xy 181.757781 -14.397167) (xy 181.470708 -14.340065) (xy 181.200291 -14.228055) (xy 180.956923 -14.065441) (xy 180.749955 -13.858473) + (xy 180.587341 -13.615105) (xy 180.475331 -13.344688) (xy 180.418229 -13.057615) (xy 178.7702 -13.057615) (xy 178.473215 -13.256054) + (xy 177.994786 -13.454226) (xy 177.486888 -13.555253) (xy 176.96904 -13.555253) (xy 176.461142 -13.454226) (xy 175.982713 -13.256054) + (xy 175.552138 -12.968353) (xy 175.185964 -12.602179) (xy 174.898263 -12.171604) (xy 174.849761 -12.05451) (xy 174.781336 -12.398506) + (xy 174.620395 -12.787052) (xy 174.386746 -13.136733) (xy 174.089366 -13.434113) (xy 173.739685 -13.667762) (xy 173.351139 -13.828703) + (xy 172.938662 -13.91075) (xy 172.518104 -13.91075) (xy 172.105627 -13.828703) (xy 171.717081 -13.667762) (xy 171.3674 -13.434113) + (xy 171.07002 -13.136733) (xy 170.836371 -12.787052) (xy 170.67543 -12.398506) (xy 170.67258 -12.384177) (xy 168.43873 -12.384177) + (xy 168.314248 -12.371917) (xy 168.19455 -12.335607) (xy 168.084236 -12.276642) (xy 167.987545 -12.19729) (xy 167.908193 -12.100599) + (xy 167.849228 -11.990285) (xy 167.812918 -11.870587) (xy 167.800658 -11.746105) (xy 165.844703 -11.746105) (xy 165.844703 -15.887131) + (xy 165.848379 -15.924454) (xy 165.844703 -15.961777) (xy 165.844703 -15.961786) (xy 165.833706 -16.073439) (xy 165.790249 -16.2167) + (xy 165.719677 -16.348729) (xy 165.624704 -16.464454) (xy 165.595706 -16.488252) (xy 163.612078 -18.471879) (xy 163.612078 -18.534017) + (xy 163.572304 -18.733976) (xy 163.494283 -18.922334) (xy 163.381015 -19.091852) (xy 163.236852 -19.236015) (xy 163.067334 -19.349283) + (xy 162.878976 -19.427304) (xy 162.679017 -19.467078) (xy 162.616881 -19.467078) (xy 159.573883 -22.510075) (xy 159.573883 -24.598345) + (xy 159.561623 -24.722827) (xy 159.525313 -24.842525) (xy 159.466348 -24.952839) (xy 159.386996 -25.04953) (xy 159.290305 -25.128882) + (xy 159.179991 -25.187847) (xy 159.060293 -25.224157) (xy 158.935811 -25.236417) (xy 158.420811 -25.236417) (xy 158.420811 -29.235697) + (xy 160.376767 -29.235697) (xy 160.376767 -26.735697) (xy 160.389027 -26.611215) (xy 160.425337 -26.491517) (xy 160.484302 -26.381203) + (xy 160.563654 -26.284512) (xy 160.660345 -26.20516) (xy 160.770659 -26.146195) (xy 160.890357 -26.109885) (xy 161.014839 -26.097625) + (xy 162.055876 -26.097625) (xy 166.339768 -21.813732) (xy 166.363566 -21.784734) (xy 166.479291 -21.689761) (xy 166.61132 -21.619189) + (xy 166.754581 -21.575732) (xy 166.847948 -21.566536) (xy 167.017513 -21.312763) (xy 167.238633 -21.091643) (xy 167.498642 -20.917911) + (xy 167.787548 -20.798242) (xy 168.09425 -20.737235) (xy 168.40696 -20.737235) (xy 168.713662 -20.798242) (xy 169.002568 -20.917911) + (xy 169.262577 -21.091643) (xy 169.483697 -21.312763) (xy 169.657429 -21.572772) (xy 169.675146 -21.615544) (xy 169.687162 -21.619189) + (xy 169.819191 -21.689761) (xy 169.934916 -21.784734) (xy 169.95742 -21.812155) (xy 170.064674 -21.802535) (xy 170.189044 -21.815881) + (xy 170.30842 -21.853235) (xy 171.136875 -22.204893) (xy 171.246671 -22.264817) (xy 171.342666 -22.34501) (xy 171.421172 -22.44239) + (xy 171.479171 -22.553215) (xy 171.514435 -22.673225) (xy 171.525609 -22.797809) (xy 171.512263 -22.922179) (xy 171.474909 -23.041555) + (xy 171.006032 -24.146161) (xy 170.946108 -24.255957) (xy 170.865915 -24.351952) (xy 170.768535 -24.430458) (xy 170.65771 -24.488457) + (xy 170.5377 -24.523721) (xy 170.413116 -24.534895) (xy 170.288746 -24.521549) (xy 170.16937 -24.484195) (xy 169.340915 -24.132537) + (xy 169.231119 -24.072613) (xy 169.135124 -23.99242) (xy 169.056618 -23.89504) (xy 168.998619 -23.784215) (xy 168.985254 -23.738731) + (xy 168.713662 -23.851228) (xy 168.40696 -23.912235) (xy 168.09425 -23.912235) (xy 167.787548 -23.851228) (xy 167.498642 -23.731559) + (xy 167.238633 -23.557827) (xy 167.017513 -23.336707) (xy 166.997039 -23.306065) (xy 165.474071 -24.829033) (xy 171.989847 -24.829033) + (xy 172.003193 -24.704663) (xy 172.040547 -24.585287) (xy 172.509424 -23.480681) (xy 172.569348 -23.370885) (xy 172.649541 -23.27489) + (xy 172.746921 -23.196384) (xy 172.857746 -23.138385) (xy 172.977756 -23.103121) (xy 173.10234 -23.091947) (xy 173.22671 -23.105293) + (xy 173.346086 -23.142647) (xy 174.174541 -23.494305) (xy 174.284337 -23.554229) (xy 174.380332 -23.634422) (xy 174.389976 -23.646385) + (xy 174.444031 -23.602807) (xy 174.554856 -23.544808) (xy 174.674866 -23.509544) (xy 174.79945 -23.49837) (xy 174.92382 -23.511716) + (xy 175.043197 -23.54907) (xy 176.679855 -24.24379) (xy 176.78965 -24.303714) (xy 176.885645 -24.383907) (xy 176.964151 -24.481287) + (xy 177.02215 -24.592112) (xy 177.057414 -24.712122) (xy 177.068588 -24.836706) (xy 177.055242 -24.961076) (xy 177.017888 -25.080453) + (xy 176.323168 -26.717111) (xy 176.263244 -26.826906) (xy 176.183051 -26.922901) (xy 176.085671 -27.001407) (xy 175.974846 -27.059406) + (xy 175.854836 -27.09467) (xy 175.730252 -27.105844) (xy 175.605882 -27.092498) (xy 175.486505 -27.055144) (xy 173.849847 -26.360424) + (xy 173.740052 -26.3005) (xy 173.644057 -26.220307) (xy 173.565551 -26.122927) (xy 173.507552 -26.012102) (xy 173.472288 -25.892092) + (xy 173.466085 -25.822934) (xy 173.450782 -25.824307) (xy 173.326412 -25.810961) (xy 173.207036 -25.773607) (xy 172.378581 -25.421949) + (xy 172.268785 -25.362025) (xy 172.17279 -25.281832) (xy 172.094284 -25.184452) (xy 172.036285 -25.073627) (xy 172.001021 -24.953617) + (xy 171.989847 -24.829033) (xy 165.474071 -24.829033) (xy 165.344083 -24.95902) (xy 165.561329 -25.002233) (xy 165.831746 -25.114243) + (xy 166.075114 -25.276857) (xy 166.282082 -25.483825) (xy 166.444696 -25.727193) (xy 166.556706 -25.99761) (xy 166.613808 -26.284683) + (xy 166.613808 -26.577379) (xy 166.556706 -26.864452) (xy 166.444696 -27.134869) (xy 166.291958 -27.363457) (xy 166.315794 -27.37333) + (xy 166.665475 -27.606979) (xy 166.962855 -27.904359) (xy 167.175173 -28.222116) (xy 167.175173 -28.157021) (xy 167.2762 -27.649123) + (xy 167.474372 -27.170694) (xy 167.762073 -26.740119) (xy 168.128247 -26.373945) (xy 168.558822 -26.086244) (xy 169.037251 -25.888072) + (xy 169.545149 -25.787045) (xy 170.062997 -25.787045) (xy 170.570895 -25.888072) (xy 171.049324 -26.086244) (xy 171.479899 -26.373945) + (xy 171.846073 -26.740119) (xy 172.133774 -27.170694) (xy 172.331946 -27.649123) (xy 172.432973 -28.157021) (xy 172.432973 -28.674869) + (xy 172.331946 -29.182767) (xy 172.133774 -29.661196) (xy 171.846073 -30.091771) (xy 171.479899 -30.457945) (xy 171.346309 -30.547207) + (xy 172.994338 -30.547207) (xy 172.994338 -30.254511) (xy 173.05144 -29.967438) (xy 173.16345 -29.697021) (xy 173.326064 -29.453653) + (xy 173.533032 -29.246685) (xy 173.7764 -29.084071) (xy 174.046817 -28.972061) (xy 174.33389 -28.914959) (xy 174.626586 -28.914959) + (xy 174.913659 -28.972061) (xy 175.184076 -29.084071) (xy 175.427444 -29.246685) (xy 175.634412 -29.453653) (xy 175.797026 -29.697021) + (xy 175.909036 -29.967438) (xy 175.966138 -30.254511) (xy 175.966138 -30.547207) (xy 175.909036 -30.83428) (xy 175.797026 -31.104697) + (xy 175.634412 -31.348065) (xy 175.427444 -31.555033) (xy 175.184076 -31.717647) (xy 174.913659 -31.829657) (xy 174.626586 -31.886759) + (xy 174.33389 -31.886759) (xy 174.046817 -31.829657) (xy 173.7764 -31.717647) (xy 173.533032 -31.555033) (xy 173.326064 -31.348065) + (xy 173.16345 -31.104697) (xy 173.05144 -30.83428) (xy 172.994338 -30.547207) (xy 171.346309 -30.547207) (xy 171.049324 -30.745646) + (xy 170.570895 -30.943818) (xy 170.062997 -31.044845) (xy 169.545149 -31.044845) (xy 169.037251 -30.943818) (xy 168.558822 -30.745646) + (xy 168.128247 -30.457945) (xy 167.762073 -30.091771) (xy 167.474372 -29.661196) (xy 167.42587 -29.544102) (xy 167.357445 -29.888098) + (xy 167.196504 -30.276644) (xy 166.962855 -30.626325) (xy 166.665475 -30.923705) (xy 166.315794 -31.157354) (xy 165.927248 -31.318295) + (xy 165.514771 -31.400342) (xy 165.094213 -31.400342) (xy 164.681736 -31.318295) (xy 164.29319 -31.157354) (xy 163.943509 -30.923705) + (xy 163.646129 -30.626325) (xy 163.41248 -30.276644) (xy 163.251539 -29.888098) (xy 163.248689 -29.873769) (xy 161.014839 -29.873769) + (xy 160.890357 -29.861509) (xy 160.770659 -29.825199) (xy 160.660345 -29.766234) (xy 160.563654 -29.686882) (xy 160.484302 -29.590191) + (xy 160.425337 -29.479877) (xy 160.389027 -29.360179) (xy 160.376767 -29.235697) (xy 158.420811 -29.235697) (xy 158.420811 -33.376725) + (xy 158.424487 -33.414048) (xy 158.420811 -33.451371) (xy 158.420811 -33.45138) (xy 158.409814 -33.563033) (xy 158.366357 -33.706294) + (xy 158.295785 -33.838323) (xy 158.200812 -33.954048) (xy 158.171814 -33.977846) (xy 152.149992 -39.999667) (xy 152.149992 -42.087938) + (xy 152.137732 -42.21242) (xy 152.101422 -42.332118) (xy 152.042457 -42.442432) (xy 151.963105 -42.539123) (xy 151.866414 -42.618475) + (xy 151.7561 -42.67744) (xy 151.636402 -42.71375) (xy 151.51192 -42.72601) (xy 148.96192 -42.72601) (xy 148.837438 -42.71375) + (xy 148.71774 -42.67744) (xy 148.607426 -42.618475) (xy 148.510735 -42.539123) (xy 148.431383 -42.442432) (xy 148.372418 -42.332118) + (xy 148.336108 -42.21242) (xy 148.323848 -42.087938) (xy 148.323848 -41.362827) (xy 148.208715 -41.439756) (xy 147.820169 -41.600697) + (xy 147.407692 -41.682744) (xy 146.987134 -41.682744) (xy 146.574657 -41.600697) (xy 146.186111 -41.439756) (xy 145.83643 -41.206107) + (xy 145.53905 -40.908727) (xy 145.305401 -40.559046) (xy 145.14446 -40.1705) (xy 145.062413 -39.758023) (xy 136.331394 -39.758023) + (xy 144.89107 -46.725289) (xy 152.952875 -46.725289) (xy 152.952875 -44.225289) (xy 152.965135 -44.100807) (xy 153.001445 -43.981109) + (xy 153.06041 -43.870795) (xy 153.139762 -43.774104) (xy 153.236453 -43.694752) (xy 153.346767 -43.635787) (xy 153.466465 -43.599477) + (xy 153.590947 -43.587217) (xy 154.631985 -43.587217) (xy 158.915877 -39.303324) (xy 158.939675 -39.274326) (xy 158.968673 -39.250528) + (xy 159.055399 -39.179353) (xy 159.139277 -39.134519) (xy 159.187429 -39.108781) (xy 159.33069 -39.065324) (xy 159.424057 -39.056128) + (xy 159.593622 -38.802355) (xy 159.814742 -38.581235) (xy 160.074751 -38.407503) (xy 160.363657 -38.287834) (xy 160.670359 -38.226827) + (xy 160.983069 -38.226827) (xy 161.289771 -38.287834) (xy 161.578677 -38.407503) (xy 161.838686 -38.581235) (xy 162.059806 -38.802355) + (xy 162.233538 -39.062364) (xy 162.251255 -39.105136) (xy 162.263271 -39.108781) (xy 162.3953 -39.179353) (xy 162.511025 -39.274326) + (xy 162.533529 -39.301747) (xy 162.640783 -39.292127) (xy 162.765153 -39.305473) (xy 162.884529 -39.342827) (xy 163.712984 -39.694485) + (xy 163.82278 -39.754409) (xy 163.918775 -39.834602) (xy 163.997281 -39.931982) (xy 164.05528 -40.042807) (xy 164.090544 -40.162817) + (xy 164.101718 -40.287401) (xy 164.088372 -40.411771) (xy 164.051018 -40.531147) (xy 163.582141 -41.635753) (xy 163.522217 -41.745549) + (xy 163.442024 -41.841544) (xy 163.344644 -41.92005) (xy 163.233819 -41.978049) (xy 163.113809 -42.013313) (xy 162.989225 -42.024487) + (xy 162.864855 -42.011141) (xy 162.745479 -41.973787) (xy 161.917024 -41.622129) (xy 161.807228 -41.562205) (xy 161.711233 -41.482012) + (xy 161.632727 -41.384632) (xy 161.574728 -41.273807) (xy 161.561363 -41.228323) (xy 161.289771 -41.34082) (xy 160.983069 -41.401827) + (xy 160.670359 -41.401827) (xy 160.363657 -41.34082) (xy 160.074751 -41.221151) (xy 159.814742 -41.047419) (xy 159.593622 -40.826299) + (xy 159.573148 -40.795657) (xy 158.05018 -42.318625) (xy 164.565956 -42.318625) (xy 164.579302 -42.194255) (xy 164.616656 -42.074879) + (xy 165.085533 -40.970273) (xy 165.145457 -40.860477) (xy 165.22565 -40.764482) (xy 165.32303 -40.685976) (xy 165.433855 -40.627977) + (xy 165.553865 -40.592713) (xy 165.678449 -40.581539) (xy 165.802819 -40.594885) (xy 165.922195 -40.632239) (xy 166.75065 -40.983897) + (xy 166.860446 -41.043821) (xy 166.956441 -41.124014) (xy 166.966085 -41.135977) (xy 167.02014 -41.092399) (xy 167.130965 -41.0344) + (xy 167.250975 -40.999136) (xy 167.375559 -40.987962) (xy 167.499929 -41.001308) (xy 167.619306 -41.038662) (xy 169.255964 -41.733382) + (xy 169.365759 -41.793306) (xy 169.461754 -41.873499) (xy 169.54026 -41.970879) (xy 169.598259 -42.081704) (xy 169.633523 -42.201714) + (xy 169.644697 -42.326298) (xy 169.631351 -42.450668) (xy 169.593997 -42.570045) (xy 168.899277 -44.206703) (xy 168.839353 -44.316498) + (xy 168.75916 -44.412493) (xy 168.66178 -44.490999) (xy 168.550955 -44.548998) (xy 168.430945 -44.584262) (xy 168.306361 -44.595436) + (xy 168.181991 -44.58209) (xy 168.062614 -44.544736) (xy 166.425956 -43.850016) (xy 166.316161 -43.790092) (xy 166.220166 -43.709899) + (xy 166.14166 -43.612519) (xy 166.083661 -43.501694) (xy 166.048397 -43.381684) (xy 166.042194 -43.312526) (xy 166.026891 -43.313899) + (xy 165.902521 -43.300553) (xy 165.783145 -43.263199) (xy 164.95469 -42.911541) (xy 164.844894 -42.851617) (xy 164.748899 -42.771424) + (xy 164.670393 -42.674044) (xy 164.612394 -42.563219) (xy 164.57713 -42.443209) (xy 164.565956 -42.318625) (xy 158.05018 -42.318625) + (xy 157.920192 -42.448613) (xy 158.137437 -42.491825) (xy 158.407854 -42.603835) (xy 158.651222 -42.766449) (xy 158.85819 -42.973417) + (xy 159.020804 -43.216785) (xy 159.132814 -43.487202) (xy 159.189916 -43.774275) (xy 159.189916 -44.066971) (xy 159.132814 -44.354044) + (xy 159.020804 -44.624461) (xy 158.868066 -44.853049) (xy 158.891902 -44.862922) (xy 159.241583 -45.096571) (xy 159.538963 -45.393951) + (xy 159.751281 -45.711708) (xy 159.751281 -45.646613) (xy 159.852308 -45.138715) (xy 160.05048 -44.660286) (xy 160.338181 -44.229711) + (xy 160.704355 -43.863537) (xy 161.13493 -43.575836) (xy 161.613359 -43.377664) (xy 162.121257 -43.276637) (xy 162.639105 -43.276637) + (xy 163.147003 -43.377664) (xy 163.625432 -43.575836) (xy 164.056007 -43.863537) (xy 164.422181 -44.229711) (xy 164.709882 -44.660286) + (xy 164.908054 -45.138715) (xy 165.009081 -45.646613) (xy 165.009081 -46.164461) (xy 164.908054 -46.672359) (xy 164.709882 -47.150788) + (xy 164.422181 -47.581363) (xy 164.056007 -47.947537) (xy 163.922417 -48.036799) (xy 165.570446 -48.036799) (xy 165.570446 -47.744103) + (xy 165.627548 -47.45703) (xy 165.739558 -47.186613) (xy 165.902172 -46.943245) (xy 166.10914 -46.736277) (xy 166.352508 -46.573663) + (xy 166.622925 -46.461653) (xy 166.909998 -46.404551) (xy 167.202694 -46.404551) (xy 167.489767 -46.461653) (xy 167.760184 -46.573663) + (xy 168.003552 -46.736277) (xy 168.21052 -46.943245) (xy 168.373134 -47.186613) (xy 168.485144 -47.45703) (xy 168.542246 -47.744103) + (xy 168.542246 -48.036799) (xy 168.485144 -48.323872) (xy 168.373134 -48.594289) (xy 168.21052 -48.837657) (xy 168.003552 -49.044625) + (xy 167.760184 -49.207239) (xy 167.489767 -49.319249) (xy 167.202694 -49.376351) (xy 166.909998 -49.376351) (xy 166.622925 -49.319249) + (xy 166.352508 -49.207239) (xy 166.10914 -49.044625) (xy 165.902172 -48.837657) (xy 165.739558 -48.594289) (xy 165.627548 -48.323872) + (xy 165.570446 -48.036799) (xy 163.922417 -48.036799) (xy 163.625432 -48.235238) (xy 163.147003 -48.43341) (xy 162.639105 -48.534437) + (xy 162.121257 -48.534437) (xy 161.613359 -48.43341) (xy 161.13493 -48.235238) (xy 160.704355 -47.947537) (xy 160.338181 -47.581363) + (xy 160.05048 -47.150788) (xy 160.001978 -47.033694) (xy 159.933553 -47.37769) (xy 159.772612 -47.766236) (xy 159.538963 -48.115917) + (xy 159.241583 -48.413297) (xy 158.891902 -48.646946) (xy 158.503356 -48.807887) (xy 158.090879 -48.889934) (xy 157.670321 -48.889934) + (xy 157.257844 -48.807887) (xy 156.869298 -48.646946) (xy 156.519617 -48.413297) (xy 156.222237 -48.115917) (xy 155.988588 -47.766236) + (xy 155.827647 -47.37769) (xy 155.824797 -47.363361) (xy 153.590947 -47.363361) (xy 153.466465 -47.351101) (xy 153.346767 -47.314791) + (xy 153.236453 -47.255826) (xy 153.139762 -47.176474) (xy 153.06041 -47.079783) (xy 153.001445 -46.969469) (xy 152.965135 -46.849771) + (xy 152.952875 -46.725289) (xy 144.89107 -46.725289) (xy 149.637935 -50.589064) (xy 152.45406 -51.784438) (xy 160.598349 -51.784438) + (xy 160.598349 -51.36388) (xy 160.680396 -50.951403) (xy 160.841337 -50.562857) (xy 161.074986 -50.213176) (xy 161.372366 -49.915796) + (xy 161.722047 -49.682147) (xy 162.110593 -49.521206) (xy 162.52307 -49.439159) (xy 162.943628 -49.439159) (xy 163.356105 -49.521206) + (xy 163.744651 -49.682147) (xy 164.094332 -49.915796) (xy 164.391712 -50.213176) (xy 164.625361 -50.562857) (xy 164.786302 -50.951403) + (xy 164.791251 -50.976281) (xy 166.586127 -50.976281) (xy 172.436749 -45.125658) (xy 172.436748 -39.915459) (xy 172.392811 -39.871522) + (xy 172.279543 -39.702004) (xy 172.201522 -39.513646) (xy 172.161748 -39.313687) (xy 172.161748 -39.109809) (xy 172.201522 -38.90985) + (xy 172.279543 -38.721492) (xy 172.392811 -38.551974) (xy 172.436749 -38.508036) (xy 172.436748 -37.262833) (xy 171.921748 -37.262833) + (xy 171.797266 -37.250573) (xy 171.677568 -37.214263) (xy 171.567254 -37.155298) (xy 171.470563 -37.075946) (xy 171.391211 -36.979255) + (xy 171.332246 -36.868941) (xy 171.295936 -36.749243) (xy 171.283676 -36.624761) (xy 171.283676 -35.89965) (xy 171.168543 -35.976579) + (xy 170.779997 -36.13752) (xy 170.36752 -36.219567) (xy 169.946962 -36.219567) (xy 169.534485 -36.13752) (xy 169.145939 -35.976579) + (xy 168.796258 -35.74293) (xy 168.498878 -35.44555) (xy 168.265229 -35.095869) (xy 168.104288 -34.707323) (xy 168.022241 -34.294846) + (xy 168.022241 -33.874288) (xy 168.104288 -33.461811) (xy 168.265229 -33.073265) (xy 168.498878 -32.723584) (xy 168.796258 -32.426204) + (xy 169.145939 -32.192555) (xy 169.534485 -32.031614) (xy 169.946962 -31.949567) (xy 170.36752 -31.949567) (xy 170.779997 -32.031614) + (xy 171.168543 -32.192555) (xy 171.518224 -32.426204) (xy 171.815604 -32.723584) (xy 172.049253 -33.073265) (xy 172.210194 -33.461811) + (xy 172.215143 -33.486689) (xy 174.010019 -33.486689) (xy 179.373087 -28.12362) (xy 179.373086 -19.773241) (xy 179.345639 -19.773241) + (xy 179.221157 -19.760981) (xy 179.101459 -19.724671) (xy 178.991145 -19.665706) (xy 178.894454 -19.586354) (xy 178.815102 -19.489663) + (xy 178.756137 -19.379349) (xy 178.719827 -19.259651) (xy 178.707567 -19.135169) (xy 178.707567 -18.410058) (xy 178.592434 -18.486987) + (xy 178.203888 -18.647928) (xy 177.791411 -18.729975) (xy 177.370853 -18.729975) (xy 176.958376 -18.647928) (xy 176.56983 -18.486987) + (xy 176.220149 -18.253338) (xy 175.922769 -17.955958) (xy 175.68912 -17.606277) (xy 175.528179 -17.217731) (xy 175.446132 -16.805254) + (xy 175.446132 -16.384696) (xy 175.528179 -15.972219) (xy 175.68912 -15.583673) (xy 175.922769 -15.233992) (xy 176.220149 -14.936612) + (xy 176.56983 -14.702963) (xy 176.958376 -14.542022) (xy 177.370853 -14.459975) (xy 177.791411 -14.459975) (xy 178.203888 -14.542022) + (xy 178.592434 -14.702963) (xy 178.942115 -14.936612) (xy 179.239495 -15.233992) (xy 179.473144 -15.583673) (xy 179.634085 -15.972219) + (xy 179.639034 -15.997097) (xy 181.43391 -15.997097) (xy 187.284532 -10.146474) (xy 187.284531 -2.283649) (xy 186.769531 -2.283649) + (xy 186.645049 -2.271389) (xy 186.525351 -2.235079) (xy 186.415037 -2.176114) (xy 186.318346 -2.096762) (xy 186.238994 -2.000071) + (xy 186.180029 -1.889757) (xy 186.143719 -1.770059) (xy 186.131459 -1.645577) (xy 186.131459 -0.920466) (xy 186.016326 -0.997395) + (xy 185.62778 -1.158336) (xy 185.215303 -1.240383) (xy 184.794745 -1.240383) (xy 184.382268 -1.158336) (xy 183.993722 -0.997395) + (xy 183.644041 -0.763746) (xy 183.346661 -0.466366) (xy 183.113012 -0.116685) (xy 182.952071 0.271861) (xy 182.870024 0.684338) + (xy 182.870024 1.104896) (xy 182.952071 1.517373) (xy 183.113012 1.905919) (xy 183.346661 2.2556) (xy 183.644041 2.55298) + (xy 183.993722 2.786629) (xy 184.382268 2.94757) (xy 184.794745 3.029617) (xy 185.215303 3.029617) (xy 185.62778 2.94757) + (xy 185.689221 2.92212) (xy 194.667798 2.92212) (xy 194.667798 5.42212) (xy 194.680058 5.546602) (xy 194.716368 5.6663) + (xy 194.775333 5.776614) (xy 194.854685 5.873305) (xy 194.951376 5.952657) (xy 195.06169 6.011622) (xy 195.181388 6.047932) + (xy 195.30587 6.060192) (xy 196.346907 6.060192) (xy 200.630799 10.344085) (xy 200.654597 10.373083) (xy 200.770322 10.468056) + (xy 200.902351 10.538628) (xy 201.045612 10.582085) (xy 201.138979 10.591281) (xy 201.308544 10.845054) (xy 201.529664 11.066174) + (xy 201.789673 11.239906) (xy 202.078579 11.359575) (xy 202.385281 11.420582) (xy 202.697991 11.420582) (xy 203.004693 11.359575) + (xy 203.293599 11.239906) (xy 203.553608 11.066174) (xy 203.774728 10.845054) (xy 203.94846 10.585045) (xy 203.966177 10.542273) + (xy 203.978193 10.538628) (xy 204.110222 10.468056) (xy 204.225947 10.373083) (xy 204.248451 10.345662) (xy 204.355705 10.355282) + (xy 204.480075 10.341936) (xy 204.599451 10.304582) (xy 205.427906 9.952924) (xy 205.537702 9.893) (xy 205.633697 9.812807) + (xy 205.712203 9.715427) (xy 205.770202 9.604602) (xy 205.805466 9.484592) (xy 205.81664 9.360008) (xy 205.803294 9.235638) + (xy 205.76594 9.116262) (xy 205.297063 8.011656) (xy 205.237139 7.90186) (xy 205.156946 7.805865) (xy 205.059566 7.727359) + (xy 204.948741 7.66936) (xy 204.828731 7.634096) (xy 204.704147 7.622922) (xy 204.579777 7.636268) (xy 204.460401 7.673622) + (xy 203.631946 8.02528) (xy 203.52215 8.085204) (xy 203.426155 8.165397) (xy 203.347649 8.262777) (xy 203.28965 8.373602) + (xy 203.276285 8.419086) (xy 203.004693 8.306589) (xy 202.697991 8.245582) (xy 202.385281 8.245582) (xy 202.078579 8.306589) + (xy 201.789673 8.426258) (xy 201.529664 8.59999) (xy 201.308544 8.82111) (xy 201.28807 8.851752) (xy 199.765102 7.328784) + (xy 206.280878 7.328784) (xy 206.294224 7.453154) (xy 206.331578 7.57253) (xy 206.800455 8.677136) (xy 206.860379 8.786932) + (xy 206.940572 8.882927) (xy 207.037952 8.961433) (xy 207.148777 9.019432) (xy 207.268787 9.054696) (xy 207.393371 9.06587) + (xy 207.517741 9.052524) (xy 207.637117 9.01517) (xy 208.465572 8.663512) (xy 208.575368 8.603588) (xy 208.671363 8.523395) + (xy 208.681007 8.511432) (xy 208.735062 8.55501) (xy 208.845887 8.613009) (xy 208.965897 8.648273) (xy 209.090481 8.659447) + (xy 209.214851 8.646101) (xy 209.334228 8.608747) (xy 210.970886 7.914027) (xy 211.080681 7.854103) (xy 211.176676 7.77391) + (xy 211.255182 7.67653) (xy 211.313181 7.565705) (xy 211.348445 7.445695) (xy 211.359619 7.321111) (xy 211.346273 7.196741) + (xy 211.308919 7.077364) (xy 210.614199 5.440706) (xy 210.554275 5.330911) (xy 210.474082 5.234916) (xy 210.376702 5.15641) + (xy 210.265877 5.098411) (xy 210.145867 5.063147) (xy 210.021283 5.051973) (xy 209.896913 5.065319) (xy 209.777536 5.102673) + (xy 208.140878 5.797393) (xy 208.031083 5.857317) (xy 207.935088 5.93751) (xy 207.856582 6.03489) (xy 207.798583 6.145715) + (xy 207.763319 6.265725) (xy 207.757116 6.334883) (xy 207.741813 6.33351) (xy 207.617443 6.346856) (xy 207.498067 6.38421) + (xy 206.669612 6.735868) (xy 206.559816 6.795792) (xy 206.463821 6.875985) (xy 206.385315 6.973365) (xy 206.327316 7.08419) + (xy 206.292052 7.2042) (xy 206.280878 7.328784) (xy 199.765102 7.328784) (xy 199.635114 7.198797) (xy 199.85236 7.155584) + (xy 200.122777 7.043574) (xy 200.366145 6.88096) (xy 200.573113 6.673992) (xy 200.735727 6.430624) (xy 200.847737 6.160207) + (xy 200.904839 5.873134) (xy 200.904839 5.580438) (xy 200.847737 5.293365) (xy 200.735727 5.022948) (xy 200.582989 4.79436) + (xy 200.606825 4.784487) (xy 200.956506 4.550838) (xy 201.253886 4.253458) (xy 201.466204 3.935701) (xy 201.466204 4.000796) + (xy 201.567231 4.508694) (xy 201.765403 4.987123) (xy 202.053104 5.417698) (xy 202.419278 5.783872) (xy 202.849853 6.071573) + (xy 203.328282 6.269745) (xy 203.83618 6.370772) (xy 204.354028 6.370772) (xy 204.861926 6.269745) (xy 205.340355 6.071573) + (xy 205.77093 5.783872) (xy 206.137104 5.417698) (xy 206.424805 4.987123) (xy 206.622977 4.508694) (xy 206.724004 4.000796) + (xy 206.724004 3.482948) (xy 206.622977 2.97505) (xy 206.424805 2.496621) (xy 206.137104 2.066046) (xy 205.77093 1.699872) + (xy 205.63734 1.61061) (xy 207.285369 1.61061) (xy 207.285369 1.903306) (xy 207.342471 2.190379) (xy 207.454481 2.460796) + (xy 207.617095 2.704164) (xy 207.824063 2.911132) (xy 208.067431 3.073746) (xy 208.337848 3.185756) (xy 208.624921 3.242858) + (xy 208.917617 3.242858) (xy 209.20469 3.185756) (xy 209.475107 3.073746) (xy 209.718475 2.911132) (xy 209.925443 2.704164) + (xy 210.088057 2.460796) (xy 210.200067 2.190379) (xy 210.257169 1.903306) (xy 210.257169 1.61061) (xy 210.200067 1.323537) + (xy 210.088057 1.05312) (xy 209.925443 0.809752) (xy 209.718475 0.602784) (xy 209.475107 0.44017) (xy 209.20469 0.32816) + (xy 208.917617 0.271058) (xy 208.624921 0.271058) (xy 208.337848 0.32816) (xy 208.067431 0.44017) (xy 207.824063 0.602784) + (xy 207.617095 0.809752) (xy 207.454481 1.05312) (xy 207.342471 1.323537) (xy 207.285369 1.61061) (xy 205.63734 1.61061) + (xy 205.340355 1.412171) (xy 204.861926 1.213999) (xy 204.354028 1.112972) (xy 203.83618 1.112972) (xy 203.328282 1.213999) + (xy 202.849853 1.412171) (xy 202.419278 1.699872) (xy 202.053104 2.066046) (xy 201.765403 2.496621) (xy 201.716901 2.613715) + (xy 201.648476 2.269719) (xy 201.487535 1.881173) (xy 201.253886 1.531492) (xy 200.956506 1.234112) (xy 200.606825 1.000463) + (xy 200.218279 0.839522) (xy 199.805802 0.757475) (xy 199.385244 0.757475) (xy 198.972767 0.839522) (xy 198.584221 1.000463) + (xy 198.23454 1.234112) (xy 197.93716 1.531492) (xy 197.703511 1.881173) (xy 197.54257 2.269719) (xy 197.53972 2.284048) + (xy 195.30587 2.284048) (xy 195.181388 2.296308) (xy 195.06169 2.332618) (xy 194.951376 2.391583) (xy 194.854685 2.470935) + (xy 194.775333 2.567626) (xy 194.716368 2.67794) (xy 194.680058 2.797638) (xy 194.667798 2.92212) (xy 185.689221 2.92212) + (xy 186.016326 2.786629) (xy 186.366007 2.55298) (xy 186.663387 2.2556) (xy 186.897036 1.905919) (xy 187.057977 1.517373) + (xy 187.062926 1.492495) (xy 189.319531 1.492495) (xy 189.444013 1.480235) (xy 189.563711 1.443925) (xy 189.674025 1.38496) + (xy 189.770716 1.305608) (xy 189.850068 1.208917) (xy 189.909033 1.098603) (xy 189.945343 0.978905) (xy 189.957603 0.854423) + (xy 189.957603 -1.645577) (xy 189.945343 -1.770059) (xy 189.909033 -1.889757) (xy 189.850068 -2.000071) (xy 189.770716 -2.096762) + (xy 189.674025 -2.176114) (xy 189.563711 -2.235079) (xy 189.444013 -2.271389) (xy 189.319531 -2.283649) (xy 188.804531 -2.283649) + (xy 188.804531 -10.423952) (xy 188.808207 -10.461277) (xy 188.804531 -10.498602) (xy 188.804531 -10.49861) (xy 188.793534 -10.610263) + (xy 188.750077 -10.753524) (xy 188.679505 -10.885553) (xy 188.584532 -11.001278) (xy 188.555534 -11.025076) (xy 188.15121 -11.4294) + (xy 188.923016 -11.4294) (xy 193.206908 -7.145507) (xy 193.230706 -7.116509) (xy 193.259704 -7.092711) (xy 193.34643 -7.021536) + (xy 193.431189 -6.976231) (xy 193.47846 -6.950964) (xy 193.621721 -6.907507) (xy 193.715088 -6.898311) (xy 193.884653 -6.644538) + (xy 194.105773 -6.423418) (xy 194.365782 -6.249686) (xy 194.654688 -6.130017) (xy 194.96139 -6.06901) (xy 195.2741 -6.06901) + (xy 195.580802 -6.130017) (xy 195.869708 -6.249686) (xy 196.129717 -6.423418) (xy 196.350837 -6.644538) (xy 196.524569 -6.904547) + (xy 196.542286 -6.947319) (xy 196.554302 -6.950964) (xy 196.686331 -7.021536) (xy 196.802056 -7.116509) (xy 196.82456 -7.14393) + (xy 196.931814 -7.13431) (xy 197.056184 -7.147656) (xy 197.17556 -7.18501) (xy 198.004015 -7.536668) (xy 198.113811 -7.596592) + (xy 198.209806 -7.676785) (xy 198.288312 -7.774165) (xy 198.346311 -7.88499) (xy 198.381575 -8.005) (xy 198.392749 -8.129584) + (xy 198.379403 -8.253954) (xy 198.342049 -8.37333) (xy 197.873172 -9.477936) (xy 197.813248 -9.587732) (xy 197.733055 -9.683727) + (xy 197.635675 -9.762233) (xy 197.52485 -9.820232) (xy 197.40484 -9.855496) (xy 197.280256 -9.86667) (xy 197.155886 -9.853324) + (xy 197.03651 -9.81597) (xy 196.208055 -9.464312) (xy 196.098259 -9.404388) (xy 196.002264 -9.324195) (xy 195.923758 -9.226815) + (xy 195.865759 -9.11599) (xy 195.852394 -9.070506) (xy 195.580802 -9.183003) (xy 195.2741 -9.24401) (xy 194.96139 -9.24401) + (xy 194.654688 -9.183003) (xy 194.365782 -9.063334) (xy 194.105773 -8.889602) (xy 193.884653 -8.668482) (xy 193.864179 -8.63784) + (xy 192.341211 -10.160808) (xy 198.856987 -10.160808) (xy 198.870333 -10.036438) (xy 198.907687 -9.917062) (xy 199.376564 -8.812456) + (xy 199.436488 -8.70266) (xy 199.516681 -8.606665) (xy 199.614061 -8.528159) (xy 199.724886 -8.47016) (xy 199.844896 -8.434896) + (xy 199.96948 -8.423722) (xy 200.09385 -8.437068) (xy 200.213226 -8.474422) (xy 201.041681 -8.82608) (xy 201.151477 -8.886004) + (xy 201.247472 -8.966197) (xy 201.257116 -8.97816) (xy 201.311171 -8.934582) (xy 201.421996 -8.876583) (xy 201.542006 -8.841319) + (xy 201.66659 -8.830145) (xy 201.79096 -8.843491) (xy 201.910337 -8.880845) (xy 203.546995 -9.575565) (xy 203.65679 -9.635489) + (xy 203.752785 -9.715682) (xy 203.831291 -9.813062) (xy 203.88929 -9.923887) (xy 203.924554 -10.043897) (xy 203.935728 -10.168481) + (xy 203.922382 -10.292851) (xy 203.885028 -10.412228) (xy 203.190308 -12.048886) (xy 203.130384 -12.158681) (xy 203.050191 -12.254676) + (xy 202.952811 -12.333182) (xy 202.841986 -12.391181) (xy 202.721976 -12.426445) (xy 202.597392 -12.437619) (xy 202.473022 -12.424273) + (xy 202.353645 -12.386919) (xy 200.716987 -11.692199) (xy 200.607192 -11.632275) (xy 200.511197 -11.552082) (xy 200.432691 -11.454702) + (xy 200.374692 -11.343877) (xy 200.339428 -11.223867) (xy 200.333225 -11.154709) (xy 200.317922 -11.156082) (xy 200.193552 -11.142736) + (xy 200.074176 -11.105382) (xy 199.245721 -10.753724) (xy 199.135925 -10.6938) (xy 199.03993 -10.613607) (xy 198.961424 -10.516227) + (xy 198.903425 -10.405402) (xy 198.868161 -10.285392) (xy 198.856987 -10.160808) (xy 192.341211 -10.160808) (xy 192.211223 -10.290796) + (xy 192.428468 -10.334008) (xy 192.698885 -10.446018) (xy 192.942253 -10.608632) (xy 193.149221 -10.8156) (xy 193.311835 -11.058968) + (xy 193.423845 -11.329385) (xy 193.480947 -11.616458) (xy 193.480947 -11.909154) (xy 193.423845 -12.196227) (xy 193.311835 -12.466644) + (xy 193.159097 -12.695232) (xy 193.182933 -12.705105) (xy 193.532614 -12.938754) (xy 193.829994 -13.236134) (xy 194.042312 -13.553891) + (xy 194.042312 -13.488796) (xy 194.143339 -12.980898) (xy 194.341511 -12.502469) (xy 194.629212 -12.071894) (xy 194.995386 -11.70572) + (xy 195.425961 -11.418019) (xy 195.90439 -11.219847) (xy 196.412288 -11.11882) (xy 196.930136 -11.11882) (xy 197.438034 -11.219847) + (xy 197.916463 -11.418019) (xy 198.347038 -11.70572) (xy 198.713212 -12.071894) (xy 199.000913 -12.502469) (xy 199.199085 -12.980898) + (xy 199.300112 -13.488796) (xy 199.300112 -14.006644) (xy 199.199085 -14.514542) (xy 199.000913 -14.992971) (xy 198.713212 -15.423546) + (xy 198.347038 -15.78972) (xy 198.213448 -15.878982) (xy 199.861477 -15.878982) (xy 199.861477 -15.586286) (xy 199.918579 -15.299213) + (xy 200.030589 -15.028796) (xy 200.193203 -14.785428) (xy 200.400171 -14.57846) (xy 200.643539 -14.415846) (xy 200.913956 -14.303836) + (xy 201.201029 -14.246734) (xy 201.493725 -14.246734) (xy 201.780798 -14.303836) (xy 202.051215 -14.415846) (xy 202.294583 -14.57846) + (xy 202.501551 -14.785428) (xy 202.664165 -15.028796) (xy 202.776175 -15.299213) (xy 202.833277 -15.586286) (xy 202.833277 -15.878982) + (xy 202.776175 -16.166055) (xy 202.664165 -16.436472) (xy 202.501551 -16.67984) (xy 202.294583 -16.886808) (xy 202.051215 -17.049422) + (xy 201.780798 -17.161432) (xy 201.493725 -17.218534) (xy 201.201029 -17.218534) (xy 200.913956 -17.161432) (xy 200.643539 -17.049422) + (xy 200.400171 -16.886808) (xy 200.193203 -16.67984) (xy 200.030589 -16.436472) (xy 199.918579 -16.166055) (xy 199.861477 -15.878982) + (xy 198.213448 -15.878982) (xy 197.916463 -16.077421) (xy 197.438034 -16.275593) (xy 196.930136 -16.37662) (xy 196.412288 -16.37662) + (xy 195.90439 -16.275593) (xy 195.425961 -16.077421) (xy 194.995386 -15.78972) (xy 194.629212 -15.423546) (xy 194.341511 -14.992971) + (xy 194.293009 -14.875877) (xy 194.224584 -15.219873) (xy 194.063643 -15.608419) (xy 193.829994 -15.9581) (xy 193.532614 -16.25548) + (xy 193.182933 -16.489129) (xy 192.794387 -16.65007) (xy 192.38191 -16.732117) (xy 191.961352 -16.732117) (xy 191.548875 -16.65007) + (xy 191.160329 -16.489129) (xy 190.810648 -16.25548) (xy 190.513268 -15.9581) (xy 190.279619 -15.608419) (xy 190.118678 -15.219873) + (xy 190.115828 -15.205544) (xy 187.881978 -15.205544) (xy 187.757496 -15.193284) (xy 187.637798 -15.156974) (xy 187.527484 -15.098009) + (xy 187.430793 -15.018657) (xy 187.351441 -14.921966) (xy 187.292476 -14.811652) (xy 187.256166 -14.691954) (xy 187.243906 -14.567472) + (xy 187.243906 -12.336704) (xy 182.533711 -17.046898) (xy 182.533711 -19.135169) (xy 182.521451 -19.259651) (xy 182.485141 -19.379349) + (xy 182.426176 -19.489663) (xy 182.346824 -19.586354) (xy 182.250133 -19.665706) (xy 182.139819 -19.724671) (xy 182.020121 -19.760981) + (xy 181.895639 -19.773241) (xy 180.893086 -19.773241) (xy 180.893086 -28.401101) (xy 180.896762 -28.438424) (xy 180.893086 -28.475747) + (xy 180.893086 -28.475756) (xy 180.882089 -28.587409) (xy 180.838632 -28.73067) (xy 180.76806 -28.862699) (xy 180.721862 -28.918992) + (xy 181.499124 -28.918992) (xy 185.783016 -24.635099) (xy 185.806814 -24.606101) (xy 185.922539 -24.511128) (xy 186.054568 -24.440556) + (xy 186.197829 -24.397099) (xy 186.291196 -24.387903) (xy 186.460761 -24.13413) (xy 186.681881 -23.91301) (xy 186.94189 -23.739278) + (xy 187.230796 -23.619609) (xy 187.537498 -23.558602) (xy 187.850208 -23.558602) (xy 188.15691 -23.619609) (xy 188.445816 -23.739278) + (xy 188.705825 -23.91301) (xy 188.926945 -24.13413) (xy 189.100677 -24.394139) (xy 189.118394 -24.436911) (xy 189.13041 -24.440556) + (xy 189.262439 -24.511128) (xy 189.378164 -24.606101) (xy 189.400668 -24.633522) (xy 189.507922 -24.623902) (xy 189.632292 -24.637248) + (xy 189.751668 -24.674602) (xy 190.580123 -25.02626) (xy 190.689919 -25.086184) (xy 190.785914 -25.166377) (xy 190.86442 -25.263757) + (xy 190.922419 -25.374582) (xy 190.957683 -25.494592) (xy 190.968857 -25.619176) (xy 190.955511 -25.743546) (xy 190.918157 -25.862922) + (xy 190.44928 -26.967528) (xy 190.389356 -27.077324) (xy 190.309163 -27.173319) (xy 190.211783 -27.251825) (xy 190.100958 -27.309824) + (xy 189.980948 -27.345088) (xy 189.856364 -27.356262) (xy 189.731994 -27.342916) (xy 189.612618 -27.305562) (xy 188.784163 -26.953904) + (xy 188.674367 -26.89398) (xy 188.578372 -26.813787) (xy 188.499866 -26.716407) (xy 188.441867 -26.605582) (xy 188.428502 -26.560098) + (xy 188.15691 -26.672595) (xy 187.850208 -26.733602) (xy 187.537498 -26.733602) (xy 187.230796 -26.672595) (xy 186.94189 -26.552926) + (xy 186.681881 -26.379194) (xy 186.460761 -26.158074) (xy 186.440287 -26.127432) (xy 184.917319 -27.6504) (xy 191.433095 -27.6504) + (xy 191.446441 -27.52603) (xy 191.483795 -27.406654) (xy 191.952672 -26.302048) (xy 192.012596 -26.192252) (xy 192.092789 -26.096257) + (xy 192.190169 -26.017751) (xy 192.300994 -25.959752) (xy 192.421004 -25.924488) (xy 192.545588 -25.913314) (xy 192.669958 -25.92666) + (xy 192.789334 -25.964014) (xy 193.617789 -26.315672) (xy 193.727585 -26.375596) (xy 193.82358 -26.455789) (xy 193.833224 -26.467752) + (xy 193.887279 -26.424174) (xy 193.998104 -26.366175) (xy 194.118114 -26.330911) (xy 194.242698 -26.319737) (xy 194.367068 -26.333083) + (xy 194.486445 -26.370437) (xy 196.123103 -27.065157) (xy 196.232898 -27.125081) (xy 196.328893 -27.205274) (xy 196.407399 -27.302654) + (xy 196.465398 -27.413479) (xy 196.500662 -27.533489) (xy 196.511836 -27.658073) (xy 196.49849 -27.782443) (xy 196.461136 -27.90182) + (xy 195.766416 -29.538478) (xy 195.706492 -29.648273) (xy 195.626299 -29.744268) (xy 195.528919 -29.822774) (xy 195.418094 -29.880773) + (xy 195.298084 -29.916037) (xy 195.1735 -29.927211) (xy 195.04913 -29.913865) (xy 194.929753 -29.876511) (xy 193.293095 -29.181791) + (xy 193.1833 -29.121867) (xy 193.087305 -29.041674) (xy 193.008799 -28.944294) (xy 192.9508 -28.833469) (xy 192.915536 -28.713459) + (xy 192.909333 -28.644301) (xy 192.89403 -28.645674) (xy 192.76966 -28.632328) (xy 192.650284 -28.594974) (xy 191.821829 -28.243316) + (xy 191.712033 -28.183392) (xy 191.616038 -28.103199) (xy 191.537532 -28.005819) (xy 191.479533 -27.894994) (xy 191.444269 -27.774984) + (xy 191.433095 -27.6504) (xy 184.917319 -27.6504) (xy 184.787331 -27.780387) (xy 185.004577 -27.8236) (xy 185.274994 -27.93561) + (xy 185.518362 -28.098224) (xy 185.72533 -28.305192) (xy 185.887944 -28.54856) (xy 185.999954 -28.818977) (xy 186.057056 -29.10605) + (xy 186.057056 -29.398746) (xy 185.999954 -29.685819) (xy 185.887944 -29.956236) (xy 185.735206 -30.184824) (xy 185.759042 -30.194697) + (xy 186.108723 -30.428346) (xy 186.406103 -30.725726) (xy 186.618421 -31.043483) (xy 186.618421 -30.978388) (xy 186.719448 -30.47049) + (xy 186.91762 -29.992061) (xy 187.205321 -29.561486) (xy 187.571495 -29.195312) (xy 188.00207 -28.907611) (xy 188.480499 -28.709439) + (xy 188.988397 -28.608412) (xy 189.506245 -28.608412) (xy 190.014143 -28.709439) (xy 190.492572 -28.907611) (xy 190.923147 -29.195312) + (xy 191.289321 -29.561486) (xy 191.577022 -29.992061) (xy 191.775194 -30.47049) (xy 191.876221 -30.978388) (xy 191.876221 -31.496236) + (xy 191.775194 -32.004134) (xy 191.577022 -32.482563) (xy 191.289321 -32.913138) (xy 190.923147 -33.279312) (xy 190.789557 -33.368574) + (xy 192.437586 -33.368574) (xy 192.437586 -33.075878) (xy 192.494688 -32.788805) (xy 192.606698 -32.518388) (xy 192.769312 -32.27502) + (xy 192.97628 -32.068052) (xy 193.219648 -31.905438) (xy 193.490065 -31.793428) (xy 193.777138 -31.736326) (xy 194.069834 -31.736326) + (xy 194.356907 -31.793428) (xy 194.627324 -31.905438) (xy 194.870692 -32.068052) (xy 195.07766 -32.27502) (xy 195.240274 -32.518388) + (xy 195.352284 -32.788805) (xy 195.409386 -33.075878) (xy 195.409386 -33.368574) (xy 195.352284 -33.655647) (xy 195.240274 -33.926064) + (xy 195.07766 -34.169432) (xy 194.870692 -34.3764) (xy 194.627324 -34.539014) (xy 194.356907 -34.651024) (xy 194.069834 -34.708126) + (xy 193.777138 -34.708126) (xy 193.490065 -34.651024) (xy 193.219648 -34.539014) (xy 192.97628 -34.3764) (xy 192.769312 -34.169432) + (xy 192.606698 -33.926064) (xy 192.494688 -33.655647) (xy 192.437586 -33.368574) (xy 190.789557 -33.368574) (xy 190.492572 -33.567013) + (xy 190.014143 -33.765185) (xy 189.506245 -33.866212) (xy 188.988397 -33.866212) (xy 188.480499 -33.765185) (xy 188.00207 -33.567013) + (xy 187.571495 -33.279312) (xy 187.205321 -32.913138) (xy 186.91762 -32.482563) (xy 186.869118 -32.365469) (xy 186.800693 -32.709465) + (xy 186.639752 -33.098011) (xy 186.406103 -33.447692) (xy 186.108723 -33.745072) (xy 185.759042 -33.978721) (xy 185.370496 -34.139662) + (xy 184.958019 -34.221709) (xy 184.537461 -34.221709) (xy 184.124984 -34.139662) (xy 183.736438 -33.978721) (xy 183.386757 -33.745072) + (xy 183.089377 -33.447692) (xy 182.855728 -33.098011) (xy 182.694787 -32.709465) (xy 182.691937 -32.695136) (xy 180.458087 -32.695136) + (xy 180.333605 -32.682876) (xy 180.213907 -32.646566) (xy 180.103593 -32.587601) (xy 180.006902 -32.508249) (xy 179.92755 -32.411558) + (xy 179.868585 -32.301244) (xy 179.832275 -32.181546) (xy 179.820015 -32.057064) (xy 179.820015 -29.826296) (xy 175.10982 -34.53649) + (xy 175.10982 -36.624761) (xy 175.09756 -36.749243) (xy 175.06125 -36.868941) (xy 175.002285 -36.979255) (xy 174.922933 -37.075946) + (xy 174.826242 -37.155298) (xy 174.715928 -37.214263) (xy 174.59623 -37.250573) (xy 174.471748 -37.262833) (xy 173.956748 -37.262833) + (xy 173.956748 -38.508037) (xy 174.000685 -38.551974) (xy 174.113953 -38.721492) (xy 174.191974 -38.90985) (xy 174.231748 -39.109809) + (xy 174.231748 -39.313687) (xy 174.191974 -39.513646) (xy 174.113953 -39.702004) (xy 174.000685 -39.871522) (xy 173.956748 -39.915459) + (xy 173.956748 -45.403136) (xy 173.960424 -45.440461) (xy 173.956748 -45.477786) (xy 173.956748 -45.477794) (xy 173.945751 -45.589447) + (xy 173.902294 -45.732708) (xy 173.831722 -45.864737) (xy 173.736749 -45.980462) (xy 173.707751 -46.00426) (xy 173.303426 -46.408585) + (xy 174.075232 -46.408585) (xy 178.359125 -42.124691) (xy 178.382923 -42.095693) (xy 178.411921 -42.071895) (xy 178.498647 -42.00072) + (xy 178.597804 -41.947719) (xy 178.630677 -41.930148) (xy 178.773938 -41.886691) (xy 178.867305 -41.877495) (xy 179.03687 -41.623722) + (xy 179.25799 -41.402602) (xy 179.517999 -41.22887) (xy 179.806905 -41.109201) (xy 180.113607 -41.048194) (xy 180.426317 -41.048194) + (xy 180.733019 -41.109201) (xy 181.021925 -41.22887) (xy 181.281934 -41.402602) (xy 181.503054 -41.623722) (xy 181.676786 -41.883731) + (xy 181.694503 -41.926503) (xy 181.706519 -41.930148) (xy 181.838548 -42.00072) (xy 181.954273 -42.095693) (xy 181.976777 -42.123114) + (xy 182.084031 -42.113494) (xy 182.208401 -42.12684) (xy 182.327777 -42.164194) (xy 183.156232 -42.515852) (xy 183.266028 -42.575776) + (xy 183.362023 -42.655969) (xy 183.440529 -42.753349) (xy 183.498528 -42.864174) (xy 183.533792 -42.984184) (xy 183.544966 -43.108768) + (xy 183.53162 -43.233138) (xy 183.494266 -43.352514) (xy 183.025389 -44.45712) (xy 182.965465 -44.566916) (xy 182.885272 -44.662911) + (xy 182.787892 -44.741417) (xy 182.677067 -44.799416) (xy 182.557057 -44.83468) (xy 182.432473 -44.845854) (xy 182.308103 -44.832508) + (xy 182.188727 -44.795154) (xy 181.360272 -44.443496) (xy 181.250476 -44.383572) (xy 181.154481 -44.303379) (xy 181.075975 -44.205999) + (xy 181.017976 -44.095174) (xy 181.004611 -44.04969) (xy 180.733019 -44.162187) (xy 180.426317 -44.223194) (xy 180.113607 -44.223194) + (xy 179.806905 -44.162187) (xy 179.517999 -44.042518) (xy 179.25799 -43.868786) (xy 179.03687 -43.647666) (xy 179.016396 -43.617024) + (xy 177.493428 -45.139992) (xy 184.009204 -45.139992) (xy 184.02255 -45.015622) (xy 184.059904 -44.896246) (xy 184.528781 -43.79164) + (xy 184.588705 -43.681844) (xy 184.668898 -43.585849) (xy 184.766278 -43.507343) (xy 184.877103 -43.449344) (xy 184.997113 -43.41408) + (xy 185.121697 -43.402906) (xy 185.246067 -43.416252) (xy 185.365443 -43.453606) (xy 186.193898 -43.805264) (xy 186.303694 -43.865188) + (xy 186.399689 -43.945381) (xy 186.409333 -43.957344) (xy 186.463388 -43.913766) (xy 186.574213 -43.855767) (xy 186.694223 -43.820503) + (xy 186.818807 -43.809329) (xy 186.943177 -43.822675) (xy 187.062554 -43.860029) (xy 188.699212 -44.554749) (xy 188.809007 -44.614673) + (xy 188.905002 -44.694866) (xy 188.983508 -44.792246) (xy 189.041507 -44.903071) (xy 189.076771 -45.023081) (xy 189.087945 -45.147665) + (xy 189.074599 -45.272035) (xy 189.037245 -45.391412) (xy 188.342525 -47.02807) (xy 188.282601 -47.137865) (xy 188.202408 -47.23386) + (xy 188.105028 -47.312366) (xy 187.994203 -47.370365) (xy 187.874193 -47.405629) (xy 187.749609 -47.416803) (xy 187.625239 -47.403457) + (xy 187.505862 -47.366103) (xy 185.869204 -46.671383) (xy 185.759409 -46.611459) (xy 185.663414 -46.531266) (xy 185.584908 -46.433886) + (xy 185.526909 -46.323061) (xy 185.491645 -46.203051) (xy 185.485442 -46.133893) (xy 185.470139 -46.135266) (xy 185.345769 -46.12192) + (xy 185.226393 -46.084566) (xy 184.397938 -45.732908) (xy 184.288142 -45.672984) (xy 184.192147 -45.592791) (xy 184.113641 -45.495411) + (xy 184.055642 -45.384586) (xy 184.020378 -45.264576) (xy 184.009204 -45.139992) (xy 177.493428 -45.139992) (xy 177.363439 -45.26998) + (xy 177.580685 -45.313193) (xy 177.851102 -45.425203) (xy 178.09447 -45.587817) (xy 178.301438 -45.794785) (xy 178.464052 -46.038153) + (xy 178.576062 -46.30857) (xy 178.633164 -46.595643) (xy 178.633164 -46.888339) (xy 178.576062 -47.175412) (xy 178.464052 -47.445829) + (xy 178.311314 -47.674417) (xy 178.33515 -47.68429) (xy 178.684831 -47.917939) (xy 178.982211 -48.215319) (xy 179.194529 -48.533076) + (xy 179.194529 -48.467981) (xy 179.295556 -47.960083) (xy 179.493728 -47.481654) (xy 179.781429 -47.051079) (xy 180.147603 -46.684905) + (xy 180.578178 -46.397204) (xy 181.056607 -46.199032) (xy 181.564505 -46.098005) (xy 182.082353 -46.098005) (xy 182.590251 -46.199032) + (xy 183.06868 -46.397204) (xy 183.499255 -46.684905) (xy 183.865429 -47.051079) (xy 184.15313 -47.481654) (xy 184.351302 -47.960083) + (xy 184.452329 -48.467981) (xy 184.452329 -48.985829) (xy 184.351302 -49.493727) (xy 184.15313 -49.972156) (xy 183.865429 -50.402731) + (xy 183.499255 -50.768905) (xy 183.365665 -50.858167) (xy 185.013694 -50.858167) (xy 185.013694 -50.565471) (xy 185.070796 -50.278398) + (xy 185.182806 -50.007981) (xy 185.34542 -49.764613) (xy 185.552388 -49.557645) (xy 185.795756 -49.395031) (xy 186.066173 -49.283021) + (xy 186.353246 -49.225919) (xy 186.645942 -49.225919) (xy 186.933015 -49.283021) (xy 187.203432 -49.395031) (xy 187.4468 -49.557645) + (xy 187.653768 -49.764613) (xy 187.816382 -50.007981) (xy 187.928392 -50.278398) (xy 187.985494 -50.565471) (xy 187.985494 -50.858167) + (xy 187.928392 -51.14524) (xy 187.816382 -51.415657) (xy 187.653768 -51.659025) (xy 187.4468 -51.865993) (xy 187.203432 -52.028607) + (xy 186.933015 -52.140617) (xy 186.645942 -52.197719) (xy 186.353246 -52.197719) (xy 186.066173 -52.140617) (xy 185.795756 -52.028607) + (xy 185.552388 -51.865993) (xy 185.34542 -51.659025) (xy 185.182806 -51.415657) (xy 185.070796 -51.14524) (xy 185.013694 -50.858167) + (xy 183.365665 -50.858167) (xy 183.06868 -51.056606) (xy 182.590251 -51.254778) (xy 182.082353 -51.355805) (xy 181.564505 -51.355805) + (xy 181.056607 -51.254778) (xy 180.578178 -51.056606) (xy 180.147603 -50.768905) (xy 179.781429 -50.402731) (xy 179.493728 -49.972156) + (xy 179.445226 -49.855062) (xy 179.376801 -50.199058) (xy 179.21586 -50.587604) (xy 178.982211 -50.937285) (xy 178.684831 -51.234665) + (xy 178.33515 -51.468314) (xy 177.946604 -51.629255) (xy 177.534127 -51.711302) (xy 177.113569 -51.711302) (xy 176.701092 -51.629255) + (xy 176.312546 -51.468314) (xy 175.962865 -51.234665) (xy 175.665485 -50.937285) (xy 175.431836 -50.587604) (xy 175.270895 -50.199058) + (xy 175.268045 -50.184729) (xy 173.034195 -50.184729) (xy 172.909713 -50.172469) (xy 172.790015 -50.136159) (xy 172.679701 -50.077194) + (xy 172.58301 -49.997842) (xy 172.503658 -49.901151) (xy 172.444693 -49.790837) (xy 172.408383 -49.671139) (xy 172.396123 -49.546657) + (xy 172.396123 -47.315888) (xy 167.685928 -52.026082) (xy 167.685928 -54.114353) (xy 167.673668 -54.238835) (xy 167.637358 -54.358533) + (xy 167.578393 -54.468847) (xy 167.499041 -54.565538) (xy 167.449975 -54.605806) (xy 180.041597 -54.605806) (xy 180.041597 -54.185248) + (xy 180.123644 -53.772771) (xy 180.284585 -53.384225) (xy 180.518234 -53.034544) (xy 180.815614 -52.737164) (xy 181.165295 -52.503515) + (xy 181.553841 -52.342574) (xy 181.966318 -52.260527) (xy 182.386876 -52.260527) (xy 182.799353 -52.342574) (xy 183.187899 -52.503515) + (xy 183.53758 -52.737164) (xy 183.83496 -53.034544) (xy 184.068609 -53.384225) (xy 184.22955 -53.772771) (xy 184.234499 -53.797649) + (xy 186.029375 -53.797649) (xy 191.879997 -47.947026) (xy 191.879996 -41.108715) (xy 191.836059 -41.064778) (xy 191.722791 -40.89526) + (xy 191.64477 -40.706902) (xy 191.604996 -40.506943) (xy 191.604996 -40.303065) (xy 191.64477 -40.103106) (xy 191.652601 -40.0842) + (xy 191.364996 -40.0842) (xy 191.240514 -40.07194) (xy 191.120816 -40.03563) (xy 191.010502 -39.976665) (xy 190.913811 -39.897313) + (xy 190.834459 -39.800622) (xy 190.775494 -39.690308) (xy 190.739184 -39.57061) (xy 190.726924 -39.446128) (xy 190.726924 -38.721017) + (xy 190.611791 -38.797946) (xy 190.223245 -38.958887) (xy 189.810768 -39.040934) (xy 189.39021 -39.040934) (xy 188.977733 -38.958887) + (xy 188.589187 -38.797946) (xy 188.239506 -38.564297) (xy 187.942126 -38.266917) (xy 187.708477 -37.917236) (xy 187.547536 -37.52869) + (xy 187.465489 -37.116213) (xy 187.465489 -36.695655) (xy 187.547536 -36.283178) (xy 187.708477 -35.894632) (xy 187.942126 -35.544951) + (xy 188.239506 -35.247571) (xy 188.589187 -35.013922) (xy 188.977733 -34.852981) (xy 189.39021 -34.770934) (xy 189.810768 -34.770934) + (xy 190.223245 -34.852981) (xy 190.611791 -35.013922) (xy 190.961472 -35.247571) (xy 191.258852 -35.544951) (xy 191.492501 -35.894632) + (xy 191.653442 -36.283178) (xy 191.658391 -36.308056) (xy 193.453267 -36.308056) (xy 199.303888 -30.457434) (xy 199.303887 -22.594608) + (xy 198.788887 -22.594608) (xy 198.664405 -22.582348) (xy 198.544707 -22.546038) (xy 198.434393 -22.487073) (xy 198.337702 -22.407721) + (xy 198.25835 -22.31103) (xy 198.199385 -22.200716) (xy 198.163075 -22.081018) (xy 198.150815 -21.956536) (xy 198.150815 -21.231425) + (xy 198.035682 -21.308354) (xy 197.647136 -21.469295) (xy 197.234659 -21.551342) (xy 196.814101 -21.551342) (xy 196.401624 -21.469295) + (xy 196.013078 -21.308354) (xy 195.663397 -21.074705) (xy 195.366017 -20.777325) (xy 195.132368 -20.427644) (xy 194.971427 -20.039098) + (xy 194.88938 -19.626621) (xy 194.88938 -19.206063) (xy 194.971427 -18.793586) (xy 195.132368 -18.40504) (xy 195.366017 -18.055359) + (xy 195.663397 -17.757979) (xy 196.013078 -17.52433) (xy 196.401624 -17.363389) (xy 196.814101 -17.281342) (xy 197.234659 -17.281342) + (xy 197.647136 -17.363389) (xy 198.035682 -17.52433) (xy 198.385363 -17.757979) (xy 198.682743 -18.055359) (xy 198.916392 -18.40504) + (xy 199.077333 -18.793586) (xy 199.082282 -18.818464) (xy 200.877158 -18.818464) (xy 206.72778 -12.967841) (xy 206.727779 -5.105016) + (xy 206.212779 -5.105016) (xy 206.088297 -5.092756) (xy 205.968599 -5.056446) (xy 205.858285 -4.997481) (xy 205.761594 -4.918129) + (xy 205.682242 -4.821438) (xy 205.623277 -4.711124) (xy 205.586967 -4.591426) (xy 205.574707 -4.466944) (xy 205.574707 -3.741833) + (xy 205.459574 -3.818762) (xy 205.071028 -3.979703) (xy 204.658551 -4.06175) (xy 204.237993 -4.06175) (xy 203.825516 -3.979703) + (xy 203.43697 -3.818762) (xy 203.087289 -3.585113) (xy 202.789909 -3.287733) (xy 202.55626 -2.938052) (xy 202.395319 -2.549506) + (xy 202.313272 -2.137029) (xy 202.313272 -1.716471) (xy 202.395319 -1.303994) (xy 202.55626 -0.915448) (xy 202.789909 -0.565767) + (xy 203.087289 -0.268387) (xy 203.43697 -0.034738) (xy 203.825516 0.126203) (xy 204.237993 0.20825) (xy 204.658551 0.20825) + (xy 205.071028 0.126203) (xy 205.459574 -0.034738) (xy 205.809255 -0.268387) (xy 206.106635 -0.565767) (xy 206.276342 -0.819752) + (xy 213.720314 -0.819752) (xy 213.720314 1.680248) (xy 213.732574 1.80473) (xy 213.768884 1.924428) (xy 213.827849 2.034742) + (xy 213.907201 2.131433) (xy 214.003892 2.210785) (xy 214.114206 2.26975) (xy 214.233904 2.30606) (xy 214.358386 2.31832) + (xy 215.399424 2.31832) (xy 219.683316 6.602213) (xy 219.707114 6.631211) (xy 219.736112 6.655009) (xy 219.822838 6.726184) + (xy 219.953304 6.79592) (xy 219.954868 6.796756) (xy 220.098129 6.840213) (xy 220.191496 6.849409) (xy 220.361061 7.103182) + (xy 220.582181 7.324302) (xy 220.84219 7.498034) (xy 221.131096 7.617703) (xy 221.437798 7.67871) (xy 221.750508 7.67871) + (xy 222.05721 7.617703) (xy 222.346116 7.498034) (xy 222.606125 7.324302) (xy 222.827245 7.103182) (xy 223.000977 6.843173) + (xy 223.018694 6.800401) (xy 223.03071 6.796756) (xy 223.162739 6.726184) (xy 223.278464 6.631211) (xy 223.300968 6.60379) + (xy 223.408222 6.61341) (xy 223.532592 6.600064) (xy 223.651968 6.56271) (xy 224.480423 6.211052) (xy 224.590219 6.151128) + (xy 224.686214 6.070935) (xy 224.76472 5.973555) (xy 224.822719 5.86273) (xy 224.857983 5.74272) (xy 224.869157 5.618136) + (xy 224.855811 5.493766) (xy 224.818457 5.37439) (xy 224.34958 4.269784) (xy 224.289656 4.159988) (xy 224.209463 4.063993) + (xy 224.112083 3.985487) (xy 224.001258 3.927488) (xy 223.881248 3.892224) (xy 223.756664 3.88105) (xy 223.632294 3.894396) + (xy 223.512918 3.93175) (xy 222.684463 4.283408) (xy 222.574667 4.343332) (xy 222.478672 4.423525) (xy 222.400166 4.520905) + (xy 222.342167 4.63173) (xy 222.328802 4.677214) (xy 222.05721 4.564717) (xy 221.750508 4.50371) (xy 221.437798 4.50371) + (xy 221.131096 4.564717) (xy 220.84219 4.684386) (xy 220.582181 4.858118) (xy 220.361061 5.079238) (xy 220.340587 5.10988) + (xy 218.817619 3.586912) (xy 225.333395 3.586912) (xy 225.346741 3.711282) (xy 225.384095 3.830658) (xy 225.852972 4.935264) + (xy 225.912896 5.04506) (xy 225.993089 5.141055) (xy 226.090469 5.219561) (xy 226.201294 5.27756) (xy 226.321304 5.312824) + (xy 226.445888 5.323998) (xy 226.570258 5.310652) (xy 226.689634 5.273298) (xy 227.518089 4.92164) (xy 227.627885 4.861716) + (xy 227.72388 4.781523) (xy 227.733524 4.76956) (xy 227.787579 4.813138) (xy 227.898404 4.871137) (xy 228.018414 4.906401) + (xy 228.142998 4.917575) (xy 228.267368 4.904229) (xy 228.386745 4.866875) (xy 230.023403 4.172155) (xy 230.133198 4.112231) + (xy 230.229193 4.032038) (xy 230.307699 3.934658) (xy 230.365698 3.823833) (xy 230.400962 3.703823) (xy 230.412136 3.579239) + (xy 230.39879 3.454869) (xy 230.361436 3.335492) (xy 229.666716 1.698834) (xy 229.606792 1.589039) (xy 229.526599 1.493044) + (xy 229.429219 1.414538) (xy 229.318394 1.356539) (xy 229.198384 1.321275) (xy 229.0738 1.310101) (xy 228.94943 1.323447) + (xy 228.830053 1.360801) (xy 227.193395 2.055521) (xy 227.0836 2.115445) (xy 226.987605 2.195638) (xy 226.909099 2.293018) + (xy 226.8511 2.403843) (xy 226.815836 2.523853) (xy 226.809633 2.593011) (xy 226.79433 2.591638) (xy 226.66996 2.604984) + (xy 226.550584 2.642338) (xy 225.722129 2.993996) (xy 225.612333 3.05392) (xy 225.516338 3.134113) (xy 225.437832 3.231493) + (xy 225.379833 3.342318) (xy 225.344569 3.462328) (xy 225.333395 3.586912) (xy 218.817619 3.586912) (xy 218.687631 3.456924) + (xy 218.904876 3.413712) (xy 219.175293 3.301702) (xy 219.418661 3.139088) (xy 219.625629 2.93212) (xy 219.788243 2.688752) + (xy 219.900253 2.418335) (xy 219.957355 2.131262) (xy 219.957355 1.838566) (xy 219.900253 1.551493) (xy 219.788243 1.281076) + (xy 219.635505 1.052488) (xy 219.659341 1.042615) (xy 220.009022 0.808966) (xy 220.306402 0.511586) (xy 220.51872 0.193829) + (xy 220.51872 0.258924) (xy 220.619747 0.766822) (xy 220.817919 1.245251) (xy 221.10562 1.675826) (xy 221.471794 2.042) + (xy 221.902369 2.329701) (xy 222.380798 2.527873) (xy 222.888696 2.6289) (xy 223.406544 2.6289) (xy 223.914442 2.527873) + (xy 224.392871 2.329701) (xy 224.823446 2.042) (xy 225.18962 1.675826) (xy 225.477321 1.245251) (xy 225.675493 0.766822) + (xy 225.77652 0.258924) (xy 225.77652 -0.258924) (xy 225.675493 -0.766822) (xy 225.477321 -1.245251) (xy 225.18962 -1.675826) + (xy 224.823446 -2.042) (xy 224.689856 -2.131262) (xy 226.337885 -2.131262) (xy 226.337885 -1.838566) (xy 226.394987 -1.551493) + (xy 226.506997 -1.281076) (xy 226.669611 -1.037708) (xy 226.876579 -0.83074) (xy 227.119947 -0.668126) (xy 227.390364 -0.556116) + (xy 227.677437 -0.499014) (xy 227.970133 -0.499014) (xy 228.257206 -0.556116) (xy 228.527623 -0.668126) (xy 228.770991 -0.83074) + (xy 228.977959 -1.037708) (xy 229.140573 -1.281076) (xy 229.252583 -1.551493) (xy 229.309685 -1.838566) (xy 229.309685 -2.131262) + (xy 229.252583 -2.418335) (xy 229.140573 -2.688752) (xy 228.977959 -2.93212) (xy 228.770991 -3.139088) (xy 228.527623 -3.301702) + (xy 228.257206 -3.413712) (xy 227.970133 -3.470814) (xy 227.677437 -3.470814) (xy 227.390364 -3.413712) (xy 227.119947 -3.301702) + (xy 226.876579 -3.139088) (xy 226.669611 -2.93212) (xy 226.506997 -2.688752) (xy 226.394987 -2.418335) (xy 226.337885 -2.131262) + (xy 224.689856 -2.131262) (xy 224.392871 -2.329701) (xy 223.914442 -2.527873) (xy 223.406544 -2.6289) (xy 222.888696 -2.6289) + (xy 222.380798 -2.527873) (xy 221.902369 -2.329701) (xy 221.471794 -2.042) (xy 221.10562 -1.675826) (xy 220.817919 -1.245251) + (xy 220.769417 -1.128157) (xy 220.700992 -1.472153) (xy 220.540051 -1.860699) (xy 220.306402 -2.21038) (xy 220.009022 -2.50776) + (xy 219.659341 -2.741409) (xy 219.270795 -2.90235) (xy 218.858318 -2.984397) (xy 218.43776 -2.984397) (xy 218.025283 -2.90235) + (xy 217.636737 -2.741409) (xy 217.287056 -2.50776) (xy 216.989676 -2.21038) (xy 216.756027 -1.860699) (xy 216.595086 -1.472153) + (xy 216.592236 -1.457824) (xy 214.358386 -1.457824) (xy 214.233904 -1.445564) (xy 214.114206 -1.409254) (xy 214.003892 -1.350289) + (xy 213.907201 -1.270937) (xy 213.827849 -1.174246) (xy 213.768884 -1.063932) (xy 213.732574 -0.944234) (xy 213.720314 -0.819752) + (xy 206.276342 -0.819752) (xy 206.340284 -0.915448) (xy 206.501225 -1.303994) (xy 206.506174 -1.328872) (xy 208.762779 -1.328872) + (xy 208.887261 -1.341132) (xy 209.006959 -1.377442) (xy 209.117273 -1.436407) (xy 209.213964 -1.515759) (xy 209.293316 -1.61245) + (xy 209.352281 -1.722764) (xy 209.388591 -1.842462) (xy 209.400851 -1.966944) (xy 209.400851 -4.466944) (xy 209.388591 -4.591426) + (xy 209.352281 -4.711124) (xy 209.293316 -4.821438) (xy 209.213964 -4.918129) (xy 209.117273 -4.997481) (xy 209.006959 -5.056446) + (xy 208.887261 -5.092756) (xy 208.762779 -5.105016) (xy 208.247779 -5.105016) (xy 208.247779 -13.245319) (xy 208.251455 -13.282644) + (xy 208.247779 -13.319969) (xy 208.247779 -13.319977) (xy 208.236782 -13.43163) (xy 208.193325 -13.574891) (xy 208.122753 -13.70692) + (xy 208.02778 -13.822645) (xy 207.998782 -13.846443) (xy 206.504254 -15.340971) (xy 206.580001 -15.278807) (xy 206.690315 -15.219842) + (xy 206.810013 -15.183532) (xy 206.934495 -15.171272) (xy 207.975532 -15.171272) (xy 212.259424 -10.887379) (xy 212.283222 -10.858381) + (xy 212.398947 -10.763408) (xy 212.530976 -10.692836) (xy 212.674237 -10.649379) (xy 212.767604 -10.640183) (xy 212.937169 -10.38641) + (xy 213.158289 -10.16529) (xy 213.418298 -9.991558) (xy 213.707204 -9.871889) (xy 214.013906 -9.810882) (xy 214.326616 -9.810882) + (xy 214.633318 -9.871889) (xy 214.922224 -9.991558) (xy 215.182233 -10.16529) (xy 215.403353 -10.38641) (xy 215.577085 -10.646419) + (xy 215.594802 -10.689191) (xy 215.606818 -10.692836) (xy 215.738847 -10.763408) (xy 215.854572 -10.858381) (xy 215.877076 -10.885802) + (xy 215.98433 -10.876182) (xy 216.1087 -10.889528) (xy 216.228076 -10.926882) (xy 217.056531 -11.27854) (xy 217.166327 -11.338464) + (xy 217.262322 -11.418657) (xy 217.340828 -11.516037) (xy 217.398827 -11.626862) (xy 217.434091 -11.746872) (xy 217.445265 -11.871456) + (xy 217.431919 -11.995826) (xy 217.394565 -12.115202) (xy 216.925688 -13.219808) (xy 216.865764 -13.329604) (xy 216.785571 -13.425599) + (xy 216.688191 -13.504105) (xy 216.577366 -13.562104) (xy 216.457356 -13.597368) (xy 216.332772 -13.608542) (xy 216.208402 -13.595196) + (xy 216.089026 -13.557842) (xy 215.260571 -13.206184) (xy 215.150775 -13.14626) (xy 215.05478 -13.066067) (xy 214.976274 -12.968687) + (xy 214.918275 -12.857862) (xy 214.90491 -12.812378) (xy 214.633318 -12.924875) (xy 214.326616 -12.985882) (xy 214.013906 -12.985882) + (xy 213.707204 -12.924875) (xy 213.418298 -12.805206) (xy 213.158289 -12.631474) (xy 212.937169 -12.410354) (xy 212.916695 -12.379712) + (xy 211.263739 -14.032667) (xy 211.480985 -14.07588) (xy 211.751402 -14.18789) (xy 211.99477 -14.350504) (xy 212.201738 -14.557472) + (xy 212.364352 -14.80084) (xy 212.476362 -15.071257) (xy 212.533464 -15.35833) (xy 212.533464 -15.651026) (xy 212.476362 -15.938099) + (xy 212.364352 -16.208516) (xy 212.211614 -16.437104) (xy 212.23545 -16.446977) (xy 212.585131 -16.680626) (xy 212.882511 -16.978006) + (xy 213.094829 -17.295763) (xy 213.094829 -17.230668) (xy 213.195856 -16.72277) (xy 213.394028 -16.244341) (xy 213.681729 -15.813766) + (xy 214.047903 -15.447592) (xy 214.478478 -15.159891) (xy 214.956907 -14.961719) (xy 215.464805 -14.860692) (xy 215.982653 -14.860692) + (xy 216.490551 -14.961719) (xy 216.96898 -15.159891) (xy 217.399555 -15.447592) (xy 217.765729 -15.813766) (xy 218.05343 -16.244341) + (xy 218.251602 -16.72277) (xy 218.352629 -17.230668) (xy 218.352629 -17.748516) (xy 218.251602 -18.256414) (xy 218.05343 -18.734843) + (xy 217.765729 -19.165418) (xy 217.399555 -19.531592) (xy 216.96898 -19.819293) (xy 216.490551 -20.017465) (xy 215.982653 -20.118492) + (xy 215.464805 -20.118492) (xy 214.956907 -20.017465) (xy 214.478478 -19.819293) (xy 214.047903 -19.531592) (xy 213.681729 -19.165418) + (xy 213.394028 -18.734843) (xy 213.345526 -18.617749) (xy 213.277101 -18.961745) (xy 213.11616 -19.350291) (xy 212.882511 -19.699972) + (xy 212.585131 -19.997352) (xy 212.23545 -20.231001) (xy 211.846904 -20.391942) (xy 211.434427 -20.473989) (xy 211.013869 -20.473989) + (xy 210.601392 -20.391942) (xy 210.212846 -20.231001) (xy 209.863165 -19.997352) (xy 209.565785 -19.699972) (xy 209.332136 -19.350291) + (xy 209.171195 -18.961745) (xy 209.168345 -18.947416) (xy 206.934495 -18.947416) (xy 206.810013 -18.935156) (xy 206.690315 -18.898846) + (xy 206.580001 -18.839881) (xy 206.48331 -18.760529) (xy 206.403958 -18.663838) (xy 206.344993 -18.553524) (xy 206.308683 -18.433826) + (xy 206.296423 -18.309344) (xy 206.296423 -15.809344) (xy 206.308683 -15.684862) (xy 206.344993 -15.565164) (xy 206.403958 -15.45485) + (xy 206.466122 -15.379103) (xy 201.976959 -19.868265) (xy 201.976959 -21.956536) (xy 201.964699 -22.081018) (xy 201.928389 -22.200716) + (xy 201.869424 -22.31103) (xy 201.790072 -22.407721) (xy 201.693381 -22.487073) (xy 201.583067 -22.546038) (xy 201.463369 -22.582348) + (xy 201.338887 -22.594608) (xy 200.823887 -22.594608) (xy 200.823887 -30.734915) (xy 200.827563 -30.772238) (xy 200.823887 -30.809561) + (xy 200.823887 -30.80957) (xy 200.81289 -30.921223) (xy 200.769433 -31.064484) (xy 200.698861 -31.196513) (xy 200.603888 -31.312238) + (xy 200.57489 -31.336036) (xy 199.080368 -32.830558) (xy 199.156109 -32.768399) (xy 199.266423 -32.709434) (xy 199.386121 -32.673124) + (xy 199.510603 -32.660864) (xy 200.551641 -32.660864) (xy 204.835533 -28.376971) (xy 204.859331 -28.347973) (xy 204.888329 -28.324175) + (xy 204.975055 -28.253) (xy 205.105523 -28.183263) (xy 205.107085 -28.182428) (xy 205.250346 -28.138971) (xy 205.343713 -28.129775) + (xy 205.513278 -27.876002) (xy 205.734398 -27.654882) (xy 205.994407 -27.48115) (xy 206.283313 -27.361481) (xy 206.590015 -27.300474) + (xy 206.902725 -27.300474) (xy 207.209427 -27.361481) (xy 207.498333 -27.48115) (xy 207.758342 -27.654882) (xy 207.979462 -27.876002) + (xy 208.153194 -28.136011) (xy 208.170911 -28.178783) (xy 208.182927 -28.182428) (xy 208.314956 -28.253) (xy 208.430681 -28.347973) + (xy 208.453185 -28.375394) (xy 208.560439 -28.365774) (xy 208.684809 -28.37912) (xy 208.804185 -28.416474) (xy 209.63264 -28.768132) + (xy 209.742436 -28.828056) (xy 209.838431 -28.908249) (xy 209.916937 -29.005629) (xy 209.974936 -29.116454) (xy 210.0102 -29.236464) + (xy 210.021374 -29.361048) (xy 210.008028 -29.485418) (xy 209.970674 -29.604794) (xy 209.501797 -30.7094) (xy 209.441873 -30.819196) + (xy 209.36168 -30.915191) (xy 209.2643 -30.993697) (xy 209.153475 -31.051696) (xy 209.033465 -31.08696) (xy 208.908881 -31.098134) + (xy 208.784511 -31.084788) (xy 208.665135 -31.047434) (xy 207.83668 -30.695776) (xy 207.726884 -30.635852) (xy 207.630889 -30.555659) + (xy 207.552383 -30.458279) (xy 207.494384 -30.347454) (xy 207.481019 -30.30197) (xy 207.209427 -30.414467) (xy 206.902725 -30.475474) + (xy 206.590015 -30.475474) (xy 206.283313 -30.414467) (xy 205.994407 -30.294798) (xy 205.734398 -30.121066) (xy 205.513278 -29.899946) + (xy 205.492804 -29.869304) (xy 203.839848 -31.52226) (xy 204.057093 -31.565472) (xy 204.32751 -31.677482) (xy 204.570878 -31.840096) + (xy 204.777846 -32.047064) (xy 204.94046 -32.290432) (xy 205.05247 -32.560849) (xy 205.109572 -32.847922) (xy 205.109572 -33.140618) + (xy 205.05247 -33.427691) (xy 204.94046 -33.698108) (xy 204.787722 -33.926696) (xy 204.811558 -33.936569) (xy 205.161239 -34.170218) + (xy 205.458619 -34.467598) (xy 205.670937 -34.785355) (xy 205.670937 -34.72026) (xy 205.771964 -34.212362) (xy 205.970136 -33.733933) + (xy 206.257837 -33.303358) (xy 206.624011 -32.937184) (xy 207.054586 -32.649483) (xy 207.533015 -32.451311) (xy 208.040913 -32.350284) + (xy 208.558761 -32.350284) (xy 209.066659 -32.451311) (xy 209.545088 -32.649483) (xy 209.975663 -32.937184) (xy 210.341837 -33.303358) + (xy 210.629538 -33.733933) (xy 210.82771 -34.212362) (xy 210.928737 -34.72026) (xy 210.928737 -35.238108) (xy 210.82771 -35.746006) + (xy 210.629538 -36.224435) (xy 210.341837 -36.65501) (xy 209.975663 -37.021184) (xy 209.545088 -37.308885) (xy 209.066659 -37.507057) + (xy 208.558761 -37.608084) (xy 208.040913 -37.608084) (xy 207.533015 -37.507057) (xy 207.054586 -37.308885) (xy 206.624011 -37.021184) + (xy 206.257837 -36.65501) (xy 205.970136 -36.224435) (xy 205.921634 -36.107341) (xy 205.853209 -36.451337) (xy 205.692268 -36.839883) + (xy 205.458619 -37.189564) (xy 205.161239 -37.486944) (xy 204.811558 -37.720593) (xy 204.423012 -37.881534) (xy 204.010535 -37.963581) + (xy 203.589977 -37.963581) (xy 203.1775 -37.881534) (xy 202.788954 -37.720593) (xy 202.439273 -37.486944) (xy 202.141893 -37.189564) + (xy 201.908244 -36.839883) (xy 201.747303 -36.451337) (xy 201.744453 -36.437008) (xy 199.510603 -36.437008) (xy 199.386121 -36.424748) + (xy 199.266423 -36.388438) (xy 199.156109 -36.329473) (xy 199.059418 -36.250121) (xy 198.980066 -36.15343) (xy 198.921101 -36.043116) + (xy 198.884791 -35.923418) (xy 198.872531 -35.798936) (xy 198.872531 -33.298936) (xy 198.884791 -33.174454) (xy 198.921101 -33.054756) + (xy 198.980066 -32.944442) (xy 199.042225 -32.868701) (xy 194.553068 -37.357857) (xy 194.553068 -39.446128) (xy 194.540808 -39.57061) + (xy 194.504498 -39.690308) (xy 194.445533 -39.800622) (xy 194.366181 -39.897313) (xy 194.26949 -39.976665) (xy 194.159176 -40.03563) + (xy 194.039478 -40.07194) (xy 193.914996 -40.0842) (xy 193.627391 -40.0842) (xy 193.635222 -40.103106) (xy 193.674996 -40.303065) + (xy 193.674996 -40.506943) (xy 193.635222 -40.706902) (xy 193.557201 -40.89526) (xy 193.443933 -41.064778) (xy 193.399996 -41.108715) + (xy 193.399996 -48.224504) (xy 193.403672 -48.261829) (xy 193.399996 -48.299154) (xy 193.399996 -48.299162) (xy 193.388999 -48.410815) + (xy 193.345542 -48.554076) (xy 193.27497 -48.686105) (xy 193.179997 -48.80183) (xy 193.150999 -48.825628) (xy 191.656471 -50.320156) + (xy 191.732218 -50.257992) (xy 191.842532 -50.199027) (xy 191.96223 -50.162717) (xy 192.086712 -50.150457) (xy 193.127749 -50.150457) + (xy 197.411642 -45.866563) (xy 197.43544 -45.837565) (xy 197.464438 -45.813767) (xy 197.551164 -45.742592) (xy 197.683194 -45.67202) + (xy 197.826455 -45.628563) (xy 197.919822 -45.619367) (xy 198.089387 -45.365594) (xy 198.310507 -45.144474) (xy 198.570516 -44.970742) + (xy 198.859422 -44.851073) (xy 199.166124 -44.790066) (xy 199.478834 -44.790066) (xy 199.785536 -44.851073) (xy 200.074442 -44.970742) + (xy 200.334451 -45.144474) (xy 200.555571 -45.365594) (xy 200.729303 -45.625603) (xy 200.74702 -45.668375) (xy 200.759036 -45.67202) + (xy 200.891065 -45.742592) (xy 201.00679 -45.837565) (xy 201.029294 -45.864986) (xy 201.136548 -45.855366) (xy 201.260918 -45.868712) + (xy 201.380294 -45.906066) (xy 202.208749 -46.257724) (xy 202.318545 -46.317648) (xy 202.41454 -46.397841) (xy 202.493046 -46.495221) + (xy 202.551045 -46.606046) (xy 202.586309 -46.726056) (xy 202.597483 -46.85064) (xy 202.584137 -46.97501) (xy 202.546783 -47.094386) + (xy 202.077906 -48.198992) (xy 202.017982 -48.308788) (xy 201.937789 -48.404783) (xy 201.840409 -48.483289) (xy 201.729584 -48.541288) + (xy 201.609574 -48.576552) (xy 201.48499 -48.587726) (xy 201.36062 -48.57438) (xy 201.241244 -48.537026) (xy 200.412789 -48.185368) + (xy 200.302993 -48.125444) (xy 200.206998 -48.045251) (xy 200.128492 -47.947871) (xy 200.070493 -47.837046) (xy 200.057128 -47.791562) + (xy 199.785536 -47.904059) (xy 199.478834 -47.965066) (xy 199.166124 -47.965066) (xy 198.859422 -47.904059) (xy 198.570516 -47.78439) + (xy 198.310507 -47.610658) (xy 198.089387 -47.389538) (xy 198.068913 -47.358896) (xy 196.415956 -49.011852) (xy 196.633202 -49.055065) + (xy 196.903619 -49.167075) (xy 197.146987 -49.329689) (xy 197.353955 -49.536657) (xy 197.516569 -49.780025) (xy 197.628579 -50.050442) + (xy 197.685681 -50.337515) (xy 197.685681 -50.630211) (xy 197.628579 -50.917284) (xy 197.516569 -51.187701) (xy 197.363831 -51.416289) + (xy 197.387667 -51.426162) (xy 197.737348 -51.659811) (xy 198.034728 -51.957191) (xy 198.247046 -52.274948) (xy 198.247046 -52.209853) + (xy 198.348073 -51.701955) (xy 198.546245 -51.223526) (xy 198.833946 -50.792951) (xy 199.20012 -50.426777) (xy 199.630695 -50.139076) + (xy 200.109124 -49.940904) (xy 200.617022 -49.839877) (xy 201.13487 -49.839877) (xy 201.642768 -49.940904) (xy 202.121197 -50.139076) + (xy 202.551772 -50.426777) (xy 202.917946 -50.792951) (xy 203.205647 -51.223526) (xy 203.403819 -51.701955) (xy 203.504846 -52.209853) + (xy 203.504846 -52.727701) (xy 203.403819 -53.235599) (xy 203.205647 -53.714028) (xy 202.917946 -54.144603) (xy 202.551772 -54.510777) + (xy 202.121197 -54.798478) (xy 201.642768 -54.99665) (xy 201.13487 -55.097677) (xy 200.617022 -55.097677) (xy 200.109124 -54.99665) + (xy 199.630695 -54.798478) (xy 199.20012 -54.510777) (xy 198.833946 -54.144603) (xy 198.546245 -53.714028) (xy 198.497743 -53.596934) + (xy 198.429318 -53.94093) (xy 198.268377 -54.329476) (xy 198.034728 -54.679157) (xy 197.737348 -54.976537) (xy 197.387667 -55.210186) + (xy 196.999121 -55.371127) (xy 196.586644 -55.453174) (xy 196.166086 -55.453174) (xy 195.753609 -55.371127) (xy 195.365063 -55.210186) + (xy 195.015382 -54.976537) (xy 194.718002 -54.679157) (xy 194.484353 -54.329476) (xy 194.323412 -53.94093) (xy 194.320562 -53.926601) + (xy 192.086712 -53.926601) (xy 191.96223 -53.914341) (xy 191.842532 -53.878031) (xy 191.732218 -53.819066) (xy 191.635527 -53.739714) + (xy 191.556175 -53.643023) (xy 191.49721 -53.532709) (xy 191.4609 -53.413011) (xy 191.44864 -53.288529) (xy 191.44864 -50.788529) + (xy 191.4609 -50.664047) (xy 191.49721 -50.544349) (xy 191.556175 -50.434035) (xy 191.618339 -50.358288) (xy 187.129176 -54.84745) + (xy 187.129176 -56.935721) (xy 187.116916 -57.060203) (xy 187.080606 -57.179901) (xy 187.021641 -57.290215) (xy 186.942289 -57.386906) + (xy 186.845598 -57.466258) (xy 186.735284 -57.525223) (xy 186.615586 -57.561533) (xy 186.491104 -57.573793) (xy 183.941104 -57.573793) + (xy 183.816622 -57.561533) (xy 183.696924 -57.525223) (xy 183.58661 -57.466258) (xy 183.489919 -57.386906) (xy 183.410567 -57.290215) + (xy 183.351602 -57.179901) (xy 183.315292 -57.060203) (xy 183.303032 -56.935721) (xy 183.303032 -56.21061) (xy 183.187899 -56.287539) + (xy 182.799353 -56.44848) (xy 182.386876 -56.530527) (xy 181.966318 -56.530527) (xy 181.553841 -56.44848) (xy 181.165295 -56.287539) + (xy 180.815614 -56.05389) (xy 180.518234 -55.75651) (xy 180.284585 -55.406829) (xy 180.123644 -55.018283) (xy 180.041597 -54.605806) + (xy 167.449975 -54.605806) (xy 167.40235 -54.64489) (xy 167.292036 -54.703855) (xy 167.172338 -54.740165) (xy 167.047856 -54.752425) + (xy 164.497856 -54.752425) (xy 164.373374 -54.740165) (xy 164.253676 -54.703855) (xy 164.143362 -54.64489) (xy 164.046671 -54.565538) + (xy 163.967319 -54.468847) (xy 163.908354 -54.358533) (xy 163.872044 -54.238835) (xy 163.859784 -54.114353) (xy 163.859784 -53.389242) + (xy 163.744651 -53.466171) (xy 163.356105 -53.627112) (xy 162.943628 -53.709159) (xy 162.52307 -53.709159) (xy 162.110593 -53.627112) + (xy 161.722047 -53.466171) (xy 161.372366 -53.232522) (xy 161.074986 -52.935142) (xy 160.841337 -52.585461) (xy 160.680396 -52.196915) + (xy 160.598349 -51.784438) (xy 152.45406 -51.784438) (xy 167.879 -58.331935) (xy 167.971338 -58.347678) (xy 199.094114 -58.347678) + (xy 199.094114 -57.92712) (xy 199.176161 -57.514643) (xy 199.337102 -57.126097) (xy 199.570751 -56.776416) (xy 199.868131 -56.479036) + (xy 200.217812 -56.245387) (xy 200.606358 -56.084446) (xy 201.018835 -56.002399) (xy 201.439393 -56.002399) (xy 201.85187 -56.084446) + (xy 202.240416 -56.245387) (xy 202.590097 -56.479036) (xy 202.887477 -56.776416) (xy 203.121126 -57.126097) (xy 203.282067 -57.514643) + (xy 203.287016 -57.539521) (xy 203.508622 -57.539521) (xy 203.508621 -53.556659) (xy 203.504945 -53.519336) (xy 203.508621 -53.482013) + (xy 203.508621 -53.482004) (xy 203.519618 -53.370351) (xy 203.520298 -53.36811) (xy 203.563075 -53.22709) (xy 203.633647 -53.09506) + (xy 203.644568 -53.081753) (xy 203.72862 -52.979335) (xy 203.757624 -52.955532) (xy 205.889221 -50.823935) (xy 204.921721 -50.413255) + (xy 204.811926 -50.353331) (xy 204.715931 -50.273138) (xy 204.637425 -50.175758) (xy 204.579426 -50.064933) (xy 204.544162 -49.944923) + (xy 204.537959 -49.875765) (xy 204.522656 -49.877138) (xy 204.398286 -49.863792) (xy 204.27891 -49.826438) (xy 203.450455 -49.47478) + (xy 203.340659 -49.414856) (xy 203.244664 -49.334663) (xy 203.166158 -49.237283) (xy 203.108159 -49.126458) (xy 203.072895 -49.006448) + (xy 203.061721 -48.881864) (xy 203.075067 -48.757494) (xy 203.112421 -48.638118) (xy 203.581298 -47.533512) (xy 203.641222 -47.423716) + (xy 203.721415 -47.327721) (xy 203.818795 -47.249215) (xy 203.92962 -47.191216) (xy 204.04963 -47.155952) (xy 204.174214 -47.144778) + (xy 204.298584 -47.158124) (xy 204.41796 -47.195478) (xy 205.246415 -47.547136) (xy 205.356211 -47.60706) (xy 205.452206 -47.687253) + (xy 205.46185 -47.699216) (xy 205.515905 -47.655638) (xy 205.62673 -47.597639) (xy 205.74674 -47.562375) (xy 205.871324 -47.551201) + (xy 205.995694 -47.564547) (xy 206.115071 -47.601901) (xy 207.751729 -48.296621) (xy 207.861524 -48.356545) (xy 207.919374 -48.404873) + (xy 207.926705 -48.397542) (xy 208.096223 -48.284274) (xy 208.284581 -48.206253) (xy 208.48454 -48.166479) (xy 208.546678 -48.166479) + (xy 210.932513 -45.780642) (xy 210.932512 -43.826072) (xy 210.417512 -43.826072) (xy 210.29303 -43.813812) (xy 210.173332 -43.777502) + (xy 210.063018 -43.718537) (xy 209.966327 -43.639185) (xy 209.886975 -43.542494) (xy 209.82801 -43.43218) (xy 209.7917 -43.312482) + (xy 209.77944 -43.188) (xy 209.77944 -42.462889) (xy 209.664307 -42.539818) (xy 209.275761 -42.700759) (xy 208.863284 -42.782806) + (xy 208.442726 -42.782806) (xy 208.030249 -42.700759) (xy 207.641703 -42.539818) (xy 207.292022 -42.306169) (xy 206.994642 -42.008789) + (xy 206.760993 -41.659108) (xy 206.600052 -41.270562) (xy 206.518005 -40.858085) (xy 206.518005 -40.437527) (xy 206.600052 -40.02505) + (xy 206.760993 -39.636504) (xy 206.994642 -39.286823) (xy 207.292022 -38.989443) (xy 207.641703 -38.755794) (xy 208.030249 -38.594853) + (xy 208.442726 -38.512806) (xy 208.863284 -38.512806) (xy 209.275761 -38.594853) (xy 209.664307 -38.755794) (xy 210.013988 -38.989443) + (xy 210.311368 -39.286823) (xy 210.545017 -39.636504) (xy 210.705958 -40.02505) (xy 210.710907 -40.049928) (xy 210.932513 -40.049928) + (xy 210.932512 -36.067067) (xy 210.928836 -36.029744) (xy 210.932512 -35.992422) (xy 210.932512 -35.992412) (xy 210.943509 -35.880759) + (xy 210.977652 -35.768203) (xy 210.986966 -35.737498) (xy 211.057538 -35.605468) (xy 211.06846 -35.59216) (xy 211.152511 -35.489743) + (xy 211.181515 -35.46594) (xy 213.313112 -33.334342) (xy 212.345612 -32.923663) (xy 212.235817 -32.863739) (xy 212.139822 -32.783546) + (xy 212.061316 -32.686166) (xy 212.003317 -32.575341) (xy 211.968053 -32.455331) (xy 211.96185 -32.386173) (xy 211.946547 -32.387546) + (xy 211.822177 -32.3742) (xy 211.702801 -32.336846) (xy 210.874346 -31.985188) (xy 210.76455 -31.925264) (xy 210.668555 -31.845071) + (xy 210.590049 -31.747691) (xy 210.53205 -31.636866) (xy 210.496786 -31.516856) (xy 210.485612 -31.392272) (xy 210.498958 -31.267902) + (xy 210.536312 -31.148526) (xy 211.005189 -30.04392) (xy 211.065113 -29.934124) (xy 211.145306 -29.838129) (xy 211.242686 -29.759623) + (xy 211.353511 -29.701624) (xy 211.473521 -29.66636) (xy 211.598105 -29.655186) (xy 211.722475 -29.668532) (xy 211.841851 -29.705886) + (xy 212.670306 -30.057544) (xy 212.780102 -30.117468) (xy 212.876097 -30.197661) (xy 212.885741 -30.209624) (xy 212.939796 -30.166046) + (xy 213.050621 -30.108047) (xy 213.170631 -30.072783) (xy 213.295215 -30.061609) (xy 213.419585 -30.074955) (xy 213.538962 -30.112309) + (xy 215.17562 -30.807029) (xy 215.285415 -30.866953) (xy 215.38141 -30.947146) (xy 215.459916 -31.044526) (xy 215.509048 -31.138407) + (xy 218.356405 -28.291049) (xy 218.356404 -26.33648) (xy 217.841404 -26.33648) (xy 217.716922 -26.32422) (xy 217.597224 -26.28791) + (xy 217.48691 -26.228945) (xy 217.390219 -26.149593) (xy 217.310867 -26.052902) (xy 217.251902 -25.942588) (xy 217.215592 -25.82289) + (xy 217.203332 -25.698408) (xy 217.203332 -24.973297) (xy 217.088199 -25.050226) (xy 216.699653 -25.211167) (xy 216.287176 -25.293214) + (xy 215.866618 -25.293214) (xy 215.454141 -25.211167) (xy 215.065595 -25.050226) (xy 214.715914 -24.816577) (xy 214.418534 -24.519197) + (xy 214.184885 -24.169516) (xy 214.023944 -23.78097) (xy 213.941897 -23.368493) (xy 213.941897 -22.947935) (xy 214.023944 -22.535458) + (xy 214.184885 -22.146912) (xy 214.418534 -21.797231) (xy 214.715914 -21.499851) (xy 215.065595 -21.266202) (xy 215.454141 -21.105261) + (xy 215.866618 -21.023214) (xy 216.287176 -21.023214) (xy 216.699653 -21.105261) (xy 217.088199 -21.266202) (xy 217.43788 -21.499851) + (xy 217.73526 -21.797231) (xy 217.968909 -22.146912) (xy 218.12985 -22.535458) (xy 218.134799 -22.560336) (xy 218.356405 -22.560336) + (xy 218.356404 -18.577474) (xy 218.352728 -18.540151) (xy 218.356404 -18.502829) (xy 218.356404 -18.502819) (xy 218.367401 -18.391166) + (xy 218.400184 -18.283093) (xy 218.410858 -18.247905) (xy 218.48143 -18.115875) (xy 218.512927 -18.077496) (xy 218.576403 -18.00015) + (xy 218.605407 -17.976347) (xy 220.737003 -15.84475) (xy 219.769503 -15.434071) (xy 219.659708 -15.374147) (xy 219.563713 -15.293954) + (xy 219.485207 -15.196574) (xy 219.427208 -15.085749) (xy 219.391944 -14.965739) (xy 219.385741 -14.896581) (xy 219.370438 -14.897954) + (xy 219.246068 -14.884608) (xy 219.126692 -14.847254) (xy 218.298237 -14.495596) (xy 218.188441 -14.435672) (xy 218.092446 -14.355479) + (xy 218.01394 -14.258099) (xy 217.955941 -14.147274) (xy 217.920677 -14.027264) (xy 217.909503 -13.90268) (xy 217.922849 -13.77831) + (xy 217.960203 -13.658934) (xy 218.42908 -12.554328) (xy 218.489004 -12.444532) (xy 218.569197 -12.348537) (xy 218.666577 -12.270031) + (xy 218.777402 -12.212032) (xy 218.897412 -12.176768) (xy 219.021996 -12.165594) (xy 219.146366 -12.17894) (xy 219.265742 -12.216294) + (xy 220.094197 -12.567952) (xy 220.203993 -12.627876) (xy 220.299988 -12.708069) (xy 220.309632 -12.720032) (xy 220.363687 -12.676454) + (xy 220.474512 -12.618455) (xy 220.594522 -12.583191) (xy 220.719106 -12.572017) (xy 220.843476 -12.585363) (xy 220.962853 -12.622717) + (xy 222.599511 -13.317437) (xy 222.709306 -13.377361) (xy 222.805301 -13.457554) (xy 222.883807 -13.554934) (xy 222.932939 -13.648815) + (xy 225.780296 -10.801457) (xy 225.780295 -8.846888) (xy 225.265295 -8.846888) (xy 225.140813 -8.834628) (xy 225.021115 -8.798318) + (xy 224.910801 -8.739353) (xy 224.81411 -8.660001) (xy 224.734758 -8.56331) (xy 224.675793 -8.452996) (xy 224.639483 -8.333298) + (xy 224.627223 -8.208816) (xy 224.627223 -7.483705) (xy 224.51209 -7.560634) (xy 224.123544 -7.721575) (xy 223.711067 -7.803622) + (xy 223.290509 -7.803622) (xy 222.878032 -7.721575) (xy 222.489486 -7.560634) (xy 222.139805 -7.326985) (xy 221.842425 -7.029605) + (xy 221.608776 -6.679924) (xy 221.447835 -6.291378) (xy 221.365788 -5.878901) (xy 221.365788 -5.458343) (xy 221.447835 -5.045866) + (xy 221.608776 -4.65732) (xy 221.842425 -4.307639) (xy 222.139805 -4.010259) (xy 222.489486 -3.77661) (xy 222.878032 -3.615669) + (xy 223.290509 -3.533622) (xy 223.711067 -3.533622) (xy 224.123544 -3.615669) (xy 224.51209 -3.77661) (xy 224.861771 -4.010259) + (xy 225.159151 -4.307639) (xy 225.3928 -4.65732) (xy 225.553741 -5.045866) (xy 225.55869 -5.070744) (xy 227.815295 -5.070744) + (xy 227.939777 -5.083004) (xy 228.059475 -5.119314) (xy 228.169789 -5.178279) (xy 228.26648 -5.257631) (xy 228.345832 -5.354322) + (xy 228.404797 -5.464636) (xy 228.441107 -5.584334) (xy 228.453367 -5.708816) (xy 228.453367 -8.208816) (xy 228.441107 -8.333298) + (xy 228.404797 -8.452996) (xy 228.345832 -8.56331) (xy 228.26648 -8.660001) (xy 228.169789 -8.739353) (xy 228.059475 -8.798318) + (xy 227.939777 -8.834628) (xy 227.815295 -8.846888) (xy 227.300295 -8.846888) (xy 227.300295 -11.078938) (xy 227.303971 -11.116261) + (xy 227.300295 -11.153584) (xy 227.300295 -11.153593) (xy 227.289298 -11.265246) (xy 227.245841 -11.408507) (xy 227.175269 -11.540536) + (xy 227.080296 -11.656261) (xy 227.051298 -11.680059) (xy 220.710148 -18.021209) (xy 220.833315 -18.045708) (xy 221.103732 -18.157718) + (xy 221.3471 -18.320332) (xy 221.554068 -18.5273) (xy 221.716682 -18.770668) (xy 221.828692 -19.041085) (xy 221.885794 -19.328158) + (xy 221.885794 -19.620854) (xy 221.828692 -19.907927) (xy 221.716682 -20.178344) (xy 221.554068 -20.421712) (xy 221.3471 -20.62868) + (xy 221.103732 -20.791294) (xy 220.833315 -20.903304) (xy 220.546242 -20.960406) (xy 220.253546 -20.960406) (xy 219.966473 -20.903304) + (xy 219.876404 -20.865996) (xy 219.876404 -22.560336) (xy 220.391404 -22.560336) (xy 220.515886 -22.572596) (xy 220.635584 -22.608906) + (xy 220.745898 -22.667871) (xy 220.842589 -22.747223) (xy 220.921941 -22.843914) (xy 220.980906 -22.954228) (xy 221.017216 -23.073926) + (xy 221.029476 -23.198408) (xy 221.029476 -25.698408) (xy 221.017216 -25.82289) (xy 220.980906 -25.942588) (xy 220.921941 -26.052902) + (xy 220.842589 -26.149593) (xy 220.745898 -26.228945) (xy 220.635584 -26.28791) (xy 220.515886 -26.32422) (xy 220.391404 -26.33648) + (xy 219.876404 -26.33648) (xy 219.876404 -28.568527) (xy 219.88008 -28.605852) (xy 219.876404 -28.643177) (xy 219.876404 -28.643185) + (xy 219.865407 -28.754838) (xy 219.82195 -28.898099) (xy 219.751378 -29.030128) (xy 219.656405 -29.145853) (xy 219.627407 -29.169651) + (xy 213.286256 -35.510801) (xy 213.409423 -35.5353) (xy 213.67984 -35.64731) (xy 213.923208 -35.809924) (xy 214.130176 -36.016892) + (xy 214.29279 -36.26026) (xy 214.4048 -36.530677) (xy 214.461902 -36.81775) (xy 214.461902 -37.110446) (xy 214.4048 -37.397519) + (xy 214.29279 -37.667936) (xy 214.130176 -37.911304) (xy 213.923208 -38.118272) (xy 213.67984 -38.280886) (xy 213.409423 -38.392896) + (xy 213.12235 -38.449998) (xy 212.829654 -38.449998) (xy 212.542581 -38.392896) (xy 212.452512 -38.355588) (xy 212.452512 -40.049928) + (xy 212.967512 -40.049928) (xy 213.091994 -40.062188) (xy 213.211692 -40.098498) (xy 213.322006 -40.157463) (xy 213.418697 -40.236815) + (xy 213.498049 -40.333506) (xy 213.557014 -40.44382) (xy 213.593324 -40.563518) (xy 213.605584 -40.688) (xy 213.605584 -43.188) + (xy 213.593324 -43.312482) (xy 213.557014 -43.43218) (xy 213.498049 -43.542494) (xy 213.418697 -43.639185) (xy 213.322006 -43.718537) + (xy 213.211692 -43.777502) (xy 213.091994 -43.813812) (xy 212.967512 -43.826072) (xy 212.452512 -43.826072) (xy 212.452512 -46.05812) + (xy 212.456188 -46.095445) (xy 212.452512 -46.13277) (xy 212.452512 -46.132778) (xy 212.441515 -46.244431) (xy 212.398058 -46.387692) + (xy 212.327486 -46.519721) (xy 212.232513 -46.635446) (xy 212.203515 -46.659244) (xy 209.621479 -49.24128) (xy 209.621479 -49.303418) + (xy 209.581705 -49.503377) (xy 209.503684 -49.691735) (xy 209.390416 -49.861253) (xy 209.246253 -50.005416) (xy 209.076735 -50.118684) + (xy 208.888377 -50.196705) (xy 208.688418 -50.236479) (xy 208.626281 -50.236479) (xy 205.862365 -53.000394) (xy 205.985532 -53.024893) + (xy 206.255949 -53.136903) (xy 206.499317 -53.299517) (xy 206.706285 -53.506485) (xy 206.868899 -53.749853) (xy 206.980909 -54.02027) + (xy 207.038011 -54.307343) (xy 207.038011 -54.600039) (xy 206.980909 -54.887112) (xy 206.868899 -55.157529) (xy 206.706285 -55.400897) + (xy 206.499317 -55.607865) (xy 206.255949 -55.770479) (xy 205.985532 -55.882489) (xy 205.698459 -55.939591) (xy 205.405763 -55.939591) + (xy 205.11869 -55.882489) (xy 205.028621 -55.845181) (xy 205.028621 -57.539521) (xy 205.543621 -57.539521) (xy 205.668103 -57.551781) + (xy 205.787801 -57.588091) (xy 205.898115 -57.647056) (xy 205.994806 -57.726408) (xy 206.074158 -57.823099) (xy 206.133123 -57.933413) + (xy 206.169433 -58.053111) (xy 206.181693 -58.177593) (xy 206.181693 -60.677593) (xy 206.169433 -60.802075) (xy 206.133123 -60.921773) + (xy 206.074158 -61.032087) (xy 205.994806 -61.128778) (xy 205.898115 -61.20813) (xy 205.787801 -61.267095) (xy 205.668103 -61.303405) + (xy 205.543621 -61.315665) (xy 202.993621 -61.315665) (xy 202.869139 -61.303405) (xy 202.749441 -61.267095) (xy 202.639127 -61.20813) + (xy 202.542436 -61.128778) (xy 202.463084 -61.032087) (xy 202.404119 -60.921773) (xy 202.367809 -60.802075) (xy 202.355549 -60.677593) + (xy 202.355549 -59.952482) (xy 202.240416 -60.029411) (xy 201.85187 -60.190352) (xy 201.439393 -60.272399) (xy 201.018835 -60.272399) + (xy 200.606358 -60.190352) (xy 200.217812 -60.029411) (xy 199.868131 -59.795762) (xy 199.570751 -59.498382) (xy 199.337102 -59.148701) + (xy 199.176161 -58.760155) (xy 199.094114 -58.347678) (xy 167.971338 -58.347678) (xy 205.739515 -64.786869) + ) + ) + ) +) From efc7329646ad90ccbeac869d621cbc326b9355e4 Mon Sep 17 00:00:00 2001 From: foosinn Date: Wed, 1 Feb 2023 08:51:37 +0100 Subject: [PATCH 118/120] add choc version --- 23creus.yaml | 182 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 23creus.yaml diff --git a/23creus.yaml b/23creus.yaml new file mode 100644 index 0000000..49479a5 --- /dev/null +++ b/23creus.yaml @@ -0,0 +1,182 @@ +units: + kx: cx + ky: cy + px: 2 + py: 2 + step: .5 + +points: + key: + footprints: + mx_hotswap: + type: choc + params: + hotswap: true + reverse: false + keycaps: true + nets: + from: =colrow + to: =column_net + diode: + type: diode + nets: + from: =colrow + to: =row_net + anchor: + shift: [0, -5] + rotate: 180 + + zones: + matrix: + columns: + pinky: + key: + column_net: P21 + mirror: { column_net: P2 } + ring: + spread: kx + step + stagger: 4 + key: + column_net: P20 + mirror: { column_net: P3 } + middle: + spread: kx + step + stagger: 5 + key: + column_net: P19 + mirror: { column_net: P4 } + index: + spread: kx + step + stagger: -5 + key: + column_net: P18 + mirror: { column_net: P5 } + inner: + spread: kx + step + stagger: -6 + key: + column_net: P15 + mirror: { column_net: P6 } + thumb: + spread: kx + step + stagger: 10 + row_overrides: + bottom: + key: + column_net: P14 + mirror: { column_net: P7} + rows: + bottom: + row_net: P16 + home: + spread: ky + step + row_net: P10 + top: + spread: ky + step + row_net: P9 + num: + spread: ky + step + row_net: P8 + + rotate: -23 + mirror: + ref: matrix_thumb_bottom + distance: 42 + +outlines: + exports: + # outer border + outer: + - type: polygon + points: + - ref: matrix_inner_num + shift: [10, 10] + - ref: matrix_middle_num + shift: [10, 10] + - ref: matrix_middle_num + shift: [-10, 10] + - ref: matrix_pinky_num + shift: [-10, 10] + - ref: matrix_pinky_bottom + shift: [-10, -10] + - ref: matrix_pinky_bottom + shift: [10, -10] + - ref: matrix_inner_bottom + shift: [-10, -10] + - ref: matrix_inner_bottom + shift: [10, -10] + - ref: mirror_matrix_inner_bottom + shift: [10, -10] + - ref: mirror_matrix_inner_bottom + shift: [-10, -10] + - ref: mirror_matrix_pinky_bottom + shift: [10, -10] + - ref: mirror_matrix_pinky_bottom + shift: [-10, -10] + - ref: mirror_matrix_pinky_num + shift: [-10, 10] + - ref: mirror_matrix_middle_num + shift: [-10, 10] + - ref: mirror_matrix_middle_num + shift: [10, 10] + - ref: mirror_matrix_inner_num + shift: [10, 10] + #- type: keys + # side: both + # size: 20 + # corner: 1 + #- type: polygon + # points: + # - ref: matrix_inner_num + # shift: [0, -5] + # - ref: matrix_thumb_bottom + # shift: [-10, -10] + # - ref: mirror_matrix_thumb_bottom + # shift: [-10, -10] + # - ref: mirror_matrix_inner_num + # shift: [0, -5] + chip: + # cutout for the chip itself + - type: rectangle + size: [18, 33] + anchor: + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [-9, -24.5] + # cutout for the cable (looks) + - type: rectangle + size: [8, 50] + anchor: + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [-4, -24.5] + # 14mm holes for cherry switches + keyholes: + - type: keys + side: both + size: 13.5 + bound: false + # switchplate + switchplate: + - outer + - -keyholes + - -chip + +pcbs: + main: + outlines: + outer: + outline: outer + footprints: + reset: + type: button + nets: + from: RST + to: GND + anchor: + ref: [matrix_inner_bottom, mirror_matrix_inner_bottom] + rotate: 90 + mcu: + type: promicro + anchor: + rotate: 270 + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [0, -4] From 5060864b08979d1d623a485796b02ec027ebafe4 Mon Sep 17 00:00:00 2001 From: foosinn Date: Mon, 6 Feb 2023 08:30:25 +0100 Subject: [PATCH 119/120] fix 4.0 --- .gitignore | 3 + 23creus.yaml | 234 +- 23treus.yaml | 10 +- Makefile | 2 +- kicad/23creus/23creus.kicad_pcb | 7254 +++++++++++++++++++++++++++++++ kicad/23creus/23creus.kicad_prl | 75 + kicad/23creus/23creus.kicad_pro | 414 ++ kicad/23creus/23creus.kicad_sch | 5 + src/kle.js | 2 +- 9 files changed, 7878 insertions(+), 121 deletions(-) create mode 100644 kicad/23creus/23creus.kicad_pcb create mode 100644 kicad/23creus/23creus.kicad_prl create mode 100644 kicad/23creus/23creus.kicad_pro create mode 100644 kicad/23creus/23creus.kicad_sch diff --git a/.gitignore b/.gitignore index d8034db..e6f3c82 100644 --- a/.gitignore +++ b/.gitignore @@ -124,3 +124,6 @@ kicad/45treus/main.kicad_pcb kicad/45treus/gerber_v*/*.gbr kicad/45treus/gerber_v*/*.gbrjob kicad/45treus/gerber_v*/*.drl + +kicad/23creus/23creus-backups +kicad/23creus/fp-info-cache diff --git a/23creus.yaml b/23creus.yaml index 49479a5..d063d21 100644 --- a/23creus.yaml +++ b/23creus.yaml @@ -6,26 +6,6 @@ units: step: .5 points: - key: - footprints: - mx_hotswap: - type: choc - params: - hotswap: true - reverse: false - keycaps: true - nets: - from: =colrow - to: =column_net - diode: - type: diode - nets: - from: =colrow - to: =row_net - anchor: - shift: [0, -5] - rotate: 180 - zones: matrix: columns: @@ -34,37 +14,39 @@ points: column_net: P21 mirror: { column_net: P2 } ring: - spread: kx + step - stagger: 4 key: + stagger: 4 + spread: kx + step column_net: P20 mirror: { column_net: P3 } middle: - spread: kx + step - stagger: 5 key: + stagger: 5 + spread: kx + step column_net: P19 mirror: { column_net: P4 } index: - spread: kx + step - stagger: -5 key: + stagger: -5 + spread: kx + step column_net: P18 mirror: { column_net: P5 } inner: - spread: kx + step - stagger: -6 key: + stagger: -6 + spread: kx + step column_net: P15 mirror: { column_net: P6 } thumb: - spread: kx + step - stagger: 10 - row_overrides: + rows: bottom: + skip: false key: + skip: true + spread: kx + step + stagger: 10 column_net: P14 - mirror: { column_net: P7} + mirror: { column_net: P7 } rows: bottom: row_net: P16 @@ -84,99 +66,123 @@ points: distance: 42 outlines: - exports: - # outer border - outer: - - type: polygon - points: - - ref: matrix_inner_num - shift: [10, 10] - - ref: matrix_middle_num - shift: [10, 10] - - ref: matrix_middle_num - shift: [-10, 10] - - ref: matrix_pinky_num - shift: [-10, 10] - - ref: matrix_pinky_bottom - shift: [-10, -10] - - ref: matrix_pinky_bottom - shift: [10, -10] - - ref: matrix_inner_bottom - shift: [-10, -10] - - ref: matrix_inner_bottom - shift: [10, -10] - - ref: mirror_matrix_inner_bottom - shift: [10, -10] - - ref: mirror_matrix_inner_bottom - shift: [-10, -10] - - ref: mirror_matrix_pinky_bottom - shift: [10, -10] - - ref: mirror_matrix_pinky_bottom - shift: [-10, -10] - - ref: mirror_matrix_pinky_num - shift: [-10, 10] - - ref: mirror_matrix_middle_num - shift: [-10, 10] - - ref: mirror_matrix_middle_num - shift: [10, 10] - - ref: mirror_matrix_inner_num - shift: [10, 10] - #- type: keys - # side: both - # size: 20 - # corner: 1 - #- type: polygon - # points: - # - ref: matrix_inner_num - # shift: [0, -5] - # - ref: matrix_thumb_bottom - # shift: [-10, -10] - # - ref: mirror_matrix_thumb_bottom - # shift: [-10, -10] - # - ref: mirror_matrix_inner_num - # shift: [0, -5] - chip: - # cutout for the chip itself - - type: rectangle - size: [18, 33] - anchor: - ref: [matrix_inner_top, mirror_matrix_inner_top] - shift: [-9, -24.5] - # cutout for the cable (looks) - - type: rectangle - size: [8, 50] - anchor: - ref: [matrix_inner_top, mirror_matrix_inner_top] - shift: [-4, -24.5] - # 14mm holes for cherry switches - keyholes: - - type: keys - side: both - size: 13.5 - bound: false - # switchplate - switchplate: - - outer - - -keyholes - - -chip + # outer border + outer: + - what: polygon + points: + - ref: matrix_inner_num + shift: [10, 10] + - ref: matrix_middle_num + shift: [10, 10] + - ref: matrix_middle_num + shift: [-10, 10] + - ref: matrix_pinky_num + shift: [-10, 10] + - ref: matrix_pinky_bottom + shift: [-10, -10] + - ref: matrix_pinky_bottom + shift: [10, -10] + - ref: matrix_inner_bottom + shift: [-10, -10] + - ref: matrix_inner_bottom + shift: [10, -10] + - ref: mirror_matrix_inner_bottom + shift: [10, -10] + - ref: mirror_matrix_inner_bottom + shift: [-10, -10] + - ref: mirror_matrix_pinky_bottom + shift: [10, -10] + - ref: mirror_matrix_pinky_bottom + shift: [-10, -10] + - ref: mirror_matrix_pinky_num + shift: [-10, 10] + - ref: mirror_matrix_middle_num + shift: [-10, 10] + - ref: mirror_matrix_middle_num + shift: [10, 10] + - ref: mirror_matrix_inner_num + shift: [10, 10] + + # chip + chip: + - what: rectangle + size: [18, 50] + where: + ref: + aggregate.parts: + - matrix_inner_bottom + - mirror_matrix_inner_bottom + shift: [0, 0] + + # 14mm holes for cherry switches + keyholes: + - what: rectangle + where: true + asym: source + size: 13.5 + + # keycaps + keycaps: + - what: rectangle + where: true + asym: source + size: [17.95, 17.5] + + # switchplate + switchplate: + - outer + - -keyholes + - -chip pcbs: main: outlines: outer: outline: outer + footprints: + keys: + what: choc + where: true + params: + from: "{{colrow}}" + to: "{{column_net}}" + keycaps: true + hotswap: true + #led: + # what: rgb + # where: true + # adjust: + # shift: [0, -5] + # params: + # din: "{{label}}" + # dout: P02 + diode: + what: diode + where: true + params: + from: "{{colrow}}" + to: "{{row_net}}" + adjust: + shift: [-8, -0] + rotate: 90 reset: - type: button - nets: + what: button + params: from: RST to: GND - anchor: - ref: [matrix_inner_bottom, mirror_matrix_inner_bottom] + where: + ref: + aggregate.parts: + - matrix_inner_bottom + - mirror_matrix_inner_bottom rotate: 90 mcu: - type: promicro - anchor: + what: promicro + where: rotate: 270 - ref: [matrix_inner_top, mirror_matrix_inner_top] + ref: + aggregate.parts: + - matrix_inner_bottom + - mirror_matrix_inner_bottom shift: [0, -4] diff --git a/23treus.yaml b/23treus.yaml index a0464ae..56ffaaf 100644 --- a/23treus.yaml +++ b/23treus.yaml @@ -27,30 +27,30 @@ points: column_net: P21 mirror: { column_net: P2 } ring: - stagger: 4 key: + stagger: 4 column_net: P20 mirror: { column_net: P3 } middle: - stagger: 5 key: + stagger: 5 column_net: P19 mirror: { column_net: P4 } index: - stagger: -5 key: + stagger: -5 column_net: P18 mirror: { column_net: P5 } inner: - stagger: -6 key: + stagger: -6 column_net: P15 mirror: { column_net: P6 } thumb: - stagger: 10 row_overrides: bottom: key: + stagger: 10 column_net: P14 mirror: { column_net: P7} rows: diff --git a/Makefile b/Makefile index 5744e1c..e732de1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ all: node_modules - node src/cli.js 23treus.yaml -o output + node src/cli.js 23creus.yaml -o output cp output/pcbs/main.kicad_pcb kicad/45treus/ node_modules: diff --git a/kicad/23creus/23creus.kicad_pcb b/kicad/23creus/23creus.kicad_pcb new file mode 100644 index 0000000..8a698a3 --- /dev/null +++ b/kicad/23creus/23creus.kicad_pcb @@ -0,0 +1,7254 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title main) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "pinky_bottom") +(net 2 "P21") +(net 3 "pinky_home") +(net 4 "pinky_top") +(net 5 "pinky_num") +(net 6 "ring_bottom") +(net 7 "P20") +(net 8 "ring_home") +(net 9 "ring_top") +(net 10 "ring_num") +(net 11 "middle_bottom") +(net 12 "P19") +(net 13 "middle_home") +(net 14 "middle_top") +(net 15 "middle_num") +(net 16 "index_bottom") +(net 17 "P18") +(net 18 "index_home") +(net 19 "index_top") +(net 20 "index_num") +(net 21 "inner_bottom") +(net 22 "P15") +(net 23 "inner_home") +(net 24 "inner_top") +(net 25 "inner_num") +(net 26 "thumb_bottom") +(net 27 "P14") +(net 28 "mirror_pinky_bottom") +(net 29 "P2") +(net 30 "mirror_pinky_home") +(net 31 "mirror_pinky_top") +(net 32 "mirror_pinky_num") +(net 33 "mirror_ring_bottom") +(net 34 "P3") +(net 35 "mirror_ring_home") +(net 36 "mirror_ring_top") +(net 37 "mirror_ring_num") +(net 38 "mirror_middle_bottom") +(net 39 "P4") +(net 40 "mirror_middle_home") +(net 41 "mirror_middle_top") +(net 42 "mirror_middle_num") +(net 43 "mirror_index_bottom") +(net 44 "P5") +(net 45 "mirror_index_home") +(net 46 "mirror_index_top") +(net 47 "mirror_index_num") +(net 48 "mirror_inner_bottom") +(net 49 "P6") +(net 50 "mirror_inner_home") +(net 51 "mirror_inner_top") +(net 52 "mirror_inner_num") +(net 53 "mirror_thumb_bottom") +(net 54 "P7") +(net 55 "P16") +(net 56 "P10") +(net 57 "P9") +(net 58 "P8") +(net 59 "RST") +(net 60 "GND") +(net 61 "RAW") +(net 62 "VCC") +(net 63 "P1") +(net 64 "P0") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "pinky_bottom") +(add_net "P21") +(add_net "pinky_home") +(add_net "pinky_top") +(add_net "pinky_num") +(add_net "ring_bottom") +(add_net "P20") +(add_net "ring_home") +(add_net "ring_top") +(add_net "ring_num") +(add_net "middle_bottom") +(add_net "P19") +(add_net "middle_home") +(add_net "middle_top") +(add_net "middle_num") +(add_net "index_bottom") +(add_net "P18") +(add_net "index_home") +(add_net "index_top") +(add_net "index_num") +(add_net "inner_bottom") +(add_net "P15") +(add_net "inner_home") +(add_net "inner_top") +(add_net "inner_num") +(add_net "thumb_bottom") +(add_net "P14") +(add_net "mirror_pinky_bottom") +(add_net "P2") +(add_net "mirror_pinky_home") +(add_net "mirror_pinky_top") +(add_net "mirror_pinky_num") +(add_net "mirror_ring_bottom") +(add_net "P3") +(add_net "mirror_ring_home") +(add_net "mirror_ring_top") +(add_net "mirror_ring_num") +(add_net "mirror_middle_bottom") +(add_net "P4") +(add_net "mirror_middle_home") +(add_net "mirror_middle_top") +(add_net "mirror_middle_num") +(add_net "mirror_index_bottom") +(add_net "P5") +(add_net "mirror_index_home") +(add_net "mirror_index_top") +(add_net "mirror_index_num") +(add_net "mirror_inner_bottom") +(add_net "P6") +(add_net "mirror_inner_home") +(add_net "mirror_inner_top") +(add_net "mirror_inner_num") +(add_net "mirror_thumb_bottom") +(add_net "P7") +(add_net "P16") +(add_net "P10") +(add_net "P9") +(add_net "P8") +(add_net "RST") +(add_net "GND") +(add_net "RAW") +(add_net "VCC") +(add_net "P1") +(add_net "P0") + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 0 0 -23) + + + (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 7.4238914 -17.4895922 -23) + + + (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 14.8477829 -34.9791844 -23) + + + (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 22.2716743 -52.4687766 -23) + + + (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 18.5922643 3.5465065 -23) + + + (fp_text reference "S5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 26.0161557 -13.9430858 -23) + + + (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 33.4400472 -31.432678 -23) + + + (fp_text reference "S7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 40.8639386 -48.9222702 -23) + + + (fp_text reference "S8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 37.5752597 6.1725081 -23) + + + (fp_text reference "S9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 44.9991512 -11.3170841 -23) + + + (fp_text reference "S10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 52.4230426 -28.8066764 -23) + + + (fp_text reference "S11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 59.8469341 -46.2962686 -23) + + + (fp_text reference "S12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 52.6509439 18.0035582 -23) + + + (fp_text reference "S13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 60.0748353 0.513966 -23) + + + (fp_text reference "S14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 67.4987268 -16.9756262 -23) + + + (fp_text reference "S15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 74.9226182 -34.4652184 -23) + + + (fp_text reference "S16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 67.3358969 30.7551132 -23) + + + (fp_text reference "S17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 74.7597883 13.265521 -23) + + + (fp_text reference "S18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 82.1836798 -4.2240712 -23) + + + (fp_text reference "S19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 89.6075712 -21.7136634 -23) + + + (fp_text reference "S20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 88.272548 28.7785906 -23) + + + (fp_text reference "S21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 218.545096 0 23) + + + (fp_text reference "S22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 211.1212046 -17.4895922 23) + + + (fp_text reference "S23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 203.6973131 -34.9791844 23) + + + (fp_text reference "S24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 196.2734217 -52.4687766 23) + + + (fp_text reference "S25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 199.9528317 3.5465065 23) + + + (fp_text reference "S26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 192.5289403 -13.9430858 23) + + + (fp_text reference "S27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 185.1050488 -31.432678 23) + + + (fp_text reference "S28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 177.68115740000002 -48.9222702 23) + + + (fp_text reference "S29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 180.9698363 6.1725081 23) + + + (fp_text reference "S30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 173.5459448 -11.3170841 23) + + + (fp_text reference "S31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 166.1220534 -28.8066764 23) + + + (fp_text reference "S32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 158.6981619 -46.2962686 23) + + + (fp_text reference "S33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 165.89415209999999 18.0035582 23) + + + (fp_text reference "S34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 158.4702607 0.513966 23) + + + (fp_text reference "S35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 151.04636920000002 -16.9756262 23) + + + (fp_text reference "S36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 143.6224778 -34.4652184 23) + + + (fp_text reference "S37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 151.2091991 30.7551132 23) + + + (fp_text reference "S38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 143.7853077 13.265521 23) + + + (fp_text reference "S39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 136.3614162 -4.2240712 23) + + + (fp_text reference "S40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 128.9375248 -21.7136634 23) + + + (fp_text reference "S41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 130.272548 28.7785906 23) + + + (fp_text reference "S42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 218.545096 0 23) + + + (fp_text reference "S43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 211.1212046 -17.4895922 23) + + + (fp_text reference "S44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 203.6973131 -34.9791844 23) + + + (fp_text reference "S45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 196.2734217 -52.4687766 23) + + + (fp_text reference "S46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 199.9528317 3.5465065 23) + + + (fp_text reference "S47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 192.5289403 -13.9430858 23) + + + (fp_text reference "S48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 185.1050488 -31.432678 23) + + + (fp_text reference "S49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 177.68115740000002 -48.9222702 23) + + + (fp_text reference "S50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 180.9698363 6.1725081 23) + + + (fp_text reference "S51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 173.5459448 -11.3170841 23) + + + (fp_text reference "S52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 166.1220534 -28.8066764 23) + + + (fp_text reference "S53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 158.6981619 -46.2962686 23) + + + (fp_text reference "S54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 165.89415209999999 18.0035582 23) + + + (fp_text reference "S55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 158.4702607 0.513966 23) + + + (fp_text reference "S56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 151.04636920000002 -16.9756262 23) + + + (fp_text reference "S57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 143.6224778 -34.4652184 23) + + + (fp_text reference "S58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 151.2091991 30.7551132 23) + + + (fp_text reference "S59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 143.7853077 13.265521 23) + + + (fp_text reference "S60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 136.3614162 -4.2240712 23) + + + (fp_text reference "S61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 128.9375248 -21.7136634 23) + + + (fp_text reference "S62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 130.272548 28.7785906 23) + + + (fp_text reference "S63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 0 0 -23) + + + (fp_text reference "S64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 7.4238914 -17.4895922 -23) + + + (fp_text reference "S65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 14.8477829 -34.9791844 -23) + + + (fp_text reference "S66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 22.2716743 -52.4687766 -23) + + + (fp_text reference "S67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 18.5922643 3.5465065 -23) + + + (fp_text reference "S68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 26.0161557 -13.9430858 -23) + + + (fp_text reference "S69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 33.4400472 -31.432678 -23) + + + (fp_text reference "S70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 40.8639386 -48.9222702 -23) + + + (fp_text reference "S71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 37.5752597 6.1725081 -23) + + + (fp_text reference "S72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 44.9991512 -11.3170841 -23) + + + (fp_text reference "S73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 52.4230426 -28.8066764 -23) + + + (fp_text reference "S74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 59.8469341 -46.2962686 -23) + + + (fp_text reference "S75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 52.6509439 18.0035582 -23) + + + (fp_text reference "S76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 60.0748353 0.513966 -23) + + + (fp_text reference "S77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 67.4987268 -16.9756262 -23) + + + (fp_text reference "S78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 74.9226182 -34.4652184 -23) + + + (fp_text reference "S79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 67.3358969 30.7551132 -23) + + + (fp_text reference "S80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 74.7597883 13.265521 -23) + + + (fp_text reference "S81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 82.1836798 -4.2240712 -23) + + + (fp_text reference "S82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 89.6075712 -21.7136634 -23) + + + (fp_text reference "S83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 88.272548 28.7785906 -23) + + + (fp_text reference "S84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) + ) + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at -7.3640388 -3.125849 67) + + + (fp_text reference "D1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 0.059852599999999256 -20.6154412 67) + + + (fp_text reference "D2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 7.4837441 -38.1050334 67) + + + (fp_text reference "D3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 14.907635500000001 -55.5946256 67) + + + (fp_text reference "D4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 11.2282255 0.4206574999999999 67) + + + (fp_text reference "D5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 18.6521169 -17.0689348 67) + + + (fp_text reference "D6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 26.076008400000003 -34.558527 67) + + + (fp_text reference "D7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 33.499899799999994 -52.0481192 67) + + + (fp_text reference "D8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 30.211220899999997 3.0466591 67) + + + (fp_text reference "D9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 37.6351124 -14.442933100000001 67) + + + (fp_text reference "D10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 45.0590038 -31.9325254 67) + + + (fp_text reference "D11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 52.482895299999996 -49.4221176 67) + + + (fp_text reference "D12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 45.2869051 14.8777092 67) + + + (fp_text reference "D13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 52.710796499999994 -2.611883 67) + + + (fp_text reference "D14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 60.134688 -20.1014752 67) + + + (fp_text reference "D15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 67.5585794 -37.5910674 67) + + + (fp_text reference "D16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 59.97185809999999 27.6292642 67) + + + (fp_text reference "D17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 67.3957495 10.139672 67) + + + (fp_text reference "D18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 74.81964099999999 -7.3499202 67) + + + (fp_text reference "D19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 82.24353239999999 -24.8395124 67) + + + (fp_text reference "D20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 80.9085092 25.652741600000002 67) + + + (fp_text reference "D21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 225.9091348 -3.125849 -67) + + + (fp_text reference "D22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 218.4852434 -20.6154412 -67) + + + (fp_text reference "D23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 211.0613519 -38.1050334 -67) + + + (fp_text reference "D24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 203.6374605 -55.5946256 -67) + + + (fp_text reference "D25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 207.3168705 0.4206574999999999 -67) + + + (fp_text reference "D26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 199.8929791 -17.0689348 -67) + + + (fp_text reference "D27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 192.4690876 -34.558527 -67) + + + (fp_text reference "D28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 185.04519620000002 -52.0481192 -67) + + + (fp_text reference "D29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 188.3338751 3.0466591 -67) + + + (fp_text reference "D30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 180.9099836 -14.442933100000001 -67) + + + (fp_text reference "D31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 173.4860922 -31.9325254 -67) + + + (fp_text reference "D32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 166.0622007 -49.4221176 -67) + + + (fp_text reference "D33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 173.2581909 14.8777092 -67) + + + (fp_text reference "D34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 165.83429950000001 -2.611883 -67) + + + (fp_text reference "D35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 158.41040800000002 -20.1014752 -67) + + + (fp_text reference "D36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 150.98651660000002 -37.5910674 -67) + + + (fp_text reference "D37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 158.5732379 27.6292642 -67) + + + (fp_text reference "D38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 151.1493465 10.139672 -67) + + + (fp_text reference "D39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 143.725455 -7.3499202 -67) + + + (fp_text reference "D40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 136.3015636 -24.8395124 -67) + + + (fp_text reference "D41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 137.6365868 25.652741600000002 -67) + + + (fp_text reference "D42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 225.9091348 -3.125849 -67) + + + (fp_text reference "D43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 218.4852434 -20.6154412 -67) + + + (fp_text reference "D44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 211.0613519 -38.1050334 -67) + + + (fp_text reference "D45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 203.6374605 -55.5946256 -67) + + + (fp_text reference "D46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 207.3168705 0.4206574999999999 -67) + + + (fp_text reference "D47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 199.8929791 -17.0689348 -67) + + + (fp_text reference "D48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 192.4690876 -34.558527 -67) + + + (fp_text reference "D49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 185.04519620000002 -52.0481192 -67) + + + (fp_text reference "D50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 188.3338751 3.0466591 -67) + + + (fp_text reference "D51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 180.9099836 -14.442933100000001 -67) + + + (fp_text reference "D52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 173.4860922 -31.9325254 -67) + + + (fp_text reference "D53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 166.0622007 -49.4221176 -67) + + + (fp_text reference "D54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 173.2581909 14.8777092 -67) + + + (fp_text reference "D55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 165.83429950000001 -2.611883 -67) + + + (fp_text reference "D56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 158.41040800000002 -20.1014752 -67) + + + (fp_text reference "D57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 150.98651660000002 -37.5910674 -67) + + + (fp_text reference "D58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 158.5732379 27.6292642 -67) + + + (fp_text reference "D59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 151.1493465 10.139672 -67) + + + (fp_text reference "D60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 143.725455 -7.3499202 -67) + + + (fp_text reference "D61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 136.3015636 -24.8395124 -67) + + + (fp_text reference "D62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 137.6365868 25.652741600000002 -67) + + + (fp_text reference "D63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) + (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at -7.3640388 -3.125849 67) + + + (fp_text reference "D64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 0.059852599999999256 -20.6154412 67) + + + (fp_text reference "D65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 7.4837441 -38.1050334 67) + + + (fp_text reference "D66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 14.907635500000001 -55.5946256 67) + + + (fp_text reference "D67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 11.2282255 0.4206574999999999 67) + + + (fp_text reference "D68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 18.6521169 -17.0689348 67) + + + (fp_text reference "D69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 26.076008400000003 -34.558527 67) + + + (fp_text reference "D70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 33.499899799999994 -52.0481192 67) + + + (fp_text reference "D71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 30.211220899999997 3.0466591 67) + + + (fp_text reference "D72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 37.6351124 -14.442933100000001 67) + + + (fp_text reference "D73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 45.0590038 -31.9325254 67) + + + (fp_text reference "D74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 52.482895299999996 -49.4221176 67) + + + (fp_text reference "D75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 45.2869051 14.8777092 67) + + + (fp_text reference "D76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 52.710796499999994 -2.611883 67) + + + (fp_text reference "D77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 60.134688 -20.1014752 67) + + + (fp_text reference "D78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 67.5585794 -37.5910674 67) + + + (fp_text reference "D79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 59.97185809999999 27.6292642 67) + + + (fp_text reference "D80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 67.3957495 10.139672 67) + + + (fp_text reference "D81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 74.81964099999999 -7.3499202 67) + + + (fp_text reference "D82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 82.24353239999999 -24.8395124 67) + + + (fp_text reference "D83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 80.9085092 25.652741600000002 67) + + + (fp_text reference "D84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) + (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) + ) + + + + + (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) + + (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") + (tags "SPST Tactile Switch") + + (at 109.272548 30.7551132 90) + + (fp_text reference "B1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer F.SilkS) (width 0.15)) + + + (pad 1 smd rect (at -3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) + (pad 1 smd rect (at 3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) + (pad 2 smd rect (at -3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) + (pad 2 smd rect (at 3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) + ) + + + + + (module ProMicro (layer F.Cu) (tedit 5B307E4C) + (at 109.272548 34.7551132 270) + + + (fp_text reference "MCU1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) + + + + (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) + + + (fp_text user RAW (at -13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RST (at -8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user VCC (at -6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P21 (at -3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P20 (at -1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P19 (at 1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P18 (at 3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P15 (at 6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P14 (at 8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P16 (at 11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P10 (at 13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + + (fp_text user P01 (at -13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P00 (at -11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P02 (at -3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P03 (at -1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P04 (at 1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P05 (at 3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P06 (at 6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P07 (at 8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P08 (at 11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P09 (at 13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + + + (pad 1 thru_hole rect (at -13.97 7.62 270) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 61 "RAW")) + (pad 2 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) + (pad 3 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 59 "RST")) + (pad 4 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 62 "VCC")) + (pad 5 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "P21")) + (pad 6 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 7 "P20")) + (pad 7 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 12 "P19")) + (pad 8 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 17 "P18")) + (pad 9 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 22 "P15")) + (pad 10 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 27 "P14")) + (pad 11 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 55 "P16")) + (pad 12 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 56 "P10")) + + (pad 13 thru_hole circle (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 63 "P1")) + (pad 14 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 64 "P0")) + (pad 15 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) + (pad 16 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) + (pad 17 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 29 "P2")) + (pad 18 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 34 "P3")) + (pad 19 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 39 "P4")) + (pad 20 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 44 "P5")) + (pad 21 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 49 "P6")) + (pad 22 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 54 "P7")) + (pad 23 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 58 "P8")) + (pad 24 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 57 "P9")) + ) + + (gr_line (start 115.825165 -27.0114006) (end 102.719931 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 102.719931 -27.0114006) (end 72.9592939 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 72.9592939 -51.5940058) (end 54.5491969 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 54.5491969 -59.4086284) (end 16.9739371 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 16.9739371 -65.58113639999999) (end -13.1123598 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start -13.1123598 5.2977372) (end 5.2977372 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 5.2977372 13.1123598) (end 54.223537099999994 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 54.223537099999994 36.0528504) (end 72.6336341 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 72.6336341 43.867473000000004) (end 145.9114619 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 145.9114619 43.867473000000004) (end 164.3215589 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 164.3215589 36.0528504) (end 213.2473588 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 213.2473588 13.1123598) (end 231.6574558 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 231.6574558 5.2977372) (end 201.5711589 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 201.5711589 -65.58113639999999) (end 163.9958991 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 163.9958991 -59.4086284) (end 145.5858021 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 145.5858021 -51.5940058) (end 115.825165 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) + +) + + \ No newline at end of file diff --git a/kicad/23creus/23creus.kicad_prl b/kicad/23creus/23creus.kicad_prl new file mode 100644 index 0000000..ac5a5b3 --- /dev/null +++ b/kicad/23creus/23creus.kicad_prl @@ -0,0 +1,75 @@ +{ + "board": { + "active_layer": 0, + "active_layer_preset": "All Layers", + "auto_track_width": true, + "hidden_nets": [], + "high_contrast_mode": 0, + "net_color_mode": 1, + "opacity": { + "pads": 1.0, + "tracks": 1.0, + "vias": 1.0, + "zones": 0.6 + }, + "ratsnest_display_mode": 0, + "selection_filter": { + "dimensions": true, + "footprints": true, + "graphics": true, + "keepouts": true, + "lockedItems": true, + "otherItems": true, + "pads": true, + "text": true, + "tracks": true, + "vias": true, + "zones": true + }, + "visible_items": [ + 0, + 1, + 2, + 3, + 4, + 5, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 32, + 33, + 34, + 35, + 36 + ], + "visible_layers": "fffffff_ffffffff", + "zone_display_mode": 0 + }, + "meta": { + "filename": "23creus.kicad_prl", + "version": 3 + }, + "project": { + "files": [] + } +} diff --git a/kicad/23creus/23creus.kicad_pro b/kicad/23creus/23creus.kicad_pro new file mode 100644 index 0000000..c75a0d5 --- /dev/null +++ b/kicad/23creus/23creus.kicad_pro @@ -0,0 +1,414 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.049999999999999996, + "copper_line_width": 0.19999999999999998, + "copper_text_italic": false, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "copper_text_upright": false, + "courtyard_line_width": 0.049999999999999996, + "dimension_precision": 4, + "dimension_units": 3, + "dimensions": { + "arrow_length": 1270000, + "extension_offset": 500000, + "keep_text_aligned": true, + "suppress_zeroes": false, + "text_position": 0, + "units_format": 1 + }, + "fab_line_width": 0.09999999999999999, + "fab_text_italic": false, + "fab_text_size_h": 1.0, + "fab_text_size_v": 1.0, + "fab_text_thickness": 0.15, + "fab_text_upright": false, + "other_line_width": 0.09999999999999999, + "other_text_italic": false, + "other_text_size_h": 1.0, + "other_text_size_v": 1.0, + "other_text_thickness": 0.15, + "other_text_upright": false, + "pads": { + "drill": 0.762, + "height": 1.524, + "width": 1.524 + }, + "silk_line_width": 0.12, + "silk_text_italic": false, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15, + "silk_text_upright": false, + "zones": { + "45_degree_only": false, + "min_clearance": 0.508 + } + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "meta": { + "filename": "board_design_settings.json", + "version": 2 + }, + "rule_severities": { + "annular_width": "error", + "clearance": "error", + "copper_edge_clearance": "error", + "courtyards_overlap": "error", + "diff_pair_gap_out_of_range": "error", + "diff_pair_uncoupled_length_too_long": "error", + "drill_out_of_range": "error", + "duplicate_footprints": "warning", + "extra_footprint": "warning", + "footprint_type_mismatch": "error", + "hole_clearance": "error", + "hole_near_hole": "error", + "invalid_outline": "error", + "item_on_disabled_layer": "error", + "items_not_allowed": "error", + "length_out_of_range": "error", + "malformed_courtyard": "error", + "microvia_drill_out_of_range": "error", + "missing_courtyard": "ignore", + "missing_footprint": "warning", + "net_conflict": "warning", + "npth_inside_courtyard": "ignore", + "padstack": "error", + "pth_inside_courtyard": "ignore", + "shorting_items": "error", + "silk_over_copper": "warning", + "silk_overlap": "warning", + "skew_out_of_range": "error", + "through_hole_pad_without_hole": "error", + "too_many_vias": "error", + "track_dangling": "warning", + "track_width": "error", + "tracks_crossing": "error", + "unconnected_items": "error", + "unresolved_variable": "error", + "via_dangling": "warning", + "zone_has_empty_net": "error", + "zones_intersect": "error" + }, + "rules": { + "allow_blind_buried_vias": false, + "allow_microvias": false, + "max_error": 0.005, + "min_clearance": 0.0, + "min_copper_edge_clearance": 0.075, + "min_hole_clearance": 0.25, + "min_hole_to_hole": 0.25, + "min_microvia_diameter": 0.19999999999999998, + "min_microvia_drill": 0.09999999999999999, + "min_silk_clearance": 0.0, + "min_through_hole_diameter": 0.3, + "min_track_width": 0.19999999999999998, + "min_via_annular_width": 0.049999999999999996, + "min_via_diameter": 0.39999999999999997, + "use_height_for_length_calcs": true + }, + "track_widths": [], + "via_dimensions": [], + "zones_allow_external_fillets": false, + "zones_use_no_outline": true + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "23creus.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [], + "text_variables": {} +} diff --git a/kicad/23creus/23creus.kicad_sch b/kicad/23creus/23creus.kicad_sch new file mode 100644 index 0000000..3cfeed7 --- /dev/null +++ b/kicad/23creus/23creus.kicad_sch @@ -0,0 +1,5 @@ +(kicad_sch (version 20211123) (generator eeschema) + (paper "A4") + (lib_symbols) + (symbol_instances) +) diff --git a/src/kle.js b/src/kle.js index 592f916..6ff3f86 100644 --- a/src/kle.js +++ b/src/kle.js @@ -70,4 +70,4 @@ exports.convert = (config, logger) => { } return result -} \ No newline at end of file +} From 73775d69997360460b27a2f8e5500ab5a6951dac Mon Sep 17 00:00:00 2001 From: foosinn Date: Fri, 23 Feb 2024 17:54:55 +0100 Subject: [PATCH 120/120] pre update --- 23creus.yaml | 107 +- 23treus.yaml | 2 + Makefile | 4 +- kicad/23creus/23creus.kicad_prl | 4 +- kicad/23creus/23creus.kicad_pro | 341 +- kicad/23creus/main.kicad_pcb | 7254 +++++++++++++++++++++++++++++++ 6 files changed, 7685 insertions(+), 27 deletions(-) create mode 100644 kicad/23creus/main.kicad_pcb diff --git a/23creus.yaml b/23creus.yaml index d063d21..54e288b 100644 --- a/23creus.yaml +++ b/23creus.yaml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=./meta/schema.json units: kx: cx ky: cy @@ -67,6 +68,78 @@ points: outlines: # outer border + farouter: + - what: polygon + points: + - ref: matrix_inner_num + shift: [13, 13] + - ref: matrix_middle_num + shift: [13, 13] + - ref: matrix_middle_num + shift: [-13, 13] + - ref: matrix_pinky_num + shift: [-13, 13] + - ref: matrix_pinky_bottom + shift: [-13, -13] + - ref: matrix_pinky_bottom + shift: [13, -13] + - ref: matrix_inner_bottom + shift: [-13, -13] + - ref: matrix_inner_bottom + shift: [13, -13] + - ref: mirror_matrix_inner_bottom + shift: [13, -13] + - ref: mirror_matrix_inner_bottom + shift: [-13, -13] + - ref: mirror_matrix_pinky_bottom + shift: [13, -13] + - ref: mirror_matrix_pinky_bottom + shift: [-13, -13] + - ref: mirror_matrix_pinky_num + shift: [-13, 13] + - ref: mirror_matrix_middle_num + shift: [-13, 13] + - ref: mirror_matrix_middle_num + shift: [13, 13] + - ref: mirror_matrix_inner_num + shift: [13, 13] + + compatouter: + - what: polygon + points: + - ref: matrix_inner_num + shift: [11, 11] + - ref: matrix_middle_num + shift: [11, 11] + - ref: matrix_middle_num + shift: [-11, 11] + - ref: matrix_pinky_num + shift: [-11, 11] + - ref: matrix_pinky_bottom + shift: [-11, -11] + - ref: matrix_pinky_bottom + shift: [11, -11] + - ref: matrix_inner_bottom + shift: [-11, -11] + - ref: matrix_inner_bottom + shift: [11, -11] + - ref: mirror_matrix_inner_bottom + shift: [11, -11] + - ref: mirror_matrix_inner_bottom + shift: [-11, -11] + - ref: mirror_matrix_pinky_bottom + shift: [11, -11] + - ref: mirror_matrix_pinky_bottom + shift: [-11, -11] + - ref: mirror_matrix_pinky_num + shift: [-11, 11] + - ref: mirror_matrix_middle_num + shift: [-11, 11] + - ref: mirror_matrix_middle_num + shift: [11, 11] + - ref: mirror_matrix_inner_num + shift: [11, 11] + outer: - what: polygon points: @@ -112,14 +185,14 @@ outlines: aggregate.parts: - matrix_inner_bottom - mirror_matrix_inner_bottom - shift: [0, 0] + shift: [0, 40] # 14mm holes for cherry switches keyholes: - what: rectangle where: true asym: source - size: 13.5 + size: 13.8 # keycaps keycaps: @@ -134,6 +207,21 @@ outlines: - -keyholes - -chip + # far outer switchplate + farouterswitchplate: + - farouter + - -keyholes + - -chip + +cases: + laser: + - name: farouterswitchplate + extrude: 6.5 + - name: compatouter + extrude: 5.2 + shift: [0, 0, 1.3] + operation: subtract + pcbs: main: outlines: @@ -149,14 +237,7 @@ pcbs: to: "{{column_net}}" keycaps: true hotswap: true - #led: - # what: rgb - # where: true - # adjust: - # shift: [0, -5] - # params: - # din: "{{label}}" - # dout: P02 + diode: what: diode where: true @@ -164,8 +245,9 @@ pcbs: from: "{{colrow}}" to: "{{row_net}}" adjust: - shift: [-8, -0] - rotate: 90 + shift: [0, -5] + rotate: 180 + reset: what: button params: @@ -177,6 +259,7 @@ pcbs: - matrix_inner_bottom - mirror_matrix_inner_bottom rotate: 90 + mcu: what: promicro where: diff --git a/23treus.yaml b/23treus.yaml index 56ffaaf..2984107 100644 --- a/23treus.yaml +++ b/23treus.yaml @@ -145,6 +145,8 @@ outlines: - -keyholes - -chip +cases: + pcbs: main: outlines: diff --git a/Makefile b/Makefile index e732de1..60e09c0 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ all: node_modules - node src/cli.js 23creus.yaml -o output - cp output/pcbs/main.kicad_pcb kicad/45treus/ + node src/cli.js 23creus.yaml -d -o output + cp output/pcbs/main.kicad_pcb kicad/23creus/ node_modules: npm ci diff --git a/kicad/23creus/23creus.kicad_prl b/kicad/23creus/23creus.kicad_prl index ac5a5b3..4beb8e5 100644 --- a/kicad/23creus/23creus.kicad_prl +++ b/kicad/23creus/23creus.kicad_prl @@ -1,12 +1,14 @@ { "board": { - "active_layer": 0, + "active_layer": 37, "active_layer_preset": "All Layers", "auto_track_width": true, + "hidden_netclasses": [], "hidden_nets": [], "high_contrast_mode": 0, "net_color_mode": 1, "opacity": { + "images": 0.6, "pads": 1.0, "tracks": 1.0, "vias": 1.0, diff --git a/kicad/23creus/23creus.kicad_pro b/kicad/23creus/23creus.kicad_pro index c75a0d5..65fc3e8 100644 --- a/kicad/23creus/23creus.kicad_pro +++ b/kicad/23creus/23creus.kicad_pro @@ -1,5 +1,6 @@ { "board": { + "3dviewports": [], "design_settings": { "defaults": { "board_outline_line_width": 0.049999999999999996, @@ -44,7 +45,6 @@ "silk_text_thickness": 0.15, "silk_text_upright": false, "zones": { - "45_degree_only": false, "min_clearance": 0.508 } }, @@ -57,32 +57,43 @@ "rule_severities": { "annular_width": "error", "clearance": "error", + "connection_width": "warning", "copper_edge_clearance": "error", + "copper_sliver": "warning", "courtyards_overlap": "error", "diff_pair_gap_out_of_range": "error", "diff_pair_uncoupled_length_too_long": "error", "drill_out_of_range": "error", "duplicate_footprints": "warning", "extra_footprint": "warning", - "footprint_type_mismatch": "error", + "footprint": "error", + "footprint_type_mismatch": "ignore", "hole_clearance": "error", "hole_near_hole": "error", "invalid_outline": "error", + "isolated_copper": "warning", "item_on_disabled_layer": "error", "items_not_allowed": "error", "length_out_of_range": "error", + "lib_footprint_issues": "warning", + "lib_footprint_mismatch": "warning", "malformed_courtyard": "error", "microvia_drill_out_of_range": "error", "missing_courtyard": "ignore", "missing_footprint": "warning", "net_conflict": "warning", "npth_inside_courtyard": "ignore", - "padstack": "error", + "padstack": "warning", "pth_inside_courtyard": "ignore", "shorting_items": "error", + "silk_edge_clearance": "warning", "silk_over_copper": "warning", "silk_overlap": "warning", "skew_out_of_range": "error", + "solder_mask_bridge": "error", + "starved_thermal": "error", + "text_height": "warning", + "text_thickness": "warning", "through_hole_pad_without_hole": "error", "too_many_vias": "error", "track_dangling": "warning", @@ -91,32 +102,75 @@ "unconnected_items": "error", "unresolved_variable": "error", "via_dangling": "warning", - "zone_has_empty_net": "error", "zones_intersect": "error" }, "rules": { - "allow_blind_buried_vias": false, - "allow_microvias": false, "max_error": 0.005, "min_clearance": 0.0, + "min_connection": 0.0, "min_copper_edge_clearance": 0.075, "min_hole_clearance": 0.25, "min_hole_to_hole": 0.25, "min_microvia_diameter": 0.19999999999999998, "min_microvia_drill": 0.09999999999999999, + "min_resolved_spokes": 2, "min_silk_clearance": 0.0, + "min_text_height": 0.7999999999999999, + "min_text_thickness": 0.08, "min_through_hole_diameter": 0.3, "min_track_width": 0.19999999999999998, - "min_via_annular_width": 0.049999999999999996, + "min_via_annular_width": 0.09999999999999999, "min_via_diameter": 0.39999999999999997, + "solder_mask_to_copper_clearance": 0.0, "use_height_for_length_calcs": true }, + "teardrop_options": [ + { + "td_allow_use_two_tracks": true, + "td_curve_segcount": 5, + "td_on_pad_in_zone": false, + "td_onpadsmd": true, + "td_onroundshapesonly": false, + "td_ontrackend": false, + "td_onviapad": true + } + ], + "teardrop_parameters": [ + { + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_target_name": "td_round_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_target_name": "td_rect_shape", + "td_width_to_size_filter_ratio": 0.9 + }, + { + "td_curve_segcount": 0, + "td_height_ratio": 1.0, + "td_length_ratio": 0.5, + "td_maxheight": 2.0, + "td_maxlen": 1.0, + "td_target_name": "td_track_end", + "td_width_to_size_filter_ratio": 0.9 + } + ], "track_widths": [], "via_dimensions": [], "zones_allow_external_fillets": false, "zones_use_no_outline": true }, - "layer_presets": [] + "layer_presets": [], + "viewports": [] }, "boards": [], "cvpcb": { @@ -338,7 +392,7 @@ "net_settings": { "classes": [ { - "bus_width": 12.0, + "bus_width": 12, "clearance": 0.2, "diff_pair_gap": 0.25, "diff_pair_via_gap": 0.25, @@ -352,13 +406,276 @@ "track_width": 0.25, "via_diameter": 0.8, "via_drill": 0.4, - "wire_width": 6.0 + "wire_width": 6 } ], "meta": { - "version": 2 + "version": 3 }, - "net_colors": null + "net_colors": null, + "netclass_assignments": null, + "netclass_patterns": [ + { + "netclass": "Default", + "pattern": "" + }, + { + "netclass": "Default", + "pattern": "pinky_bottom" + }, + { + "netclass": "Default", + "pattern": "P21" + }, + { + "netclass": "Default", + "pattern": "pinky_home" + }, + { + "netclass": "Default", + "pattern": "pinky_top" + }, + { + "netclass": "Default", + "pattern": "pinky_num" + }, + { + "netclass": "Default", + "pattern": "ring_bottom" + }, + { + "netclass": "Default", + "pattern": "P20" + }, + { + "netclass": "Default", + "pattern": "ring_home" + }, + { + "netclass": "Default", + "pattern": "ring_top" + }, + { + "netclass": "Default", + "pattern": "ring_num" + }, + { + "netclass": "Default", + "pattern": "middle_bottom" + }, + { + "netclass": "Default", + "pattern": "P19" + }, + { + "netclass": "Default", + "pattern": "middle_home" + }, + { + "netclass": "Default", + "pattern": "middle_top" + }, + { + "netclass": "Default", + "pattern": "middle_num" + }, + { + "netclass": "Default", + "pattern": "index_bottom" + }, + { + "netclass": "Default", + "pattern": "P18" + }, + { + "netclass": "Default", + "pattern": "index_home" + }, + { + "netclass": "Default", + "pattern": "index_top" + }, + { + "netclass": "Default", + "pattern": "index_num" + }, + { + "netclass": "Default", + "pattern": "inner_bottom" + }, + { + "netclass": "Default", + "pattern": "P15" + }, + { + "netclass": "Default", + "pattern": "inner_home" + }, + { + "netclass": "Default", + "pattern": "inner_top" + }, + { + "netclass": "Default", + "pattern": "inner_num" + }, + { + "netclass": "Default", + "pattern": "thumb_bottom" + }, + { + "netclass": "Default", + "pattern": "P14" + }, + { + "netclass": "Default", + "pattern": "mirror_pinky_bottom" + }, + { + "netclass": "Default", + "pattern": "P2" + }, + { + "netclass": "Default", + "pattern": "mirror_pinky_home" + }, + { + "netclass": "Default", + "pattern": "mirror_pinky_top" + }, + { + "netclass": "Default", + "pattern": "mirror_pinky_num" + }, + { + "netclass": "Default", + "pattern": "mirror_ring_bottom" + }, + { + "netclass": "Default", + "pattern": "P3" + }, + { + "netclass": "Default", + "pattern": "mirror_ring_home" + }, + { + "netclass": "Default", + "pattern": "mirror_ring_top" + }, + { + "netclass": "Default", + "pattern": "mirror_ring_num" + }, + { + "netclass": "Default", + "pattern": "mirror_middle_bottom" + }, + { + "netclass": "Default", + "pattern": "P4" + }, + { + "netclass": "Default", + "pattern": "mirror_middle_home" + }, + { + "netclass": "Default", + "pattern": "mirror_middle_top" + }, + { + "netclass": "Default", + "pattern": "mirror_middle_num" + }, + { + "netclass": "Default", + "pattern": "mirror_index_bottom" + }, + { + "netclass": "Default", + "pattern": "P5" + }, + { + "netclass": "Default", + "pattern": "mirror_index_home" + }, + { + "netclass": "Default", + "pattern": "mirror_index_top" + }, + { + "netclass": "Default", + "pattern": "mirror_index_num" + }, + { + "netclass": "Default", + "pattern": "mirror_inner_bottom" + }, + { + "netclass": "Default", + "pattern": "P6" + }, + { + "netclass": "Default", + "pattern": "mirror_inner_home" + }, + { + "netclass": "Default", + "pattern": "mirror_inner_top" + }, + { + "netclass": "Default", + "pattern": "mirror_inner_num" + }, + { + "netclass": "Default", + "pattern": "mirror_thumb_bottom" + }, + { + "netclass": "Default", + "pattern": "P7" + }, + { + "netclass": "Default", + "pattern": "P16" + }, + { + "netclass": "Default", + "pattern": "P10" + }, + { + "netclass": "Default", + "pattern": "P9" + }, + { + "netclass": "Default", + "pattern": "P8" + }, + { + "netclass": "Default", + "pattern": "RST" + }, + { + "netclass": "Default", + "pattern": "GND" + }, + { + "netclass": "Default", + "pattern": "RAW" + }, + { + "netclass": "Default", + "pattern": "VCC" + }, + { + "netclass": "Default", + "pattern": "P1" + }, + { + "netclass": "Default", + "pattern": "P0" + } + ] }, "pcbnew": { "last_paths": { diff --git a/kicad/23creus/main.kicad_pcb b/kicad/23creus/main.kicad_pcb new file mode 100644 index 0000000..ee475df --- /dev/null +++ b/kicad/23creus/main.kicad_pcb @@ -0,0 +1,7254 @@ + + +(kicad_pcb (version 20171130) (host pcbnew 5.1.6) + + (page A3) + (title_block + (title main) + (rev v1.0.0) + (company Unknown) + ) + + (general + (thickness 1.6) + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.25) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.05) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") +(net 1 "pinky_bottom") +(net 2 "P21") +(net 3 "pinky_home") +(net 4 "pinky_top") +(net 5 "pinky_num") +(net 6 "ring_bottom") +(net 7 "P20") +(net 8 "ring_home") +(net 9 "ring_top") +(net 10 "ring_num") +(net 11 "middle_bottom") +(net 12 "P19") +(net 13 "middle_home") +(net 14 "middle_top") +(net 15 "middle_num") +(net 16 "index_bottom") +(net 17 "P18") +(net 18 "index_home") +(net 19 "index_top") +(net 20 "index_num") +(net 21 "inner_bottom") +(net 22 "P15") +(net 23 "inner_home") +(net 24 "inner_top") +(net 25 "inner_num") +(net 26 "thumb_bottom") +(net 27 "P14") +(net 28 "mirror_pinky_bottom") +(net 29 "P2") +(net 30 "mirror_pinky_home") +(net 31 "mirror_pinky_top") +(net 32 "mirror_pinky_num") +(net 33 "mirror_ring_bottom") +(net 34 "P3") +(net 35 "mirror_ring_home") +(net 36 "mirror_ring_top") +(net 37 "mirror_ring_num") +(net 38 "mirror_middle_bottom") +(net 39 "P4") +(net 40 "mirror_middle_home") +(net 41 "mirror_middle_top") +(net 42 "mirror_middle_num") +(net 43 "mirror_index_bottom") +(net 44 "P5") +(net 45 "mirror_index_home") +(net 46 "mirror_index_top") +(net 47 "mirror_index_num") +(net 48 "mirror_inner_bottom") +(net 49 "P6") +(net 50 "mirror_inner_home") +(net 51 "mirror_inner_top") +(net 52 "mirror_inner_num") +(net 53 "mirror_thumb_bottom") +(net 54 "P7") +(net 55 "P16") +(net 56 "P10") +(net 57 "P9") +(net 58 "P8") +(net 59 "RST") +(net 60 "GND") +(net 61 "RAW") +(net 62 "VCC") +(net 63 "P1") +(net 64 "P0") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net "") +(add_net "pinky_bottom") +(add_net "P21") +(add_net "pinky_home") +(add_net "pinky_top") +(add_net "pinky_num") +(add_net "ring_bottom") +(add_net "P20") +(add_net "ring_home") +(add_net "ring_top") +(add_net "ring_num") +(add_net "middle_bottom") +(add_net "P19") +(add_net "middle_home") +(add_net "middle_top") +(add_net "middle_num") +(add_net "index_bottom") +(add_net "P18") +(add_net "index_home") +(add_net "index_top") +(add_net "index_num") +(add_net "inner_bottom") +(add_net "P15") +(add_net "inner_home") +(add_net "inner_top") +(add_net "inner_num") +(add_net "thumb_bottom") +(add_net "P14") +(add_net "mirror_pinky_bottom") +(add_net "P2") +(add_net "mirror_pinky_home") +(add_net "mirror_pinky_top") +(add_net "mirror_pinky_num") +(add_net "mirror_ring_bottom") +(add_net "P3") +(add_net "mirror_ring_home") +(add_net "mirror_ring_top") +(add_net "mirror_ring_num") +(add_net "mirror_middle_bottom") +(add_net "P4") +(add_net "mirror_middle_home") +(add_net "mirror_middle_top") +(add_net "mirror_middle_num") +(add_net "mirror_index_bottom") +(add_net "P5") +(add_net "mirror_index_home") +(add_net "mirror_index_top") +(add_net "mirror_index_num") +(add_net "mirror_inner_bottom") +(add_net "P6") +(add_net "mirror_inner_home") +(add_net "mirror_inner_top") +(add_net "mirror_inner_num") +(add_net "mirror_thumb_bottom") +(add_net "P7") +(add_net "P16") +(add_net "P10") +(add_net "P9") +(add_net "P8") +(add_net "RST") +(add_net "GND") +(add_net "RAW") +(add_net "VCC") +(add_net "P1") +(add_net "P0") + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 0 0 -23) + + + (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 7.4238914 -17.4895922 -23) + + + (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 14.8477829 -34.9791844 -23) + + + (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 22.2716743 -52.4687766 -23) + + + (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 18.5922643 3.5465065 -23) + + + (fp_text reference "S5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 26.0161557 -13.9430858 -23) + + + (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 33.4400472 -31.432678 -23) + + + (fp_text reference "S7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 40.8639386 -48.9222702 -23) + + + (fp_text reference "S8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 37.5752597 6.1725081 -23) + + + (fp_text reference "S9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 44.9991512 -11.3170841 -23) + + + (fp_text reference "S10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 52.4230426 -28.8066764 -23) + + + (fp_text reference "S11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 59.8469341 -46.2962686 -23) + + + (fp_text reference "S12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 52.6509439 18.0035582 -23) + + + (fp_text reference "S13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 60.0748353 0.513966 -23) + + + (fp_text reference "S14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 67.4987268 -16.9756262 -23) + + + (fp_text reference "S15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 74.9226182 -34.4652184 -23) + + + (fp_text reference "S16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 67.3358969 30.7551132 -23) + + + (fp_text reference "S17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 74.7597883 13.265521 -23) + + + (fp_text reference "S18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 82.1836798 -4.2240712 -23) + + + (fp_text reference "S19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 89.6075712 -21.7136634 -23) + + + (fp_text reference "S20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 88.272548 28.7785906 -23) + + + (fp_text reference "S21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 218.545096 0 23) + + + (fp_text reference "S22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 211.1212046 -17.4895922 23) + + + (fp_text reference "S23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 203.6973131 -34.9791844 23) + + + (fp_text reference "S24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 196.2734217 -52.4687766 23) + + + (fp_text reference "S25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 199.9528317 3.5465065 23) + + + (fp_text reference "S26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 192.5289403 -13.9430858 23) + + + (fp_text reference "S27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 185.1050488 -31.432678 23) + + + (fp_text reference "S28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 177.68115740000002 -48.9222702 23) + + + (fp_text reference "S29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 180.9698363 6.1725081 23) + + + (fp_text reference "S30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 173.5459448 -11.3170841 23) + + + (fp_text reference "S31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 166.1220534 -28.8066764 23) + + + (fp_text reference "S32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 158.6981619 -46.2962686 23) + + + (fp_text reference "S33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 165.89415209999999 18.0035582 23) + + + (fp_text reference "S34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 158.4702607 0.513966 23) + + + (fp_text reference "S35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 151.04636920000002 -16.9756262 23) + + + (fp_text reference "S36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 143.6224778 -34.4652184 23) + + + (fp_text reference "S37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 151.2091991 30.7551132 23) + + + (fp_text reference "S38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 143.7853077 13.265521 23) + + + (fp_text reference "S39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 136.3614162 -4.2240712 23) + + + (fp_text reference "S40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 128.9375248 -21.7136634 23) + + + (fp_text reference "S41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 130.272548 28.7785906 23) + + + (fp_text reference "S42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 218.545096 0 23) + + + (fp_text reference "S43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 211.1212046 -17.4895922 23) + + + (fp_text reference "S44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 203.6973131 -34.9791844 23) + + + (fp_text reference "S45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 196.2734217 -52.4687766 23) + + + (fp_text reference "S46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 199.9528317 3.5465065 23) + + + (fp_text reference "S47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 192.5289403 -13.9430858 23) + + + (fp_text reference "S48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 185.1050488 -31.432678 23) + + + (fp_text reference "S49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 177.68115740000002 -48.9222702 23) + + + (fp_text reference "S50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 180.9698363 6.1725081 23) + + + (fp_text reference "S51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 173.5459448 -11.3170841 23) + + + (fp_text reference "S52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 166.1220534 -28.8066764 23) + + + (fp_text reference "S53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 158.6981619 -46.2962686 23) + + + (fp_text reference "S54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 165.89415209999999 18.0035582 23) + + + (fp_text reference "S55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 158.4702607 0.513966 23) + + + (fp_text reference "S56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 151.04636920000002 -16.9756262 23) + + + (fp_text reference "S57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 143.6224778 -34.4652184 23) + + + (fp_text reference "S58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 151.2091991 30.7551132 23) + + + (fp_text reference "S59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 143.7853077 13.265521 23) + + + (fp_text reference "S60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 136.3614162 -4.2240712 23) + + + (fp_text reference "S61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 128.9375248 -21.7136634 23) + + + (fp_text reference "S62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 130.272548 28.7785906 23) + + + (fp_text reference "S63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) + (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 0 0 -23) + + + (fp_text reference "S64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 7.4238914 -17.4895922 -23) + + + (fp_text reference "S65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 14.8477829 -34.9791844 -23) + + + (fp_text reference "S66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 22.2716743 -52.4687766 -23) + + + (fp_text reference "S67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 18.5922643 3.5465065 -23) + + + (fp_text reference "S68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 26.0161557 -13.9430858 -23) + + + (fp_text reference "S69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 33.4400472 -31.432678 -23) + + + (fp_text reference "S70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 40.8639386 -48.9222702 -23) + + + (fp_text reference "S71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 37.5752597 6.1725081 -23) + + + (fp_text reference "S72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 44.9991512 -11.3170841 -23) + + + (fp_text reference "S73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 52.4230426 -28.8066764 -23) + + + (fp_text reference "S74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 59.8469341 -46.2962686 -23) + + + (fp_text reference "S75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 52.6509439 18.0035582 -23) + + + (fp_text reference "S76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 60.0748353 0.513966 -23) + + + (fp_text reference "S77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 67.4987268 -16.9756262 -23) + + + (fp_text reference "S78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 74.9226182 -34.4652184 -23) + + + (fp_text reference "S79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 67.3358969 30.7551132 -23) + + + (fp_text reference "S80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 74.7597883 13.265521 -23) + + + (fp_text reference "S81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 82.1836798 -4.2240712 -23) + + + (fp_text reference "S82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 89.6075712 -21.7136634 -23) + + + (fp_text reference "S83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) + ) + + + + (module PG1350 (layer F.Cu) (tedit 5DD50112) + (at 88.272548 28.7785906 -23) + + + (fp_text reference "S84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) + (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) + + + (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) + + + (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) + + + + (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) + (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) + + + + (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + + (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) + (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) + ) + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at -1.9536556 4.6025243 157) + + + (fp_text reference "D1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 5.470235799999999 -12.887067900000002 157) + + + (fp_text reference "D2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 12.894127300000001 -30.376660100000002 157) + + + (fp_text reference "D3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 20.3180187 -47.8662523 157) + + + (fp_text reference "D4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 16.6386087 8.1490308 157) + + + (fp_text reference "D5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 24.062500099999998 -9.3405615 157) + + + (fp_text reference "D6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 31.4863916 -26.8301537 157) + + + (fp_text reference "D7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 38.910283 -44.3197459 157) + + + (fp_text reference "D8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 35.6216041 10.7750324 157) + + + (fp_text reference "D9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 43.0454956 -6.714559800000001 157) + + + (fp_text reference "D10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 50.469387000000005 -24.2041521 157) + + + (fp_text reference "D11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 57.8932785 -41.6937443 157) + + + (fp_text reference "D12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 50.697288300000004 22.6060825 157) + + + (fp_text reference "D13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 58.1211797 5.1164903 157) + + + (fp_text reference "D14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 65.5450712 -12.373101900000002 157) + + + (fp_text reference "D15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 72.9689626 -29.8626941 157) + + + (fp_text reference "D16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 65.38224129999999 35.3576375 157) + + + (fp_text reference "D17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 72.80613269999999 17.8680453 157) + + + (fp_text reference "D18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 80.23002419999999 0.37845309999999976 157) + + + (fp_text reference "D19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 87.65391559999999 -17.111139100000003 157) + + + (fp_text reference "D20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 86.3188924 33.3811149 157) + + + (fp_text reference "D21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 220.4987516 4.6025243 -157) + + + (fp_text reference "D22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 213.0748602 -12.887067900000002 -157) + + + (fp_text reference "D23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 205.6509687 -30.376660100000002 -157) + + + (fp_text reference "D24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 198.2270773 -47.8662523 -157) + + + (fp_text reference "D25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 201.90648729999998 8.1490308 -157) + + + (fp_text reference "D26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 194.48259589999998 -9.3405615 -157) + + + (fp_text reference "D27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 187.05870439999998 -26.8301537 -157) + + + (fp_text reference "D28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 179.634813 -44.3197459 -157) + + + (fp_text reference "D29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 182.9234919 10.7750324 -157) + + + (fp_text reference "D30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 175.4996004 -6.714559800000001 -157) + + + (fp_text reference "D31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 168.075709 -24.2041521 -157) + + + (fp_text reference "D32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 160.6518175 -41.6937443 -157) + + + (fp_text reference "D33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 167.84780769999998 22.6060825 -157) + + + (fp_text reference "D34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 160.4239163 5.1164903 -157) + + + (fp_text reference "D35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 153.0000248 -12.373101900000002 -157) + + + (fp_text reference "D36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 145.5761334 -29.8626941 -157) + + + (fp_text reference "D37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 153.1628547 35.3576375 -157) + + + (fp_text reference "D38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 145.7389633 17.8680453 -157) + + + (fp_text reference "D39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 138.3150718 0.37845309999999976 -157) + + + (fp_text reference "D40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 130.8911804 -17.111139100000003 -157) + + + (fp_text reference "D41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 132.2262036 33.3811149 -157) + + + (fp_text reference "D42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 220.4987516 4.6025243 -157) + + + (fp_text reference "D43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 213.0748602 -12.887067900000002 -157) + + + (fp_text reference "D44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 205.6509687 -30.376660100000002 -157) + + + (fp_text reference "D45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 198.2270773 -47.8662523 -157) + + + (fp_text reference "D46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 201.90648729999998 8.1490308 -157) + + + (fp_text reference "D47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 194.48259589999998 -9.3405615 -157) + + + (fp_text reference "D48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 187.05870439999998 -26.8301537 -157) + + + (fp_text reference "D49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 179.634813 -44.3197459 -157) + + + (fp_text reference "D50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 182.9234919 10.7750324 -157) + + + (fp_text reference "D51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 175.4996004 -6.714559800000001 -157) + + + (fp_text reference "D52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 168.075709 -24.2041521 -157) + + + (fp_text reference "D53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 160.6518175 -41.6937443 -157) + + + (fp_text reference "D54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 167.84780769999998 22.6060825 -157) + + + (fp_text reference "D55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 160.4239163 5.1164903 -157) + + + (fp_text reference "D56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 153.0000248 -12.373101900000002 -157) + + + (fp_text reference "D57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 145.5761334 -29.8626941 -157) + + + (fp_text reference "D58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 153.1628547 35.3576375 -157) + + + (fp_text reference "D59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 145.7389633 17.8680453 -157) + + + (fp_text reference "D60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 138.3150718 0.37845309999999976 -157) + + + (fp_text reference "D61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 130.8911804 -17.111139100000003 -157) + + + (fp_text reference "D62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 132.2262036 33.3811149 -157) + + + (fp_text reference "D63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) + (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at -1.9536556 4.6025243 157) + + + (fp_text reference "D64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 5.470235799999999 -12.887067900000002 157) + + + (fp_text reference "D65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 12.894127300000001 -30.376660100000002 157) + + + (fp_text reference "D66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 20.3180187 -47.8662523 157) + + + (fp_text reference "D67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 16.6386087 8.1490308 157) + + + (fp_text reference "D68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 24.062500099999998 -9.3405615 157) + + + (fp_text reference "D69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 31.4863916 -26.8301537 157) + + + (fp_text reference "D70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 38.910283 -44.3197459 157) + + + (fp_text reference "D71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 35.6216041 10.7750324 157) + + + (fp_text reference "D72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 43.0454956 -6.714559800000001 157) + + + (fp_text reference "D73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 50.469387000000005 -24.2041521 157) + + + (fp_text reference "D74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 57.8932785 -41.6937443 157) + + + (fp_text reference "D75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 50.697288300000004 22.6060825 157) + + + (fp_text reference "D76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 58.1211797 5.1164903 157) + + + (fp_text reference "D77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 65.5450712 -12.373101900000002 157) + + + (fp_text reference "D78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 72.9689626 -29.8626941 157) + + + (fp_text reference "D79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 65.38224129999999 35.3576375 157) + + + (fp_text reference "D80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 72.80613269999999 17.8680453 157) + + + (fp_text reference "D81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 80.23002419999999 0.37845309999999976 157) + + + (fp_text reference "D82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 87.65391559999999 -17.111139100000003 157) + + + (fp_text reference "D83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) + ) + + + + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + (at 86.3188924 33.3811149 157) + + + (fp_text reference "D84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + + + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) + (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) + (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) + + + (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) + (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) + ) + + + + + (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) + + (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") + (tags "SPST Tactile Switch") + + (at 109.272548 30.7551132 90) + + (fp_text reference "B1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer F.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer F.SilkS) (width 0.15)) + + + (pad 1 smd rect (at -3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) + (pad 1 smd rect (at 3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) + (pad 2 smd rect (at -3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) + (pad 2 smd rect (at 3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) + ) + + + + + (module ProMicro (layer F.Cu) (tedit 5B307E4C) + (at 109.272548 34.7551132 270) + + + (fp_text reference "MCU1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + + (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) + (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) + + + (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) + + + + (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) + (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) + (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) + + + (fp_text user RAW (at -13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RST (at -8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user VCC (at -6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P21 (at -3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P20 (at -1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P19 (at 1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P18 (at 3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P15 (at 6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P14 (at 8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P16 (at 11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P10 (at 13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + + (fp_text user P01 (at -13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P00 (at -11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P02 (at -3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P03 (at -1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P04 (at 1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P05 (at 3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P06 (at 6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P07 (at 8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P08 (at 11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P09 (at 13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + + + (pad 1 thru_hole rect (at -13.97 7.62 270) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 61 "RAW")) + (pad 2 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) + (pad 3 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 59 "RST")) + (pad 4 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 62 "VCC")) + (pad 5 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "P21")) + (pad 6 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 7 "P20")) + (pad 7 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 12 "P19")) + (pad 8 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 17 "P18")) + (pad 9 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 22 "P15")) + (pad 10 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 27 "P14")) + (pad 11 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 55 "P16")) + (pad 12 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 56 "P10")) + + (pad 13 thru_hole circle (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 63 "P1")) + (pad 14 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 64 "P0")) + (pad 15 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) + (pad 16 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) + (pad 17 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 29 "P2")) + (pad 18 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 34 "P3")) + (pad 19 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 39 "P4")) + (pad 20 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 44 "P5")) + (pad 21 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 49 "P6")) + (pad 22 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 54 "P7")) + (pad 23 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 58 "P8")) + (pad 24 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 57 "P9")) + ) + + (gr_line (start 115.825165 -27.0114006) (end 102.719931 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 102.719931 -27.0114006) (end 72.9592939 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 72.9592939 -51.5940058) (end 54.5491969 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 54.5491969 -59.4086284) (end 16.9739371 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 16.9739371 -65.58113639999999) (end -13.1123598 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start -13.1123598 5.2977372) (end 5.2977372 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 5.2977372 13.1123598) (end 54.223537099999994 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 54.223537099999994 36.0528504) (end 72.6336341 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 72.6336341 43.867473000000004) (end 145.9114619 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 145.9114619 43.867473000000004) (end 164.3215589 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 164.3215589 36.0528504) (end 213.2473588 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 213.2473588 13.1123598) (end 231.6574558 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 231.6574558 5.2977372) (end 201.5711589 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 201.5711589 -65.58113639999999) (end 163.9958991 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 163.9958991 -59.4086284) (end 145.5858021 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) +(gr_line (start 145.5858021 -51.5940058) (end 115.825165 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) + +) + + \ No newline at end of file