Codercat Studio | Cookbook

This cookbook contains a collection of useful HoudiniFX node setups. All examples are stored using the new Houdini recipe API and can be copied from this website directly into Houdini using our simple shelf tools. We also periodically make a backup of the recipes here.

Copy a snippet of interest from this page, then use Paste on the "Cookbook" shelf to paste it in.

If you would like to share a recipe, click the Create button and paste in the output of the "Copy" shelf tool. Note that you must be logged in to do so. If you have any questions or comments, feel free to reach out at codercatclub@gmail.com.

Get new recipes updates over RSS feed.

⚠️ Changelog

11.20.2025 - We updated the copy shelf tool to include the Houdini version, which is also visible on the recipes listing. Please update your shelf tools using the Python one-liner from the Recommended Install section.

📦 Recommended Install

To install Cookbook shelf tools copy this code to Houdini Python Shell and press Enter. You will see Cookbook shelf apper on the top panel.

To open Python Shell press Alt-Shift-P or go to main menu Window > Python Shell.

📂 Alternative Manual Install
⬇️ Download shelf tool file and place it to your Houdini toolbar folder:
  • Windows:
  • macOS:
  • Linux:

Replace USERNAME and X.Y with your account name and Houdini version.

Restart Houdini.

? About this project

Motivation and Goals

We created this Houdini Cookbook because:

  • We needed a way to quickly share and store small Houdini node setups. Previously, we attempted to create HDA libraries, but it was too cumbersome for our small team.
  • We believe there is a better way to share Houdini examples than by sharing entire Houdini files.
  • We enjoy sharing our small setups with the Houdini community.
  • We strongly believe in the idea of "Own Your Data," therefore we do not hold any published recipes hostage. All recipes are backed up once a day to a public Git repository here. Even if this service goes down, anyone can still download the full collection and use it directly with the Cookbook shelf tool or by using the two Python functions described below.
  • We also embrace the idea of decentralization, and we are considering open sourcing the Cookbook web service so that anyone can run it locally with their own collection or as their own public webpage. Let us know if this is something that interests you.

How Does It Work

In Houdini 20.5, SideFX introduced a new Recipe system that allows users to save collections of nodes into human-readable structured text files (JSON). Within this, they added a new collection of Python utilities (hou.data) that allows for creating and loading recipes programmatically.

In particular, the Cookbook shelf tools use hou.data.selectedItemsAsData(...) for copying nodes and hou.createItemsFromData(...) for pasting.

For this web service, we use the Go programming language and store all submitted recipes in plain text JSON files.

Gyroid Spherical Coordinates
Twist on the basic gyroid, using the formula on spherical coordinates instead of cartesian. This should conform nicer to spherical shapes. This is also an example on how to warp the gyroid shape and get more custom formations.
Nov 09, 2025 | 20.5.584 | vex Cooked By: snay
ewogICAgIl9fY29va2Jvb2tNZXRhIjogewogICAgICAgICJjb250ZXh0IjogInNvcCIsCiAgICAgICAgInZlcnNpb24iOiAiMjAuNS41ODQiCiAgICB9LAogICAgImF0dHJpYmJsdXIxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNvbnZlcnR2ZGIxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiaXRlcmF0aW9ucyI6IDE5CiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIC0xLjk4CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJibHVyIgogICAgfSwKICAgICJjb252ZXJ0dmRiMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJneXJvaWQiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJjb252ZXJzaW9uIjogInBvbHkiLAogICAgICAgICAgICAiaXNvdmFsdWUiOiAwLjAxCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIC0wLjk4CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJjb252ZXJ0dmRiIgogICAgfSwKICAgICJneXJvaWQiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAidmRiZnJvbXBvbHlnb25zMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImZyZXEiOiA5LjMsCiAgICAgICAgICAgICJoZWlnaHRNdWwiOiAyMDAsCiAgICAgICAgICAgICJzbmlwcGV0IjogImZsb2F0IGZyZXEgPSBjaGYoXCJmcmVxXCIpO1xuXG5mbG9hdCByID0gbGVuZ3RoKHZAUCk7XG5mbG9hdCB0aGV0YSA9IGFjb3MoQFAuei9yKTtcbmZsb2F0IHBoaSA9IGF0YW4yKEBQLnksQFAueCk7XG5cbmZsb2F0IHggPSBmcmVxICogcjtcbmZsb2F0IHkgPSBmcmVxICogdGhldGE7XG5mbG9hdCB6ID0gZnJlcSAqIHBoaTtcblxuZmxvYXQgZnggPSBzaW4oeCkgKiBjb3MoeSkgKyBzaW4oeSkgKiBjb3MoeikgKyBzaW4oeikgKiBjb3MoeCk7XG5cbmlmKGZ4IFx1MDAzYyAwLjAxKXtcbiAgICBAZGVuc2l0eSA9IDAuMDtcbn0gIiwKICAgICAgICAgICAgInRvdGFsQ29scyI6IHsKICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImNoKFwiLi4vY2lyY2xlMS9kaXZzXCIpIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicGFybXRlbXBsYXRlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImluc2VydF9hZnRlciI6ICJiaW5kZWFjaCIsCiAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZm9sZGVyX2dlbmVyYXRlZHBhcm1zX3NuaXBwZXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJHZW5lcmF0ZWQgQ2hhbm5lbCBQYXJhbWV0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInBhcm10ZW1wbGF0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlcSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiRnJlcSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJmbG9hdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInRhZ3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXBfdHlwZSI6ICJzaW1wbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGVmeDo6bG9vayI6ICJibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZm9sZGVyX3NpbXBsZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpbnNlcnRfYWZ0ZXIiOiAiZm9sZGVyMF8xIiwKICAgICAgICAgICAgICAgICJwYXJtdGVtcGxhdGVzIjogewogICAgICAgICAgICAgICAgICAgICJoZWlnaHRNdWwiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJIZWlnaHRtdWwiLAogICAgICAgICAgICAgICAgICAgICAgICAibWF4X3ZhbHVlIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZmxvYXQiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidG90YWxDb2xzIjogewogICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiVG90YWxjb2xzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImZsb2F0IgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJ2b2x1bWV3cmFuZ2xlIgogICAgfSwKICAgICJzcGhlcmUxIjogewogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMi4xCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJzcGhlcmUiCiAgICB9LAogICAgInZkYmZyb21wb2x5Z29uczEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAic3BoZXJlMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImJ1aWxkZGlzdGFuY2UiOiBmYWxzZSwKICAgICAgICAgICAgImJ1aWxkZm9nIjogdHJ1ZSwKICAgICAgICAgICAgInZveGVsc2l6ZSI6IDAuMDIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMS4xCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJ2ZGJmcm9tcG9seWdvbnMiCiAgICB9Cn0=
Gyroid Cartesian Coordinates
The gyroid is a geometry with a detail and a continuous surface. It is found in nature, contributing to the structural coloration of butterfly wings and efficiency of honeycombs. This example is done on basic XYZ cartesian coordinates, but it gets interesting when you start to warp the space that feeds the Gyroid.
Nov 09, 2025 | 20.5.584 | vex Cooked By: snay
ewogICAgIl9fY29va2Jvb2tNZXRhIjogewogICAgICAgICJjb250ZXh0IjogInNvcCIsCiAgICAgICAgInZlcnNpb24iOiAiMjAuNS41ODQiCiAgICB9LAogICAgImF0dHJpYmJsdXIxIjogewogICAgICAgICJmbGFncyI6IHsKICAgICAgICAgICAgImRpc3BsYXkiOiB0cnVlLAogICAgICAgICAgICAicmVuZGVyIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiY29udmVydHZkYjEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJpdGVyYXRpb25zIjogMTAwCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIC0yLjA0CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJibHVyIgogICAgfSwKICAgICJjb252ZXJ0dmRiMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJneXJvaWQiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJjb252ZXJzaW9uIjogInBvbHkiLAogICAgICAgICAgICAiaXNvdmFsdWUiOiAwLjAxCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIC0xLjA0CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJjb252ZXJ0dmRiIgogICAgfSwKICAgICJneXJvaWQiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAidmRiZnJvbXBvbHlnb25zMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImZyZXEiOiA3LjcsCiAgICAgICAgICAgICJoZWlnaHRNdWwiOiAyMDAsCiAgICAgICAgICAgICJzbmlwcGV0IjogImZsb2F0IGZyZXEgPSBjaGYoXCJmcmVxXCIpO1xuXG5cbmZsb2F0IHggPSBmcmVxICogQFAueDtcbmZsb2F0IHkgPSBmcmVxICogQFAueTtcbmZsb2F0IHogPSBmcmVxICogQFAuejtcblxuZmxvYXQgZnggPSBzaW4oeCkgKiBjb3MoeSkgKyBzaW4oeSkgKiBjb3MoeikgKyBzaW4oeikgKiBjb3MoeCk7XG5cbmlmKGZ4IFx1MDAzYyAwLjAxKXtcbiAgICBAZGVuc2l0eSA9IDAuMDtcbn0gIiwKICAgICAgICAgICAgInRvdGFsQ29scyI6IHsKICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImNoKFwiLi4vY2lyY2xlMS9kaXZzXCIpIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicGFybXRlbXBsYXRlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImluc2VydF9hZnRlciI6ICJiaW5kZWFjaCIsCiAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZm9sZGVyX2dlbmVyYXRlZHBhcm1zX3NuaXBwZXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJHZW5lcmF0ZWQgQ2hhbm5lbCBQYXJhbWV0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInBhcm10ZW1wbGF0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlcSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiRnJlcSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJmbG9hdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInRhZ3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXBfdHlwZSI6ICJzaW1wbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGVmeDo6bG9vayI6ICJibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZm9sZGVyX3NpbXBsZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpbnNlcnRfYWZ0ZXIiOiAiZm9sZGVyMF8xIiwKICAgICAgICAgICAgICAgICJwYXJtdGVtcGxhdGVzIjogewogICAgICAgICAgICAgICAgICAgICJoZWlnaHRNdWwiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJIZWlnaHRtdWwiLAogICAgICAgICAgICAgICAgICAgICAgICAibWF4X3ZhbHVlIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZmxvYXQiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidG90YWxDb2xzIjogewogICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiVG90YWxjb2xzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImZsb2F0IgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJ2b2x1bWV3cmFuZ2xlIgogICAgfSwKICAgICJzcGhlcmUxIjogewogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMi4wNAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAic3BoZXJlIgogICAgfSwKICAgICJ2ZGJmcm9tcG9seWdvbnMxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInNwaGVyZTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJidWlsZGRpc3RhbmNlIjogZmFsc2UsCiAgICAgICAgICAgICJidWlsZGZvZyI6IHRydWUsCiAgICAgICAgICAgICJ2b3hlbHNpemUiOiAwLjAyCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDEuMDQKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogInZkYmZyb21wb2x5Z29ucyIKICAgIH0KfQ==
First And Last Point Group
Common vex snippet used for assigning point groups to the first and last points on a curve. Useful when needing a group to pin on a vellum hair sim.
Nov 09, 2025 | 20.5.584 | vex Cooked By: snay
ewogICAgIl9fY29va2Jvb2tNZXRhIjogewogICAgICAgICJjb250ZXh0IjogInNvcCIsCiAgICAgICAgInZlcnNpb24iOiAiMjAuNS41ODQiCiAgICB9LAogICAgImxpbmUxIjogewogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgInBvaW50cyI6IDMwCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDEuMjcKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImxpbmUiCiAgICB9LAogICAgInNldF9maXJzdF9hbmRfbGFzdF9ncm91cCI6IHsKICAgICAgICAiZmxhZ3MiOiB7CiAgICAgICAgICAgICJkaXNwbGF5IjogdHJ1ZSwKICAgICAgICAgICAgInJlbmRlciI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImxpbmUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiY2xhc3MiOiAicHJpbWl0aXZlIiwKICAgICAgICAgICAgImhlYWRfbGVuZ3RoIjogMSwKICAgICAgICAgICAgInNuaXBwZXQiOiAiaW50IHB0c1tdID0gcHJpbXBvaW50cygwLCBAcHJpbW51bSk7XG5cbmZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBjaGkoXCJoZWFkX2xlbmd0aFwiKTsgaSsrKSB7XG4gICAgc2V0cG9pbnRncm91cCgwLCBcImZpcnN0XCIsIGksIDEpO1xufVxuXG5mb3IgKGludCBpID0gMDsgaSBcdTAwM2MgY2hpKFwidGFpbF9sZW5ndGhcIik7IGkrKykge1xuICAgIHNldHBvaW50Z3JvdXAoMCwgXCJsYXN0XCIsIGxlbihwdHMpLTEtaSwgMSk7XG59XG5cblxuXG5cbiIsCiAgICAgICAgICAgICJ0YWlsX2xlbmd0aCI6IDEKICAgICAgICB9LAogICAgICAgICJwYXJtdGVtcGxhdGVzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaW5zZXJ0X2FmdGVyIjogInZleF90aHJlYWRqb2JzaXplIiwKICAgICAgICAgICAgICAgICJwYXJtdGVtcGxhdGVzIjogewogICAgICAgICAgICAgICAgICAgICJmb2xkZXJfZ2VuZXJhdGVkcGFybXNfc25pcHBldCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIkdlbmVyYXRlZCBDaGFubmVsIFBhcmFtZXRlcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkX2xlbmd0aCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiSGVhZCBMZW5ndGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW51X3R5cGUiOiAibm9ybWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0X2NhbGxiYWNrX2xhbmd1YWdlIjogImhzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhaWxfbGVuZ3RoIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJUYWlsIExlbmd0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbnVfdHlwZSI6ICJub3JtYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInRhZ3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXBfdHlwZSI6ICJzaW1wbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGVmeDo6bG9vayI6ICJibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZm9sZGVyX3NpbXBsZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYXR0cmlid3JhbmdsZSIKICAgIH0KfQ==
Breathing Chainmail
Converts a surface geometry into a moving, breathing, chainmail fabric. Apply this modifier to any clothing element that needs extra BLING. This pattern was inspired by 3D printable fabric prototypes.
Nov 03, 2025 | 20.5.584 | geometry Cooked By: snay
ewogICAgIl9fY29va2Jvb2tNZXRhIjogewogICAgICAgICJjb250ZXh0IjogInNvcCIsCiAgICAgICAgInZlcnNpb24iOiAiMjAuNS41ODQiCiAgICB9LAogICAgImF0dHJpYnByb21vdGUxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIm1lYXN1cmUyIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiZGVsZXRlaW4iOiBmYWxzZSwKICAgICAgICAgICAgImlubmFtZSI6ICJjdXJ2YXR1cmUiLAogICAgICAgICAgICAib3V0Y2xhc3MiOiAicHJpbWl0aXZlIgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAzLjE4CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJwcm9tb3RlIgogICAgfSwKICAgICJib29sZWFuMiI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJ0dWJlMiIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInR1YmUzIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiYm9vbGVhbm9wIjogInN1YnRyYWN0IgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICA1LjY4LAogICAgICAgICAgICAtMS40OQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYm9vbGVhbjo6Mi4wIgogICAgfSwKICAgICJicmVhdGhlX21vdmVtZW50IjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNyZWF0ZV9wcmltcyIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIm1lYXN1cmUyIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiYnJlYXRoZUFtdCI6IDAuMDEsCiAgICAgICAgICAgICJjdXJ2ZXJlbWFwIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICAicG9zIjogMCwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICAicG9zIjogMSwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJncm91cCI6ICJlZGdlcyIsCiAgICAgICAgICAgICJtb3ZlQW10IjogMC4wNTQsCiAgICAgICAgICAgICJzbmlwcGV0IjogIi8vYWRkIG5vaXNlIG9mZnNldCB0byBhbGwgcG9pbnRzIFxuaW50IG5lYXJwdCA9IG5lYXJwb2ludCgxLCBAUCk7XG5cbmZsb2F0IHJhd0N1cnZlID0gY2xhbXAocG9pbnQoMSwgXCJjdXJ2YXR1cmVcIiwgbmVhcnB0KSwgMC4wLCAxLjApO1xuZmxvYXQgbW92ZUFtdCA9IGNocmFtcChcImN1cnZlcmVtYXBcIiwgcmF3Q3VydmUpO1xuXG5tb3ZlQW10ICo9IDEuMCArIHNpbigtMyAqdkBQLnkgKyAzICogcmF3Q3VydmUgKyAwLjEgKiBARnJhbWUpO1xuXG5pbnQgbltdID0gbmVpZ2hib3VycygwLCBAcHRudW0pO1xudmVjdG9yIG4xID0gcG9pbnQoMCxcIlBcIiwgblswXSk7XG52ZWN0b3IgbjIgPSBwb2ludCgwLFwiUFwiLCBuWzFdKTtcblxudmVjdG9yIGRpciA9IChuMSArIG4yKS8yLjAgLSBAUDtcblxudkBQTmV4dCA9IHZAUCsgMS4zICogY2hmKFwiYnJlYXRoZUFtdFwiKSAqIG1vdmVBbXQgKiBATjtcbnZAUE5leHQgKz0gY2hmKFwibW92ZUFtdFwiKSAqIG1vdmVBbXQgKiBjdXJsbm9pc2UoQFAgKyAwLjAxICogQEZyYW1lKTtcblxuIgogICAgICAgIH0sCiAgICAgICAgInBhcm10ZW1wbGF0ZXMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJpbnNlcnRfYWZ0ZXIiOiAidmV4X3RocmVhZGpvYnNpemUiLAogICAgICAgICAgICAgICAgInBhcm10ZW1wbGF0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImZvbGRlcl9nZW5lcmF0ZWRwYXJtc19zbmlwcGV0IjogewogICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiR2VuZXJhdGVkIENoYW5uZWwgUGFyYW1ldGVycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXJtdGVtcGxhdGVzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImJyZWF0aGVBbXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIkJyZWF0aGVhbXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhfdmFsdWUiOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZmxvYXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1cnZlcmVtYXAiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIkN1cnZlcmVtYXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3dfY29udHJvbHMiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInJhbXBfZmxvYXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vdmVBbXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIk1vdmVhbXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhfdmFsdWUiOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZmxvYXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0YWdzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImdyb3VwX3R5cGUiOiAic2ltcGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaWRlZng6Omxvb2siOiAiYmxhbmsiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImZvbGRlcl9zaW1wbGUiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImF0dHJpYndyYW5nbGUiCiAgICB9LAogICAgImNvcHl0b3BvaW50czEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiZGl2aWRlMiIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImRlbGV0ZTMiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJpZGF0dHJpYiI6ICJ2YXJpYW50IiwKICAgICAgICAgICAgInRhcmdldGF0dHJpYnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImFwcGx5YXR0cmlicyMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICIqLF52LF5BbHBoYSxeTixedXAsXnBzY2FsZSxec2NhbGUsXm9yaWVudCxecm90LF5waXZvdCxedHJhbnMsXnRyYW5zZm9ybSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhcHBseW1ldGhvZCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhcHBseXRvIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInVzZWFwcGx5IyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImFwcGx5YXR0cmlicyMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJBbHBoYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhcHBseW1ldGhvZCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJtdWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImFwcGx5dG8jIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidXNlYXBwbHkjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiYXBwbHlhdHRyaWJzIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogInYiLAogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiYXBwbHltZXRob2QjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAiYWRkIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImFwcGx5dG8jIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidXNlYXBwbHkjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAidGFyZ2V0Z3JvdXAiOiAiZWRnZXMiCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDUuMzYsCiAgICAgICAgICAgIC00LjU5CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJjb3B5dG9wb2ludHM6OjIuMCIKICAgIH0sCiAgICAiY3JlYXRlX3ByaW1zIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImRpdmlkZTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJjbGFzcyI6ICJwcmltaXRpdmUiLAogICAgICAgICAgICAic25pcHBldCI6ICIvL2l0ZXJhdGUgb3ZlciBldmVyeSBwcmltaXRpdmUgaW4gb3VyIGhleGFnb25hbCBtZXNoXG52ZWN0b3IgY2VudGVyUG9zID0gQFA7XG5hZGRwb2ludCgwLCBAUCk7XG5cbmludCBwcmltcHRzW10gPSBwcmltcG9pbnRzKDAsIEBwcmltbnVtKTtcblxuZm9yKGludCBpID0gMDsgaSBcdTAwM2MgbGVuKHByaW1wdHMpOyBpKyspe1xuICAgIC8vZHJhdyBhIGxpbmUgZnJvbSBwdCB0byBjZW50ZXIgYW5kIFxuICAgIC8vbWFrZSBpdCBhIHByaW0gXG4gICAgaW50IG5ldyA9IGFkZHByaW0oMCwgXCJwb2x5XCIpO1xuICAgIGludCBjZW50ZXIgPSBhZGRwb2ludCgwLCBAUCk7XG4gICAgYWRkdmVydGV4KDAsIG5ldywgcHJpbXB0c1tpLTFdKTtcbiAgICBhZGR2ZXJ0ZXgoMCwgbmV3LCBwcmltcHRzW2ldKTtcbiAgICBhZGR2ZXJ0ZXgoMCwgbmV3LCBjZW50ZXIpO1xuICAgIHNldHByaW1ncm91cCgwLCBcImRpdmlkZWRcIiwgbmV3LCAxKTtcbiAgICBzZXRwb2ludGF0dHJpYigwLCBcImNlbnRlclwiLCBjZW50ZXIgLCAxLCBcInNldFwiKTtcbiAgICBzZXRwcmltYXR0cmliKDAsIFwiY3VydmF0dXJlXCIsICBuZXcsIEBjdXJ2YXR1cmUsIFwic2V0XCIpO1xuICAgIHNldHBvaW50Z3JvdXAoMCwgXCJkaXZpZGVkXCIsIGNlbnRlciwgMSk7XG4gICAgc2V0cG9pbnRncm91cCgwLCBcImVkZ2VzXCIsIHByaW1wdHNbaS0xXSwxKTtcbiAgICBzZXRwb2ludGdyb3VwKDAsIFwiZWRnZXNcIiwgcHJpbXB0c1tpXSwxKTtcbn1cblxuXG5cblxuXG5cbiIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMS4wOAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYXR0cmlid3JhbmdsZSIKICAgIH0sCiAgICAiZGVsZXRlMyI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJzZXRfZWRnZV9wb3MiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJncm91cCI6ICJkaXZpZGVkIGVkZ2VzIiwKICAgICAgICAgICAgIm5lZ2F0ZSI6ICJrZWVwIgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAxLjQsCiAgICAgICAgICAgIC0zLjUKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImRlbGV0ZSIKICAgIH0sCiAgICAiZGVsZXRlX3NtYWxsX3BhcnRzMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJyZW1lc2gxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiYktlZXBsYXJnZXN0IjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICA1LjE5CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJsYWJzOjpkZWxldGVfc21hbGxfcGFydHMiCiAgICB9LAogICAgImRpdmlkZTEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiYXR0cmlicHJvbW90ZTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJkdWFsIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAyLjEyCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJkaXZpZGUiCiAgICB9LAogICAgImRpdmlkZTIiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiYm9vbGVhbjIiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDUuNjgsCiAgICAgICAgICAgIC0yLjQ4CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJkaXZpZGUiCiAgICB9LAogICAgIm1haW5fbW92ZW1lbnQiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiYnJlYXRoZV9tb3ZlbWVudCIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIm1lYXN1cmUyIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiY2xhc3MiOiAicHJpbWl0aXZlIiwKICAgICAgICAgICAgImN1cnZlcmVtYXAiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLjA4Nzk4ODgyMzY1MjI2NzQ2LAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDAuMDMzMzMzMzM1MDcxODAyMTQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLjk3NDYyOTk5ODIwNzA5MjMsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZ3JvdXAiOiAiIWRpdmlkZWQiLAogICAgICAgICAgICAibW92ZUFtdCI6IDAuMDE1LAogICAgICAgICAgICAic25pcHBldCI6ICIvL2ZpbmQgYWxsIGNlbnRlciBwb2ludHNcbnZlY3RvciBjZW50ZXJQb3MgPSBAUDtcbmludCBjZW50ZXJwb2ludHNbXSA9IG5lYXJwb2ludHMoMCwgXCJkaXZpZGVkXCIsIGNlbnRlclBvcywgMC4wMSk7XG5cbnZlY3RvciBjb21iaW5lZE1vdmVBbXQ7IFxudmVjdG9yIGF2Z3Bvcztcbi8vcHJpbnRmKFwiJXNcIiwgbGVuKGNlbnRlcnBvaW50cykpO1xuZm9yKGludCBpID0gMDsgaSBcdTAwM2MgbGVuKGNlbnRlcnBvaW50cyk7IGkrKyl7XG4gICAgaW50IG51bSA9IGNlbnRlcnBvaW50c1tpXTtcbiAgICBpbnQgbltdID0gbmVpZ2hib3VycygwLCBudW0pO1xuICAgIHZlY3RvciBuMSA9IHBvaW50KDAsXCJQTmV4dFwiLCBuWzBdKTtcbiAgICB2ZWN0b3IgbjIgPSBwb2ludCgwLFwiUE5leHRcIiwgblsxXSk7XG4gICAgZmxvYXQgbGVuMiA9IChAUCAtIG4yKTtcbiAgICBmbG9hdCBsZW4xID0gKEBQIC0gbjEpO1xuICAgIGZsb2F0IG1vdmVBbXQxID0gMC41MiAqIG1heCgwLjAsbGVuMSAtIDAuMDcpO1xuICAgIGZsb2F0IG1vdmVBbXQyID0gMC41MiAqIG1heCgwLjAsbGVuMiAtIDAuMDcpO1xuXG4gICAgXG4gICAgY29tYmluZWRNb3ZlQW10ICs9IG1vdmVBbXQxICogbm9ybWFsaXplKG4xIC0gQFApO1xuICAgIGNvbWJpbmVkTW92ZUFtdCArPSBtb3ZlQW10MiAqIG5vcm1hbGl6ZShuMiAtIEBQKTtcbiAgICBhdmdwb3MgKz0gbjE7XG4gICAgXG4gICAgXG59XG5cbmZsb2F0IGNvdW50ID0gbGVuKGNlbnRlcnBvaW50cyk7XG5jb21iaW5lZE1vdmVBbXQgLz0gY291bnQ7XG5hdmdwb3MgLz0gY291bnQ7XG5cbmZsb2F0IG1vdmVBbXQgPSBsZW5ndGgoYXZncG9zIC0gQFApO1xuZm9yKGludCBpID0gMDsgaSBcdTAwM2MgbGVuKGNlbnRlcnBvaW50cyk7IGkrKyl7XG4gICAgaW50IG51bSA9IGNlbnRlcnBvaW50c1tpXTtcbiAgICBpbnQgbltdID0gbmVpZ2hib3VycygwLCBudW0pO1xuICAgIHZlY3RvciBuMyA9IHBvaW50KDAsXCJQTmV4dFwiLCBuWzBdKTtcbiAgICB2ZWN0b3IgbjIgPSBwb2ludCgwLFwiUE5leHRcIiwgblsxXSk7XG4gICAgXG4gICAgXG4gICAgXG4gICAgdmVjdG9yIG4xID0gcG9pbnQoMCxcIlBcIiwgbnVtKTtcbiAgICB2ZWN0b3Igbm9ybXogPSBwb2ludCgwLFwiTlwiLCBuWzFdKTtcbiAgICBuMSA9IGF2Z3BvcyArIGNvbWJpbmVkTW92ZUFtdDtcbiAgICBuMSArPSBtb3ZlQW10ICogbm9ybXo7XG4gICAgbjEgKz0gOCAqIG1vdmVBbXQgKiAoKG4yICsgbjMpLzIuMCAtIG4xKTtcbiAgICBzZXRwb2ludGF0dHJpYigwLCBcIlBcIiwgbnVtLCBuMSk7XG5cbn1cblxuXG4iCiAgICAgICAgfSwKICAgICAgICAicGFybXRlbXBsYXRlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImluc2VydF9hZnRlciI6ICJmb2xkZXIwXzEiLAogICAgICAgICAgICAgICAgInBhcm10ZW1wbGF0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImN1cnZlcmVtYXAiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJDdXJ2ZXJlbWFwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNob3dfY29udHJvbHMiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJyYW1wX2Zsb2F0IgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIm1vdmVBbXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJNb3ZlYW10IiwKICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImZsb2F0IgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAxLjM5LAogICAgICAgICAgICAtMS4zOAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYXR0cmlid3JhbmdsZSIKICAgIH0sCiAgICAibWVhc3VyZTIiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiZGVsZXRlX3NtYWxsX3BhcnRzMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImF0dHJpYm5hbWUiOiAiY3VydmF0dXJlIiwKICAgICAgICAgICAgImNvbG9ycmFtcCI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAxCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAuNSwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIDEKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICAicG9zIjogMSwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJncm91cHR5cGUiOiAicG9pbnRzIiwKICAgICAgICAgICAgIm1lYXN1cmUiOiAiY3VydmF0dXJlIiwKICAgICAgICAgICAgInRvdGFsYXR0cmlibmFtZSI6ICJ0b3RhbGN1cnZhdHVyZSIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgNC4xOQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAibWVhc3VyZTo6Mi4wIgogICAgfSwKICAgICJtZXJnZTMiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAidW5kZXJzaWRlX2NvbG9yIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiY29weXRvcG9pbnRzMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAxCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS40LAogICAgICAgICAgICAtNy41MgogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAibWVyZ2UiCiAgICB9LAogICAgIm5vcm1hbDEiOiB7CiAgICAgICAgImZsYWdzIjogewogICAgICAgICAgICAiZGlzcGxheSI6IHRydWUsCiAgICAgICAgICAgICJyZW5kZXIiOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJtZXJnZTMiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJjdXNwYW5nbGUiOiAwCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDEuNCwKICAgICAgICAgICAgLTguNDgKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIm5vcm1hbCIKICAgIH0sCiAgICAicGVhazIiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiZGVsZXRlMyIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImRpc3QiOiAtMC4wMDUKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS40LAogICAgICAgICAgICAtNC41CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJwZWFrIgogICAgfSwKICAgICJwb2x5ZXh0cnVkZTEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAicGVhazIiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJkaXN0IjogMC4wMDUsCiAgICAgICAgICAgICJleHRydXNpb25tb2RlIjogInBvaW50bm9ybWFsIiwKICAgICAgICAgICAgIm91dHB1dGJhY2siOiB0cnVlLAogICAgICAgICAgICAib3V0cHV0YmFja2dycCI6IHRydWUsCiAgICAgICAgICAgICJvdXRwdXRzaWRlZ3JwIjogdHJ1ZSwKICAgICAgICAgICAgInNjYWxlIjogWwogICAgICAgICAgICAgICAgMS4xLAogICAgICAgICAgICAgICAgMS4xLAogICAgICAgICAgICAgICAgMS4xCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aGlja25lc3NyYW1wIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAiY2F0bXVsbC1yb20iLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJjYXRtdWxsLXJvbSIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDEsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC45CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS40LAogICAgICAgICAgICAtNS41CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJwb2x5ZXh0cnVkZTo6Mi4wIgogICAgfSwKICAgICJyZW1lc2gxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInNwaGVyZTQiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJ0YXJnZXRzaXplIjogMC4xMDYKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgNi4xOQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAicmVtZXNoOjoyLjAiCiAgICB9LAogICAgInNldF9lZGdlX3BvcyI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJtYWluX21vdmVtZW50IiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiZ3JvdXAiOiAiZWRnZXMiLAogICAgICAgICAgICAic25pcHBldCI6ICJ2QFAgPSB2QFBOZXh0OyIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS4zOSwKICAgICAgICAgICAgLTIuNDYKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImF0dHJpYndyYW5nbGUiCiAgICB9LAogICAgInNwaGVyZTQiOiB7CiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAicmFkIjogWwogICAgICAgICAgICAgICAgMC41LAogICAgICAgICAgICAgICAgMC41LAogICAgICAgICAgICAgICAgMC41CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0eXBlIjogInBvbHltZXNoIgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICA3LjE5CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJzcGhlcmUiCiAgICB9LAogICAgInR1YmUyIjogewogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImNhcCI6IHRydWUsCiAgICAgICAgICAgICJjb2xzIjogNiwKICAgICAgICAgICAgImhlaWdodCI6IDAuMDA1LAogICAgICAgICAgICAib3JpZW50IjogInoiLAogICAgICAgICAgICAicmFkIjogWwogICAgICAgICAgICAgICAgMC41LAogICAgICAgICAgICAgICAgMC41CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJyYWRzY2FsZSI6IDAuMDE3LAogICAgICAgICAgICAic3VyZnR5cGUiOiAidHJpYW5nbGVzIiwKICAgICAgICAgICAgInR5cGUiOiAibWVzaCIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgNC44MywKICAgICAgICAgICAgMC4wNwogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAidHViZSIKICAgIH0sCiAgICAidHViZTMiOiB7CiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiY2FwIjogdHJ1ZSwKICAgICAgICAgICAgImNvbHMiOiA2LAogICAgICAgICAgICAiaGVpZ2h0IjogMC4wMDM2OTQ0MTgyMzEwMjUzMzksCiAgICAgICAgICAgICJvcmllbnQiOiAieiIsCiAgICAgICAgICAgICJyYWQiOiBbCiAgICAgICAgICAgICAgICAwLjUsCiAgICAgICAgICAgICAgICAwLjEzOTIzNzg5OTE4MTA5MDg2CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJyYWRzY2FsZSI6IDAuMDE0LAogICAgICAgICAgICAic3VyZnR5cGUiOiAidHJpYW5nbGVzIiwKICAgICAgICAgICAgInQiOiBbCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMC4wMDAwNTU1Mzg0OTA0MTQ2MTk0NDYsCiAgICAgICAgICAgICAgICAwLjAwMgogICAgICAgICAgICBdLAogICAgICAgICAgICAidHlwZSI6ICJwb2x5IgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICA2LjQ3LAogICAgICAgICAgICAwLjA3CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJ0dWJlIgogICAgfSwKICAgICJ1bmRlcnNpZGVfY29sb3IiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAicG9seWV4dHJ1ZGUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiY2xhc3MiOiAxLAogICAgICAgICAgICAiY29sb3IiOiBbCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImdyb3VwIjogIiFleHRydWRlQmFjayBeZXh0cnVkZVNpZGUiLAogICAgICAgICAgICAiZ3JvdXB0eXBlIjogInByaW1zIgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAxLjQsCiAgICAgICAgICAgIC02LjUKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImNvbG9yIgogICAgfQp9
Sweep With Cliff Detection
Separate polygons on sweeped line which angle change rapidly. Practically allow for profile cliff detection which is userful for creating cool looking shapes like outer ring of space station.
Nov 03, 2025 | 20.5.584 | geometry Cooked By: kif
ewogICAgIl9fY29va2Jvb2tNZXRhIjogewogICAgICAgICJjb250ZXh0IjogInNvcCIsCiAgICAgICAgInZlcnNpb24iOiAiMjAuNS41ODQiCiAgICB9LAogICAgImF0dHJpYnByb21vdGUyIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInN3ZWVwMyIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImlubmFtZSI6ICJjbGlmZiIsCiAgICAgICAgICAgICJtZXRob2QiOiAibGFzdCIsCiAgICAgICAgICAgICJvdXRjbGFzcyI6ICJwcmltaXRpdmUiCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDEuMTksCiAgICAgICAgICAgIDIuNDYKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImF0dHJpYnByb21vdGUiCiAgICB9LAogICAgImNpcmNsZTEiOiB7CiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiZGl2cyI6IDIwMCwKICAgICAgICAgICAgInR5cGUiOiAicG9seSIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS4xOSwKICAgICAgICAgICAgNy42MgogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiY2lyY2xlIgogICAgfSwKICAgICJjb2xvcjEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAic3BsaXRfY2xpZmZzIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiY29sb3IiOiBbCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJjb2xvciIKICAgIH0sCiAgICAiZmluZF9jbGlmZiI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJwc2NhbGUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAic25pcHBldCI6ICJmbG9hdCBwcmV2X3BzY2FsZSA9IHBvaW50KDAsIFwicHNjYWxlXCIsIEBwdG51bS0xKTtcbmZsb2F0IGRpZmYgPSBAcHNjYWxlIC0gcHJldl9wc2NhbGU7XG5cbmlmIChhYnMoZGlmZikgXHUwMDNlIDAuMDEpIHtcbiAgICBAY2xpZmYgPSAxLjA7XG59IgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAxLjE5LAogICAgICAgICAgICA0LjUKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImF0dHJpYndyYW5nbGUiCiAgICB9LAogICAgIm1lcmdlMSI6IHsKICAgICAgICAiZmxhZ3MiOiB7CiAgICAgICAgICAgICJkaXNwbGF5IjogdHJ1ZSwKICAgICAgICAgICAgInJlbmRlciI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNvbG9yMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInNwbGl0X2NsaWZmcyIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDEsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAxCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS4zMSwKICAgICAgICAgICAgLTEuMDcKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIm1lcmdlIgogICAgfSwKICAgICJwc2NhbGUxIjogewogICAgICAgICJjb2xvciI6IFsKICAgICAgICAgICAgMC44LAogICAgICAgICAgICAwLjAyLAogICAgICAgICAgICAwLjAyCiAgICAgICAgXSwKICAgICAgICAiZmxhZ3MiOiB7CiAgICAgICAgICAgICJjb2xvcmRlZmF1bHQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAicmVzYW1wbGUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAicHNjYWxlIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAiY29uc3RhbnQiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJjb25zdGFudCIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAuMTIzMjIyNzQ1OTU0OTkwMzksCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC4yMTc5NDg3MTk4NTkxMjMyMwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImNvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAicG9zIjogMC4yNDQyMzU2OTQ0MDg0MTY3NSwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwLjUwMzI0NjcyNDYwNTU2MDMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJjb25zdGFudCIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAuNDQ4MjQ5NjA4Mjc4Mjc0NTQsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC43OTQ4NzE4MDcwOTgzODg3CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAiY29uc3RhbnQiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLjUxNDA5MDUzODAyNDkwMjMsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC4zMTE2ODgzMDM5NDc0NDg3MwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImNvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAicG9zIjogMC41Nzk3Nzg4NTAwNzg1ODI4LAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDAuODA3NjkyMjg5MzUyNDE3CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAiY29uc3RhbnQiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLjgxMDQxODQyNjk5MDUwOSwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwLjI3OTIyMDc4OTY3MDk0NDIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJjb25zdGFudCIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAuODg3Mjc1ODE1MDEwMDcwOCwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAiY29uc3RhbnQiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLjkzNTUyNTE3ODkwOTMwMTgsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC4zMjQ2NzUzMjE1Nzg5Nzk1CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzbmlwcGV0IjogImZAcHNjYWxlID0gY2hyYW1wKFwicHNjYWxlXCIsIGZAY3VydmV1KTtcbiIKICAgICAgICB9LAogICAgICAgICJwYXJtdGVtcGxhdGVzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaW5zZXJ0X2FmdGVyIjogInZleF90aHJlYWRqb2JzaXplIiwKICAgICAgICAgICAgICAgICJwYXJtdGVtcGxhdGVzIjogewogICAgICAgICAgICAgICAgICAgICJmb2xkZXJfZ2VuZXJhdGVkcGFybXNfc25pcHBldCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIkdlbmVyYXRlZCBDaGFubmVsIFBhcmFtZXRlcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwc2NhbGUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIlBzY2FsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvd19jb250cm9scyI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicmFtcF9mbG9hdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInRhZ3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXBfdHlwZSI6ICJzaW1wbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGVmeDo6bG9vayI6ICJibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZm9sZGVyX3NpbXBsZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS4xOSwKICAgICAgICAgICAgNS41OAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYXR0cmlid3JhbmdsZSIKICAgIH0sCiAgICAicmVzYW1wbGUxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNpcmNsZTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJkb2N1cnZldWF0dHIiOiB0cnVlLAogICAgICAgICAgICAibGVuZ3RoIjogMC4wMjUKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMS4xOSwKICAgICAgICAgICAgNi42MgogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAicmVzYW1wbGUiCiAgICB9LAogICAgInNwbGl0X2NsaWZmcyI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJhdHRyaWJwcm9tb3RlMiIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImdyb3VwIjogIkBjbGlmZlx1MDAzZTAiCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDEuMTksCiAgICAgICAgICAgIDEuNDYKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogInNwbGl0IgogICAgfSwKICAgICJzd2VlcDMiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiZmluZF9jbGlmZiIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImNhcGRpdnMiOiAxLAogICAgICAgICAgICAiY2Fwc2NhbGUiOiAwLAogICAgICAgICAgICAiY29scyI6IDMsCiAgICAgICAgICAgICJjb21wdXRldXZzIjogdHJ1ZSwKICAgICAgICAgICAgInJhZGl1cyI6IDAuMjc3LAogICAgICAgICAgICAic2NhbGVyYW1wIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAiY29uc3RhbnQiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cmZhY2VzaGFwZSI6ICJ0dWJlIgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAxLjE5LAogICAgICAgICAgICAzLjQ2CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJzd2VlcDo6Mi4wIgogICAgfQp9