{"context":{"domain":"benta"},"layers":{"ApplicationLayer":{"reference":"ApplicationLayer","availableInstances":[{"reference":"ComponentsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"SystemsDataSet","params":{"filter":{"domain":"data2"},"pagination":{"size":1},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSource"}}}},{"reference":"ExternalComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"SystemsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5e3b796d6228227ca637d0f4","name":"data2","domain":"data2","organization":"62292184611f480b3191c37c","visibility":"public","updatedAt":"2026-07-27T14:19:36.810Z"}]}},{"reference":"OrganizationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"DataComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"OneFileComponentInstancesDataSet","params":{"pagination":{"size":1},"master":{"dataset":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSet"}},"localField":"system","masterField":"_id"},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"FileComponentInstancesDataSource"}}}},{"reference":"ApplicationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ServiceComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@Data2TableDataSource","reference":"FileComponentInstancesDataSource","params":{"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}}]}},{"component":"data2-core@MemoryDataSource","reference":"EmptyDataSource","params":{"initialData":[]}},{"reference":"ComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"UserComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"DataComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ServiceComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ExternalComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ApplicationsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}}],"processesParams":{}},"HostApplicationLayer":{"reference":"HostApplicationLayer","availableInstances":[{"_id":"5f15ff190528b92601890f71","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SystemsTableDataSource"}},"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"domain"}}},"pk":"_id","fields":[{"component":"data2-core-types@FieldReference","params":{"key":"_id"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"domain"}},{"component":"data2-core-types@FieldReference","params":{"key":"visibility"}},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization._id"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.name"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.billingStatus"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.publicTrial.active"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"settings.defaultAccessPolicy"}}},"break":true}],"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"staticPagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"policies":[{"component":"data2-core-auth@Policy","params":{"allow":{"params":{"actions":[{"params":{"components":[{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"_id"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"domain"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-flow@Series"}}}]},"reference":"SystemsDataSet","updatedAt":"2026-08-07T21:51:24.037Z","createdAt":"2020-07-20T20:31:21.838Z"},{"_id":"5f1601ce0528b92601890f7c","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":1000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"sort":{"params.package":1,"params.component":1},"pk":"_id","autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"staticFilter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"filter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}},"reference":"ComponentsDataSet","updatedAt":"2025-11-05T19:37:01.935Z","createdAt":"2020-07-20T20:42:54.898Z"},{"_id":"5f9041dbc8da12be8b94aea4","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":2000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"UserComponentsDataSet","updatedAt":"2025-11-06T21:06:58.095Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"65d8c4fabc9dbb8f94de8d53","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ExternalComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ExternalComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:23.742Z","createdAt":"2024-02-23T16:17:01.816Z"},{"reference":"SystemsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a8df75d61e8a5edc3832e21","name":"app","domain":"benta","visibility":"public","updatedAt":"2026-08-25T20:13:20.759Z","createdAt":"2026-08-25T20:13:17.136Z"}]}},{"reference":"ComponentsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5f52a278a575399a45d239b4","component":"data2-core-types@Component","params":{"package":"data2-core-primitives","component":"Router","interactions":{"component":"data2-core-types@FieldSet","params":{"fields":{"goBack":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.goBack","args":[]}}}},"icon":{"component":"data2-core-primitives@String","params":{"content":"arrow-left"}},"visibility":"public"}},"goTo":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"component":"data2-core-types@Reference","params":{"reference":"url"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}}}]}},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"url"}},{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}]},"break":true},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Path to route"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Path to redirect user"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Boolean"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Preserve Query"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Preserve query string parameters  preserve query parameters on navigating."}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"}]}},"open":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"pathname":{"component":"data2-core-types@Reference","params":{"reference":"value"}}}]}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}]}},"close":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":"close"}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"times"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}],"description":{"component":"data2-core-primitives@String","params":{"content":"Closes a window that was opened via router.open."}}}}}}}}},{"_id":"620d28658271aa4129919d89","component":"data2-core-types@Component","params":{"package":"data2-interface-services","component":"DeviceController","interactions":{"params":{"fields":{"postMessage":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@String","title":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}]},"component":"data2-core-types@ComponentParameter"},"print":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"zoom":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Number"}},"title":{"component":"data2-core-primitives@String","params":{"content":"zoom"}},"visibility":"public"}}},"visibility":"public"},"component":"data2-core-types@ComponentParameter"}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"share":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}}},"component":"data2-core-types@ComponentParameter"},"clipboard.copy":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"clipboard.paste":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"download":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}]},"component":"data2-core-types@ComponentParameter"},"downloadUrl":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Url"}}}}]},"component":"data2-core-types@ComponentParameter"},"promptFiles":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"params":{"fields":{"multiple":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Multiple"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Whether or not to allow selecting multiple files"}},"component":"data2-core-primitives@Boolean"}},"acceptedFormats":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Accepted Formats"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Accepted file formats"}},"component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},"timeout":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Timeout"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Max milliseconds to wait for file upload"}},"component":"data2-core-primitives@Number"}}}},"component":"data2-core-types@FieldSet"}}}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"meetingRecord":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","definition":{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"meeting"}},"script":{"component":"data2-core-primitives@String","params":{"content":"(function() {\n  let mediaRecorder;\n  let audioChunks = [];\n  let combinedStream;\n  let audioContext;\n  \n  window.meetingCapture = async function() {\n    try {\n      // Solicitar acesso ao áudio da guia (e vídeo, que será ignorado depois)\n      const tabStream = await navigator.mediaDevices.getDisplayMedia({ \n        video: true, // Necessário para alguns navegadores\n        audio: true\n      });\n      \n      // Remover a trilha de vídeo\n      const tabAudioTrack = tabStream.getAudioTracks()[0];\n      \n      // Solicitar acesso ao microfone\n      const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      const micAudioTrack = micStream.getAudioTracks()[0];\n      \n      // Criar um novo MediaStream com ambas as trilhas de áudio\n      combinedStream = new MediaStream([tabAudioTrack, micAudioTrack]);\n      \n      // Criar um contexto de áudio para misturar os streams\n      audioContext = new AudioContext();\n      const destination = audioContext.createMediaStreamDestination();\n      \n      // Conectar a trilha de áudio da guia\n      const tabSource = audioContext.createMediaStreamSource(new MediaStream([tabAudioTrack]));\n      tabSource.connect(destination);\n      \n      // Conectar a trilha de áudio do microfone\n      const micSource = audioContext.createMediaStreamSource(new MediaStream([micAudioTrack]));\n      micSource.connect(destination);\n      \n      // Iniciar gravação com o stream misturado\n      mediaRecorder = new MediaRecorder(destination.stream);\n      audioChunks = [];\n      mediaRecorder.ondataavailable = (e) => audioChunks.push(e.data);\n      mediaRecorder.start();\n      \n      console.log('Gravação iniciada. Chame meetingCaptureStop() para finalizar.');\n    } catch (error) {\n      console.error('Erro ao iniciar a captura:', error);\n    }\n  };\n  \n  window.meetingCaptureStop = function() {\n    return new Promise((resolve, reject) => {\n      if (!mediaRecorder) {\n        reject('Nenhuma gravação em andamento.');\n        return;\n      }\n      \n      mediaRecorder.onstop = () => {\n        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n        combinedStream.getTracks().forEach(track => track.stop());\n        audioContext.close();\n        \n        resolve(audioBlob);\n        console.log('Gravação finalizada. O arquivo de áudio está pronto para upload.');\n      };\n      \n      mediaRecorder.stop();\n    });\n  };\n})();"}}},"component":"data2-core-web@Script"},{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCapture"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"meetingRecordStop":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}],"definition":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCaptureStop"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"notify":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"private","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","parameters":{"title":{"params":{"component":"data2-core-primitives@String","index":{"component":"data2-core-primitives@Number","params":{"content":0}},"title":{"component":"data2-core-primitives@String","params":{"content":"title"}}},"component":"data2-core-types@ComponentParameter"},"sound":{"params":{"component":"data2-core-types@FileComponentUrlReference","index":{"component":"data2-core-primitives@Number","params":{"content":1}},"title":{"component":"data2-core-primitives@String","params":{"content":"sound"}}},"component":"data2-core-types@ComponentParameter"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"component":"data2-core-types@ComponentParameter"}}},"component":"data2-core-types@FieldSet"}}},{"_id":"6a8dfa5d568478227e095d33","component":"data2-core-types@Component","system":"6a8df75d61e8a5edc3832e21","params":{"extends":"data2-core-primitives@Block","component":"serie-cl-landing","package":"benta","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"const C = 50, RI = 28.75, RO = 48.25, HUB = 24.5, GAP = 4.4, RMID = 38.5;\n\nfunction pt(r, deg) {\n  const a = (deg - 90) * Math.PI / 180;\n  return [C + r * Math.cos(a), C + r * Math.sin(a)];\n}\nfunction segPath(i) {\n  const a1 = i * 45 + GAP, a2 = (i + 1) * 45 - GAP;\n  const o1 = pt(RO, a1), o2 = pt(RO, a2), i2 = pt(RI, a2), i1 = pt(RI, a1);\n  const f = (n) => n.toFixed(2);\n  return 'M' + f(o1[0]) + ' ' + f(o1[1]) +\n    'A' + RO + ' ' + RO + ' 0 0 1 ' + f(o2[0]) + ' ' + f(o2[1]) +\n    'L' + f(i2[0]) + ' ' + f(i2[1]) +\n    'A' + RI + ' ' + RI + ' 0 0 0 ' + f(i1[0]) + ' ' + f(i1[1]) + 'Z';\n}\nconst SEGS = [0, 1, 2, 3, 4, 5, 6, 7].map((i) => ({ d: segPath(i), c: pt(RMID, i * 45 + 22.5) }));\n\nconst PARTS = [\n  ['Coletor usinado', 'Flange de aluminio feita na casa, casa os corpos ao cabecote original.'],\n  ['Corpos de borboleta', 'Admissao individual por cilindro, diametro escolhido por aplicacao.'],\n  ['Bomba no tanque', 'Flange soldada por dentro. Por fora o tanque continua igual.'],\n  ['Roda fonica', 'Referencia de virabrequim. E como o sistema sabe onde o motor esta.'],\n  ['Chicote de aplicacao', 'Pronto, identificado, conectores selados. Roteado pra esse chassi.'],\n  ['Central programavel', 'Escondida sob o banco. Sem tela, sem nada aparecendo.'],\n  ['Ignicao de alta energia', 'Centelha forte e no ponto, em toda a faixa de giro.'],\n  ['Mapa calibrado', 'Levantado em dinamometro. A moto sai medida, nao estimada.']\n];\n\nconst BENS = [\n  ['Liga na primeira. Sempre.', 'Sem torneira, sem afogador, sem segurar o acelerador esperando aquecer. Frio, chuva, ou um mes parada na garagem. Aperta o botao e anda.'],\n  ['Nunca mais regular carburador', 'Fim do sincronismo, da cuba suja, do sabado perdido na oficina. A moto deixa de ser um projeto permanente e volta a ser transporte.'],\n  ['Qualquer combustivel, qualquer altitude', 'Posto ruim na estrada, etanol, subida de serra. O sistema le e corrige em tempo real. Viajar deixa de ser aposta.'],\n  ['O torque para de te assustar', 'Controle de tracao e de empinamento monitorando roda e inclinacao. Em moto antiga, com pneu frio ou asfalto molhado, e o que separa o susto da queda.']\n];\n\nconst APPS = [\n  ['on', 'Pronta', 'benta-i 750 Four', '4 cil. linha / DOHC / ar'],\n  ['on', 'Pronta', 'benta-i 750 S', '4 cil. linha / SOHC / ar'],\n  ['dev', 'Em desenvolvimento', 'benta-i 450 Twin', '2 cil. paralelo / ar'],\n  ['dev', 'Em desenvolvimento', 'benta-i V-Twin', '600-1100 cm3 / ar'],\n  ['soon', 'Fila', 'benta-i 600 Trail', 'monocilindrico'],\n  ['soon', 'Fila', 'benta-i 1100 Four', '4 cil. linha / liquida']\n];\n\nconst CHECKS = [\n  ['Nada a vista', 'Modulo sob o banco. Sem tela, sem display, sem cabo aparente.'],\n  ['Chassi intacto', 'Sem corte, sem solda estrutural, sem furo novo em peca original.'],\n  ['Reversivel', 'Os componentes originais voltam pra voce numa caixa, etiquetados.'],\n  ['Valor preservado', 'Na venda, o comprador escolhe: injetada ou original.']\n];\n\nconst MOTES = [];\nfor (let i = 0; i < 18; i++) {\n  const a = (i * 137.508) % 360;\n  const r = 8 + ((i * 53) % 40);\n  const p = pt(r, a);\n  MOTES.push({ x: p[0], y: p[1], sp: 0.25 + ((i * 7) % 10) / 22, ph: (i * 41) % 100 });\n}\n\nfunction markSvg(gapColor, cls) {\n  return '<svg class=\"' + cls + '\" viewBox=\"0 0 100 100\" aria-hidden=\"true\">' +\n    '<circle cx=\"50\" cy=\"50\" r=\"' + HUB + '\" fill=\"currentColor\"/>' +\n    '<circle cx=\"50\" cy=\"50\" r=\"38.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"19.5\"/>' +\n    '<rect x=\"47.4\" y=\"0\" width=\"5.2\" height=\"100\" fill=\"' + gapColor + '\"/>' +\n    '<rect x=\"47.4\" y=\"0\" width=\"5.2\" height=\"100\" fill=\"' + gapColor + '\" transform=\"rotate(45 50 50)\"/>' +\n    '<rect x=\"47.4\" y=\"0\" width=\"5.2\" height=\"100\" fill=\"' + gapColor + '\" transform=\"rotate(90 50 50)\"/>' +\n    '<rect x=\"47.4\" y=\"0\" width=\"5.2\" height=\"100\" fill=\"' + gapColor + '\" transform=\"rotate(135 50 50)\"/>' +\n    '</svg>';\n}\n\nfunction esc(s) { return String(s).replace(/&/g, '&amp;').replace(/</g, '&lt;'); }\n\nexport default {\n  css: `\n:host{display:block}\n*{box-sizing:border-box;margin:0;padding:0}\n.wrap{\n  --void:#000; --alu:#DEE1E3; --steel:#82878C; --dim:#4A4E52;\n  --hair:rgba(222,225,227,.14); --light:#F2F3F1;\n  background:#000; color:var(--alu); height:100%; overflow-y:auto;\n  -webkit-overflow-scrolling:touch;\n  font-family:\"Zen Kaku Gothic New\",ui-sans-serif,-apple-system,\"Helvetica Neue\",Arial,sans-serif;\n  font-size:16px; line-height:1.62; font-weight:400;\n}\n.in{max-width:1080px;margin:0 auto}\n.mono{font-family:\"IBM Plex Mono\",ui-monospace,SFMono-Regular,Menlo,monospace;\n  font-size:11px;letter-spacing:.2em;text-transform:uppercase}\nh1,h2,h3{font-weight:900;letter-spacing:-.03em;line-height:1}\nsec{display:block;padding:92px 34px;border-bottom:1px solid var(--hair)}\n\n.bar{display:flex;align-items:center;justify-content:space-between;gap:18px;\n  padding:20px 34px;border-bottom:1px solid var(--hair);flex-wrap:wrap}\n.bar .l{display:flex;align-items:center;gap:15px}\n.bar svg{width:26px;height:26px;color:var(--alu);display:block}\n.bar .mono{color:var(--steel)}\n\n.hero{padding:104px 34px 96px;border-bottom:1px solid var(--hair)}\n.hero .mono{color:var(--steel);margin-bottom:38px}\n.hero h1{font-size:clamp(50px,11.5vw,122px)}\n.hero h1 span{color:var(--dim)}\n.hero p{margin-top:42px;max-width:50ch;font-size:clamp(16.5px,2.1vw,19px);color:var(--steel)}\n.hero p b{color:var(--alu);font-weight:700}\n\n.th{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap;margin-bottom:20px}\n.th h2{font-size:clamp(30px,5vw,52px);max-width:20ch}\n.th .sub{margin-top:16px;color:var(--steel);max-width:42ch;font-size:15.5px}\n.ctrl{display:flex;gap:10px;align-items:center;flex:none}\n.btn2{background:none;border:1px solid var(--hair);color:var(--steel);cursor:pointer;\n  font-family:inherit;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;\n  padding:12px 16px;transition:border-color .25s,color .25s}\n.btn2:hover{border-color:#8054FF;color:var(--alu)}\n.btn2:focus-visible{outline:2px solid #8054FF;outline-offset:2px}\n.btn2[aria-pressed=\"true\"]{border-color:#8054FF;color:#3BE8E0}\n\n.tbody{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;margin-top:34px}\n.stagewrap{display:flex;justify-content:center}\n.stage{position:relative;width:100%;max-width:430px;aspect-ratio:1;touch-action:none;\n  cursor:crosshair;user-select:none;-webkit-user-select:none}\n.stage svg{position:absolute;inset:0;width:100%;height:100%;display:block}\n.base .seg,.base .hub{fill:#2A2E32}\n.uvwrap{position:absolute;inset:0;\n  -webkit-mask-image:radial-gradient(circle var(--r,0px) at var(--tx,-999px) var(--ty,-999px),#000 0%,#000 42%,rgba(0,0,0,.55) 68%,transparent 100%);\n  mask-image:radial-gradient(circle var(--r,0px) at var(--tx,-999px) var(--ty,-999px),#000 0%,#000 42%,rgba(0,0,0,.55) 68%,transparent 100%);\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}\n.stage.all .uvwrap{-webkit-mask-image:none;mask-image:none}\n.uvwrap .hub{fill:#3BE8E0}\n.uvwrap .seg{fill:#8054FF}\n.uvwrap .seg.got{fill:#3BE8E0}\n.glow{position:absolute;inset:0;filter:blur(16px);opacity:.75}\n.glow .seg{fill:#8054FF}.glow .hub{fill:#3BE8E0}\n.torch{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;\n  border-radius:50%;mix-blend-mode:screen;opacity:0;transition:opacity .5s;\n  background:radial-gradient(circle,rgba(128,84,255,.30) 0%,rgba(128,84,255,.12) 45%,transparent 72%)}\n.stage.lit .torch{opacity:1}\n.stage.all .torch{opacity:0}\n.motes{position:absolute;inset:0;pointer-events:none}\n.mote{position:absolute;width:3px;height:3px;border-radius:50%;background:#3BE8E0;\n  box-shadow:0 0 6px #3BE8E0;opacity:0;will-change:transform,opacity}\n.hint{position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);\n  color:var(--dim);white-space:nowrap;transition:opacity .4s}\n.stage.lit .hint,.stage.all .hint{opacity:0}\n\n.count{display:flex;align-items:baseline;gap:12px;margin-bottom:18px}\n.count b{font-size:34px;font-weight:900;letter-spacing:-.03em;line-height:1;color:#3BE8E0}\n.count .mono{color:var(--dim)}\n.items{display:block}\n.it{display:grid;grid-template-columns:24px 1fr;gap:13px;padding:12px 0;\n  border-bottom:1px solid var(--hair);transition:border-color .4s}\n.it i{font-style:normal;font-family:\"IBM Plex Mono\",monospace;font-size:11px;color:var(--dim);padding-top:3px}\n.it b{display:block;font-weight:700;font-size:15px;color:var(--dim);letter-spacing:-.01em;transition:color .4s}\n.it span{display:block;font-size:13px;color:#33373B;line-height:1.5;margin-top:1px;transition:color .4s}\n.it.got{border-color:rgba(128,84,255,.45)}\n.it.got i{color:#3BE8E0}\n.it.got b{color:var(--alu)}\n.it.got span{color:var(--steel)}\n.note{margin-top:40px;padding-top:20px;border-top:1px solid var(--hair);\n  font-size:14px;color:var(--dim);max-width:74ch}\n\n.stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--hair)}\n.stat{padding:34px 22px 36px;border-bottom:1px solid var(--hair);\n  border-right:1px solid var(--hair)}\n.stat:last-child{border-right:0}\n.stat .fig{font-weight:900;font-size:clamp(38px,5.6vw,58px);letter-spacing:-.045em;\n  line-height:.9;color:var(--alu)}\n.stat .fig sup{font-size:.4em;font-weight:700;letter-spacing:0;vertical-align:super;\n  margin-left:2px;color:var(--steel)}\n.stat .lab{margin-top:14px;font-size:14px;color:var(--steel);line-height:1.45}\n.stat:first-child .fig{color:#8054FF}\n\n.bh{max-width:26ch;margin-bottom:50px}\n.bh h2{font-size:clamp(30px,5vw,52px)}\n.bens{display:grid;grid-template-columns:repeat(2,1fr);gap:42px 56px}\n.ben h3{font-size:20px;margin-bottom:10px;letter-spacing:-.02em;line-height:1.15}\n.ben p{color:var(--steel);font-size:15px}\n.ben .mono{display:block;color:var(--dim);margin-bottom:15px;font-size:10px}\n\n.flip{background:var(--light);color:#0B0B0B;border-bottom:0}\n.flip .fin{display:grid;grid-template-columns:1.02fr 1fr;gap:60px;align-items:start}\n.flip svg{width:46px;height:46px;color:#0B0B0B;display:block;margin-bottom:32px}\n.flip h2{font-size:clamp(30px,5.4vw,56px);max-width:16ch}\n.flip .s{margin-top:20px;color:#4B4F4C;max-width:42ch;font-size:16px}\n.chk{list-style:none}\n.chk li{padding:16px 0;border-top:1px solid rgba(0,0,0,.14)}\n.chk li:last-child{border-bottom:1px solid rgba(0,0,0,.14)}\n.chk b{display:block;font-weight:700;font-size:16px;letter-spacing:-.015em;margin-bottom:3px}\n.chk span{color:#5A5E5B;font-size:14.5px;line-height:1.55}\n\n.apps{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--hair);margin-top:46px}\n.app{background:#000;padding:26px 22px 28px}\n.app .mono{font-size:10px;margin-bottom:14px;display:block}\n.app.on .mono{color:#3BE8E0}.app.dev .mono{color:var(--steel)}.app.soon .mono{color:var(--dim)}\n.app b{display:block;font-weight:700;font-size:16.5px;letter-spacing:-.015em;line-height:1.2}\n.app em{display:block;font-style:normal;font-family:\"IBM Plex Mono\",monospace;\n  font-size:12px;color:var(--dim);margin-top:7px}\n\n.close{padding:104px 34px 116px}\n.close h2{font-size:clamp(34px,7.4vw,84px);max-width:22ch}\n.close h2 span{color:var(--dim)}\n.row{margin-top:48px;display:flex;gap:20px;align-items:center;flex-wrap:wrap}\n.cta{display:inline-block;background:var(--alu);color:#000;text-decoration:none;\n  font-weight:900;font-size:16px;padding:18px 32px;border:0;cursor:pointer;\n  font-family:inherit;letter-spacing:-.01em;transition:background .2s}\n.cta:hover{background:#fff}\n.row .mono{color:var(--dim)}\n.ft{padding:22px 34px;display:flex;justify-content:space-between;gap:12px 26px;flex-wrap:wrap}\n.ft .mono{color:var(--dim);font-size:10px}\n\n@media (max-width:900px){\n  .tbody,.bens,.flip .fin{grid-template-columns:1fr;gap:38px}\n  .apps{grid-template-columns:1fr}\n  .stats{grid-template-columns:repeat(2,1fr)}\n  .stat{padding:26px 20px 28px}\n  .stat:nth-child(2n){border-right:0}\n  sec,.hero,.close,.bar,.ft{padding-left:20px;padding-right:20px}\n  sec{padding-top:64px;padding-bottom:64px}\n  .hero{padding-top:70px;padding-bottom:64px}\n  .close{padding-top:74px;padding-bottom:84px}\n  .stage{max-width:310px}\n  .ctrl{width:100%}\n  .btn2{flex:1}\n}\n@media (prefers-reduced-motion:reduce){\n  .torch,.hint,.it,.uvwrap{transition:none}\n}\n`,\n\n  render(d2) {\n    const found = d2.state.found || {};\n    const nFound = Object.keys(found).length;\n    const all = !!d2.state.all;\n\n    const segs = (mark) => SEGS.map((s, i) =>\n      '<path class=\"seg' + (mark && found[i] ? ' got' : '') + '\" d=\"' + s.d + '\"/>'\n    ).join('');\n\n    const ring = (cls, mark) =>\n      '<svg class=\"' + cls + '\" viewBox=\"0 0 100 100\" aria-hidden=\"true\">' +\n      '<circle class=\"hub\" cx=\"50\" cy=\"50\" r=\"' + HUB + '\"/>' + segs(mark) + '</svg>';\n\n    const motes = '<div class=\"motes\" data-d2-static>' +\n      MOTES.map(() => '<div class=\"mote\"></div>').join('') + '</div>';\n\n    const items = PARTS.map((p, i) =>\n      '<div class=\"it' + (all || found[i] ? ' got' : '') + '\" data-key=\"p' + i + '\">' +\n      '<i>' + (i + 1 < 10 ? '0' : '') + (i + 1) + '</i>' +\n      '<div><b>' + esc(p[0]) + '</b><span>' + esc(p[1]) + '</span></div></div>'\n    ).join('');\n\n    const bens = BENS.map((b, i) =>\n      '<div class=\"ben\"><span class=\"mono\">0' + (i + 1) + '</span>' +\n      '<h3>' + esc(b[0]) + '</h3><p>' + esc(b[1]) + '</p></div>'\n    ).join('');\n\n    const apps = APPS.map((a) =>\n      '<div class=\"app ' + a[0] + '\"><span class=\"mono\">' + esc(a[1]) + '</span>' +\n      '<b>' + esc(a[2]) + '</b><em>' + esc(a[3]) + '</em></div>'\n    ).join('');\n\n    const chks = CHECKS.map((c) =>\n      '<li><b>' + esc(c[0]) + '</b><span>' + esc(c[1]) + '</span></li>'\n    ).join('');\n\n    return `<div class=\"wrap\">\n  <div class=\"in\">\n\n    <div class=\"bar\">\n      <div class=\"l\">${markSvg('#000', '')}<div class=\"mono\">Machines &bull; Objects &bull; Ideas</div></div>\n      <div class=\"mono\">Since 2016</div>\n    </div>\n\n    <div class=\"hero\">\n      <div class=\"mono\">Sistema benta&middot;i &nbsp;/&nbsp; Inje&ccedil;&atilde;o eletr&ocirc;nica para cl&aacute;ssicas carburadas</div>\n      <h1>Nada aparece.<br><span>Tudo responde.</span></h1>\n      <p>Oito pe&ccedil;as escondidas debaixo do banco transformam uma carburada dos anos 80 em uma moto que liga na primeira, em qualquer temperatura, com qualquer combust&iacute;vel. <b>Por fora, nada mudou.</b></p>\n    </div>\n\n    <sec>\n      <div class=\"th\">\n        <div>\n          <h2>A camada invis&iacute;vel</h2>\n          <div class=\"sub\">Por fora, a moto que voc&ecirc; conhece. Por dentro, o sistema inteiro. Passe a luz negra sobre a marca e ache as oito pe&ccedil;as.</div>\n        </div>\n        <div class=\"ctrl\">\n          <button class=\"btn2 j-all\" aria-pressed=\"${all ? 'true' : 'false'}\">Acender tudo</button>\n          <button class=\"btn2 j-reset\">Recome&ccedil;ar</button>\n        </div>\n      </div>\n\n      <div class=\"tbody\">\n        <div class=\"stagewrap\">\n          <div class=\"stage${all ? ' all' : ''}\">\n            ${ring('base', false)}\n            <div class=\"uvwrap\">${ring('glow', true)}${ring('uv', true)}${motes}</div>\n            <div class=\"torch\"></div>\n            <div class=\"mono hint\">Arraste a luz negra</div>\n          </div>\n        </div>\n        <div>\n          <div class=\"count\"><b>${all ? 8 : nFound}</b><div class=\"mono\">de 8 pe&ccedil;as reveladas</div></div>\n          <div class=\"items\">${items}</div>\n        </div>\n      </div>\n\n      <p class=\"note\">Oito segmentos. Oito pe&ccedil;as. Cada aplica&ccedil;&atilde;o &eacute; desenvolvida uma vez, medida em dinam&ocirc;metro e instalada quantas vezes precisar.</p>\n    </sec>\n\n    <sec>\n      <div class=\"stats\">\n        <div class=\"stat\"><div class=\"fig\">3<sup>s</sup></div><div class=\"lab\">Da chave girada at&eacute; andar. Motor frio, qualquer temperatura.</div></div>\n        <div class=\"stat\"><div class=\"fig\">0</div><div class=\"lab\">Regulagens de carburador por ano. N&atilde;o existe mais o que regular.</div></div>\n        <div class=\"stat\"><div class=\"fig\">8</div><div class=\"lab\">Pe&ccedil;as instaladas. Nenhuma delas aparece por fora.</div></div>\n        <div class=\"stat\"><div class=\"fig\">100<sup>%</sup></div><div class=\"lab\">Revers&iacute;vel. Os originais voltam numa caixa, etiquetados.</div></div>\n      </div>\n    </sec>\n\n    <sec>\n      <div class=\"bh\"><h2>O que o dono sente</h2></div>\n      <div class=\"bens\">${bens}</div>\n    </sec>\n\n\n\n    <sec class=\"flip\">\n      <div class=\"fin\">\n        <div>\n          ${markSvg('#F2F3F1', '')}\n          <h2>E continua sendo ela.</h2>\n          <p class=\"s\">Essa &eacute; a primeira coisa que a gente resolve, n&atilde;o a &uacute;ltima. Quem tem cl&aacute;ssica n&atilde;o quer uma moto nova &mdash; quer a dele funcionando.</p>\n        </div>\n        <ul class=\"chk\">${chks}</ul>\n      </div>\n    </sec>\n\n    <sec>\n      <div class=\"bh\"><h2>Sua moto j&aacute; est&aacute; na lista?</h2></div>\n      <div class=\"apps\">${apps}</div>\n      <p class=\"note\">Se a sua arquitetura ainda n&atilde;o tem kit, voc&ecirc; entra na fila de desenvolvimento &mdash; e sai com a primeira unidade.</p>\n    </sec>\n\n    <div class=\"close\">\n      <h2>Nove anos fazendo 1/1.<br><span>Agora em s&eacute;rie.</span></h2>\n      <div class=\"row\">\n        <button class=\"cta j-cta\">Consultar minha moto</button>\n        <div class=\"mono\">Instala&ccedil;&atilde;o com laudo e garantia de calibra&ccedil;&atilde;o</div>\n      </div>\n    </div>\n\n    <div class=\"ft\">\n      <div class=\"mono\">benta&middot;i &middot; Linha Cl&aacute;ssicos</div>\n      <div class=\"mono\">Machines &bull; Objects &bull; Ideas</div>\n    </div>\n\n  </div>\n</div>`;\n  },\n\n  mounted(d2, root) {\n    try {\n      const href = 'https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Zen+Kaku+Gothic+New:wght@400;500;700;900&display=swap';\n      if (typeof document !== 'undefined' && !document.querySelector('link[data-serie-cl-font]')) {\n        const l = document.createElement('link');\n        l.rel = 'stylesheet'; l.href = href; l.setAttribute('data-serie-cl-font', '1');\n        document.head.appendChild(l);\n      }\n    } catch (e) { /* non-fatal */ }\n\n    const reduce = typeof window !== 'undefined' &&\n      window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n    let sx = -999, sy = -999, tx = -999, ty = -999;\n    let rect = null, R = 120, lit = false, userOn = false, intro = 0;\n\n    function measure() {\n      const st = d2.$('.stage');\n      if (!st) return;\n      const r = st.getBoundingClientRect();\n      if (r.width > 0) { rect = r; R = Math.max(78, r.width * 0.29); }\n    }\n    measure();\n\n    function paint() {\n      const uv = d2.$('.uvwrap'), t = d2.$('.torch'), st = d2.$('.stage');\n      if (uv) {\n        uv.style.setProperty('--tx', sx + 'px');\n        uv.style.setProperty('--ty', sy + 'px');\n        uv.style.setProperty('--r', R + 'px');\n      }\n      if (t) {\n        t.style.width = (R * 2) + 'px'; t.style.height = (R * 2) + 'px';\n        t.style.transform = 'translate3d(' + (sx - R) + 'px,' + (sy - R) + 'px,0)';\n      }\n      if (st && lit && !st.classList.contains('lit')) st.classList.add('lit');\n    }\n\n    function checkFound() {\n      if (!userOn || !rect) return;\n      const cur = d2.state.found || {};\n      let hit = false;\n      const next = {};\n      Object.keys(cur).forEach((k) => { next[k] = true; });\n      for (let i = 0; i < SEGS.length; i++) {\n        if (next[i]) continue;\n        const px = SEGS[i].c[0] / 100 * rect.width;\n        const py = SEGS[i].c[1] / 100 * rect.height;\n        const dx = px - sx, dy = py - sy;\n        if (Math.sqrt(dx * dx + dy * dy) < R * 0.60) { next[i] = true; hit = true; }\n      }\n      if (hit) d2.setState({ found: next });\n    }\n\n    function drift(t) {\n      if (!rect) return;\n      const nodes = d2.$$('.mote');\n      for (let i = 0; i < nodes.length && i < MOTES.length; i++) {\n        const m = MOTES[i];\n        const bob = Math.sin((t / 1000) * m.sp + m.ph) * 9;\n        const px = m.x / 100 * rect.width;\n        const py = m.y / 100 * rect.height + bob;\n        nodes[i].style.transform = 'translate3d(' + px + 'px,' + py + 'px,0)';\n        nodes[i].style.opacity = lit ? '0.9' : '0';\n      }\n    }\n\n    const introPath = [[0.16, 0.20], [0.82, 0.28], [0.74, 0.80], [0.22, 0.72], [0.50, 0.50]];\n    let t0 = null;\n\n    d2.raf((t) => {\n      if (!rect || rect.width === 0) { measure(); return; }\n      if (t0 === null) t0 = t;\n\n      if (!userOn && !reduce && intro < 1) {\n        const dur = 2600;\n        const p = Math.min((t - t0) / dur, 1);\n        intro = p;\n        lit = true;\n        const seg = p * (introPath.length - 1);\n        const i = Math.min(Math.floor(seg), introPath.length - 2);\n        const f = seg - i;\n        const ease = f * f * (3 - 2 * f);\n        tx = (introPath[i][0] + (introPath[i + 1][0] - introPath[i][0]) * ease) * rect.width;\n        ty = (introPath[i][1] + (introPath[i + 1][1] - introPath[i][1]) * ease) * rect.height;\n        if (p >= 1) { userOn = true; }\n      }\n\n      if (sx < -900) { sx = tx; sy = ty; }\n      sx += (tx - sx) * 0.18;\n      sy += (ty - sy) * 0.18;\n      paint();\n      drift(t);\n      checkFound();\n    });\n\n    if (reduce) { userOn = true; d2.setState({ all: true }); }\n\n    function move(e) {\n      measure();\n      if (!rect) return;\n      tx = e.clientX - rect.left;\n      ty = e.clientY - rect.top;\n      lit = true; userOn = true; intro = 1;\n    }\n\n    d2.on('.stage', 'pointermove', (e) => { move(e); });\n    d2.on('.stage', 'pointerdown', (e) => { move(e); });\n    d2.on(window, 'resize', () => { rect = null; measure(); });\n\n    d2.on('.j-all', 'click', () => {\n      const on = !d2.state.all;\n      d2.setState({ all: on, found: on ? { 0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1 } : {} });\n      userOn = true; intro = 1;\n    });\n    d2.on('.j-reset', 'click', () => {\n      d2.setState({ all: false, found: {} });\n      lit = false; userOn = false; intro = 0; t0 = null;\n      sx = -999; sy = -999; tx = -999; ty = -999;\n      const st = d2.$('.stage'); if (st) st.classList.remove('lit');\n    });\n    d2.on('.j-cta', 'click', () => { d2.emit('onConsult', { source: 'serie-cl' }); });\n  },\n\n  updated(d2) {\n    const st = d2.$('.stage');\n    if (st && !st.classList.contains('lit')) return;\n  }\n};"}},"onConsult":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"onConsult"}}}}}}}},"__d2PrevCode":{"code":"const C = 50, RI = 28.75, RO = 48.25, HUB = 24.5, GAP = 4.4, RMID = 38.5;\n\nfunction pt(r, deg) {\n  const a = (deg - 90) * Math.PI / 180;\n  return [C + r * Math.cos(a), C + r * Math.sin(a)];\n}\nfunction segPath(i) {\n  const a1 = i * 45 + GAP, a2 = (i + 1) * 45 - GAP;\n  const o1 = pt(RO, a1), o2 = pt(RO, a2), i2 = pt(RI, a2), i1 = pt(RI, a1);\n  const f = (n) => n.toFixed(2);\n  return 'M' + f(o1[0]) + ' ' + f(o1[1]) +\n    'A' + RO + ' ' + RO + ' 0 0 1 ' + f(o2[0]) + ' ' + f(o2[1]) +\n    'L' + f(i2[0]) + ' ' + f(i2[1]) +\n    'A' + RI + ' ' + RI + ' 0 0 0 ' + f(i1[0]) + ' ' + f(i1[1]) + 'Z';\n}\nconst SEGS = [0, 1, 2, 3, 4, 5, 6, 7].map((i) => ({ d: segPath(i), c: pt(RMID, i * 45 + 22.5) }));\n\nconst PARTS = [\n  ['Coletor usinado', 'Flange de aluminio feita na casa, casa os corpos ao cabecote original.'],\n  ['Corpos de borboleta', 'Admissao individual por cilindro, diametro escolhido por aplicacao.'],\n  ['Bomba no tanque', 'Flange soldada por dentro. Por fora o tanque continua igual.'],\n  ['Roda fonica', 'Referencia de virabrequim. E como o sistema sabe onde o motor esta.'],\n  ['Chicote de aplicacao', 'Pronto, identificado, conectores selados. Roteado pra esse chassi.'],\n  ['Central programavel', 'Escondida sob o banco. Sem tela, sem nada aparecendo.'],\n  ['Ignicao de alta energia', 'Centelha forte e no ponto, em toda a faixa de giro.'],\n  ['Mapa calibrado', 'Levantado em dinamometro. A moto sai medida, nao estimada.']\n];\n\nconst BENS = [\n  ['Liga na primeira. Sempre.', 'Sem torneira, sem afogador, sem segurar o acelerador esperando aquecer. Frio, chuva, ou um mes parada na garagem. Aperta o botao e anda.'],\n  ['Nunca mais regular carburador', 'Fim do sincronismo, da cuba suja, do sabado perdido na oficina. A moto deixa de ser um projeto permanente e volta a ser transporte.'],\n  ['Qualquer combustivel, qualquer altitude', 'Posto ruim na estrada, etanol, subida de serra. O sistema le e corrige em tempo real. Viajar deixa de ser aposta.'],\n  ['O torque para de te assustar', 'Controle de tracao e de empinamento monitorando roda e inclinacao. Em moto antiga, com pneu frio ou asfalto molhado, e o que separa o susto da queda.']\n];\n\nconst APPS = [\n  ['on', 'Pronta', 'benta-i 750 Four', '4 cil. linha / DOHC / ar'],\n  ['on', 'Pronta', 'benta-i 750 S', '4 cil. linha / SOHC / ar'],\n  ['dev', 'Em desenvolvimento', 'benta-i 450 Twin', '2 cil. paralelo / ar'],\n  ['dev', 'Em desenvolvimento', 'benta-i V-Twin', '600-1100 cm3 / ar'],\n  ['soon', 'Fila', 'benta-i 600 Trail', 'monocilindrico'],\n  ['soon', 'Fila', 'benta-i 1100 Four', '4 cil. linha / liquida']\n];\n\nconst CHECKS = [\n  ['Nada a vista', 'Modulo sob o banco. Sem tela, sem display, sem cabo aparente.'],\n  ['Chassi intacto', 'Sem corte, sem solda estrutural, sem furo novo em peca original.'],\n  ['Reversivel', 'Os componentes originais voltam pra voce numa caixa, etiquetados.'],\n  ['Valor preservado', 'Na venda, o comprador escolhe: injetada ou original.']\n];\n\nconst MOTES = [];\nfor (let i = 0; i < 18; i++) {\n  const a = (i * 137.508) % 360;\n  const r = 8 + ((i * 53) % 40);\n  const p = pt(r, a);\n  MOTES.push({ x: p[0], y: p[1], sp: 0.25 + ((i * 7) % 10) / 22, ph: (i * 41) % 100 });\n}\n\nfunction markSvg(gapColor, cls) {\n  return '<svg class=\"' + cls + '\" viewBox=\"0 0 100 100\" aria-hidden=\"true\">' +\n    '<circle cx=\"50\" cy=\"50\" r=\"' + HUB + '\" fill=\"currentColor\"/>' +\n    '<circle cx=\"50\" cy=\"50\" r=\"38.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"19.5\"/>' +\n    '<rect x=\"47.4\" y=\"0\" width=\"5.2\" height=\"100\" fill=\"' + gapColor + '\"/>' +\n    '<rect x=\"47.4\" y=\"0\" width=\"5.2\" height=\"100\" fill=\"' + gapColor + '\" transform=\"rotate(45 50 50)\"/>' +\n    '<rect x=\"47.4\" y=\"0\" width=\"5.2\" height=\"100\" fill=\"' + gapColor + '\" transform=\"rotate(90 50 50)\"/>' +\n    '<rect x=\"47.4\" y=\"0\" width=\"5.2\" height=\"100\" fill=\"' + gapColor + '\" transform=\"rotate(135 50 50)\"/>' +\n    '</svg>';\n}\n\nfunction esc(s) { return String(s).replace(/&/g, '&amp;').replace(/</g, '&lt;'); }\n\nexport default {\n  css: `\n:host{display:block}\n*{box-sizing:border-box;margin:0;padding:0}\n.wrap{\n  --void:#000; --alu:#DEE1E3; --steel:#82878C; --dim:#4A4E52;\n  --hair:rgba(222,225,227,.14); --light:#F2F3F1;\n  background:#000; color:var(--alu); height:100%; overflow-y:auto;\n  -webkit-overflow-scrolling:touch;\n  font-family:\"Zen Kaku Gothic New\",ui-sans-serif,-apple-system,\"Helvetica Neue\",Arial,sans-serif;\n  font-size:16px; line-height:1.62; font-weight:400;\n}\n.in{max-width:1080px;margin:0 auto}\n.mono{font-family:\"IBM Plex Mono\",ui-monospace,SFMono-Regular,Menlo,monospace;\n  font-size:11px;letter-spacing:.2em;text-transform:uppercase}\nh1,h2,h3{font-weight:900;letter-spacing:-.03em;line-height:1}\nsec{display:block;padding:92px 34px;border-bottom:1px solid var(--hair)}\n\n.bar{display:flex;align-items:center;justify-content:space-between;gap:18px;\n  padding:20px 34px;border-bottom:1px solid var(--hair);flex-wrap:wrap}\n.bar .l{display:flex;align-items:center;gap:15px}\n.bar svg{width:26px;height:26px;color:var(--alu);display:block}\n.bar .mono{color:var(--steel)}\n\n.hero{padding:104px 34px 96px;border-bottom:1px solid var(--hair)}\n.hero .mono{color:var(--steel);margin-bottom:38px}\n.hero h1{font-size:clamp(50px,11.5vw,122px)}\n.hero h1 span{color:var(--dim)}\n.hero p{margin-top:42px;max-width:50ch;font-size:clamp(16.5px,2.1vw,19px);color:var(--steel)}\n.hero p b{color:var(--alu);font-weight:700}\n\n.th{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap;margin-bottom:20px}\n.th h2{font-size:clamp(30px,5vw,52px);max-width:20ch}\n.th .sub{margin-top:16px;color:var(--steel);max-width:42ch;font-size:15.5px}\n.ctrl{display:flex;gap:10px;align-items:center;flex:none}\n.btn2{background:none;border:1px solid var(--hair);color:var(--steel);cursor:pointer;\n  font-family:inherit;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;\n  padding:12px 16px;transition:border-color .25s,color .25s}\n.btn2:hover{border-color:#8054FF;color:var(--alu)}\n.btn2:focus-visible{outline:2px solid #8054FF;outline-offset:2px}\n.btn2[aria-pressed=\"true\"]{border-color:#8054FF;color:#3BE8E0}\n\n.tbody{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;margin-top:34px}\n.stagewrap{display:flex;justify-content:center}\n.stage{position:relative;width:100%;max-width:430px;aspect-ratio:1;touch-action:none;\n  cursor:crosshair;user-select:none;-webkit-user-select:none}\n.stage svg{position:absolute;inset:0;width:100%;height:100%;display:block}\n.base .seg,.base .hub{fill:#2A2E32}\n.uvwrap{position:absolute;inset:0;\n  -webkit-mask-image:radial-gradient(circle var(--r,0px) at var(--tx,-999px) var(--ty,-999px),#000 0%,#000 42%,rgba(0,0,0,.55) 68%,transparent 100%);\n  mask-image:radial-gradient(circle var(--r,0px) at var(--tx,-999px) var(--ty,-999px),#000 0%,#000 42%,rgba(0,0,0,.55) 68%,transparent 100%);\n  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}\n.stage.all .uvwrap{-webkit-mask-image:none;mask-image:none}\n.uvwrap .hub{fill:#3BE8E0}\n.uvwrap .seg{fill:#8054FF}\n.uvwrap .seg.got{fill:#3BE8E0}\n.glow{position:absolute;inset:0;filter:blur(16px);opacity:.75}\n.glow .seg{fill:#8054FF}.glow .hub{fill:#3BE8E0}\n.torch{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;\n  border-radius:50%;mix-blend-mode:screen;opacity:0;transition:opacity .5s;\n  background:radial-gradient(circle,rgba(128,84,255,.30) 0%,rgba(128,84,255,.12) 45%,transparent 72%)}\n.stage.lit .torch{opacity:1}\n.stage.all .torch{opacity:0}\n.motes{position:absolute;inset:0;pointer-events:none}\n.mote{position:absolute;width:3px;height:3px;border-radius:50%;background:#3BE8E0;\n  box-shadow:0 0 6px #3BE8E0;opacity:0;will-change:transform,opacity}\n.hint{position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);\n  color:var(--dim);white-space:nowrap;transition:opacity .4s}\n.stage.lit .hint,.stage.all .hint{opacity:0}\n\n.count{display:flex;align-items:baseline;gap:12px;margin-bottom:18px}\n.count b{font-size:34px;font-weight:900;letter-spacing:-.03em;line-height:1;color:#3BE8E0}\n.count .mono{color:var(--dim)}\n.items{display:block}\n.it{display:grid;grid-template-columns:24px 1fr;gap:13px;padding:12px 0;\n  border-bottom:1px solid var(--hair);transition:border-color .4s}\n.it i{font-style:normal;font-family:\"IBM Plex Mono\",monospace;font-size:11px;color:var(--dim);padding-top:3px}\n.it b{display:block;font-weight:700;font-size:15px;color:var(--dim);letter-spacing:-.01em;transition:color .4s}\n.it span{display:block;font-size:13px;color:#33373B;line-height:1.5;margin-top:1px;transition:color .4s}\n.it.got{border-color:rgba(128,84,255,.45)}\n.it.got i{color:#3BE8E0}\n.it.got b{color:var(--alu)}\n.it.got span{color:var(--steel)}\n.note{margin-top:40px;padding-top:20px;border-top:1px solid var(--hair);\n  font-size:14px;color:var(--dim);max-width:74ch}\n\n.stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--hair)}\n.stat{padding:34px 22px 36px;border-bottom:1px solid var(--hair);\n  border-right:1px solid var(--hair)}\n.stat:last-child{border-right:0}\n.stat .fig{font-weight:900;font-size:clamp(38px,5.6vw,58px);letter-spacing:-.045em;\n  line-height:.9;color:var(--alu)}\n.stat .fig sup{font-size:.4em;font-weight:700;letter-spacing:0;vertical-align:super;\n  margin-left:2px;color:var(--steel)}\n.stat .lab{margin-top:14px;font-size:14px;color:var(--steel);line-height:1.45}\n.stat:first-child .fig{color:#8054FF}\n\n.bh{max-width:26ch;margin-bottom:50px}\n.bh h2{font-size:clamp(30px,5vw,52px)}\n.bens{display:grid;grid-template-columns:repeat(2,1fr);gap:42px 56px}\n.ben h3{font-size:20px;margin-bottom:10px;letter-spacing:-.02em;line-height:1.15}\n.ben p{color:var(--steel);font-size:15px}\n.ben .mono{display:block;color:var(--dim);margin-bottom:15px;font-size:10px}\n\n.flip{background:var(--light);color:#0B0B0B;border-bottom:0}\n.flip .fin{display:grid;grid-template-columns:1.02fr 1fr;gap:60px;align-items:start}\n.flip svg{width:46px;height:46px;color:#0B0B0B;display:block;margin-bottom:32px}\n.flip h2{font-size:clamp(30px,5.4vw,56px);max-width:16ch}\n.flip .s{margin-top:20px;color:#4B4F4C;max-width:42ch;font-size:16px}\n.chk{list-style:none}\n.chk li{padding:16px 0;border-top:1px solid rgba(0,0,0,.14)}\n.chk li:last-child{border-bottom:1px solid rgba(0,0,0,.14)}\n.chk b{display:block;font-weight:700;font-size:16px;letter-spacing:-.015em;margin-bottom:3px}\n.chk span{color:#5A5E5B;font-size:14.5px;line-height:1.55}\n\n.apps{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--hair);margin-top:46px}\n.app{background:#000;padding:26px 22px 28px}\n.app .mono{font-size:10px;margin-bottom:14px;display:block}\n.app.on .mono{color:#3BE8E0}.app.dev .mono{color:var(--steel)}.app.soon .mono{color:var(--dim)}\n.app b{display:block;font-weight:700;font-size:16.5px;letter-spacing:-.015em;line-height:1.2}\n.app em{display:block;font-style:normal;font-family:\"IBM Plex Mono\",monospace;\n  font-size:12px;color:var(--dim);margin-top:7px}\n\n.close{padding:104px 34px 116px}\n.close h2{font-size:clamp(34px,7.4vw,84px);max-width:22ch}\n.close h2 span{color:var(--dim)}\n.row{margin-top:48px;display:flex;gap:20px;align-items:center;flex-wrap:wrap}\n.cta{display:inline-block;background:var(--alu);color:#000;text-decoration:none;\n  font-weight:900;font-size:16px;padding:18px 32px;border:0;cursor:pointer;\n  font-family:inherit;letter-spacing:-.01em;transition:background .2s}\n.cta:hover{background:#fff}\n.row .mono{color:var(--dim)}\n.ft{padding:22px 34px;display:flex;justify-content:space-between;gap:12px 26px;flex-wrap:wrap}\n.ft .mono{color:var(--dim);font-size:10px}\n\n@media (max-width:900px){\n  .tbody,.bens,.flip .fin{grid-template-columns:1fr;gap:38px}\n  .apps{grid-template-columns:1fr}\n  .stats{grid-template-columns:repeat(2,1fr)}\n  .stat{padding:26px 20px 28px}\n  .stat:nth-child(2n){border-right:0}\n  sec{padding-top:64px;padding-bottom:64px}\n  .hero{padding-top:70px;padding-bottom:64px}\n  .close{padding-top:74px;padding-bottom:84px}\n  .stage{max-width:310px}\n  .ctrl{width:100%}\n  .btn2{flex:1}\n}\n@media (prefers-reduced-motion:reduce){\n  .torch,.hint,.it,.uvwrap{transition:none}\n}\n`,\n\n  render(d2) {\n    const found = d2.state.found || {};\n    const nFound = Object.keys(found).length;\n    const all = !!d2.state.all;\n\n    const segs = (mark) => SEGS.map((s, i) =>\n      '<path class=\"seg' + (mark && found[i] ? ' got' : '') + '\" d=\"' + s.d + '\"/>'\n    ).join('');\n\n    const ring = (cls, mark) =>\n      '<svg class=\"' + cls + '\" viewBox=\"0 0 100 100\" aria-hidden=\"true\">' +\n      '<circle class=\"hub\" cx=\"50\" cy=\"50\" r=\"' + HUB + '\"/>' + segs(mark) + '</svg>';\n\n    const motes = '<div class=\"motes\" data-d2-static>' +\n      MOTES.map(() => '<div class=\"mote\"></div>').join('') + '</div>';\n\n    const items = PARTS.map((p, i) =>\n      '<div class=\"it' + (all || found[i] ? ' got' : '') + '\" data-key=\"p' + i + '\">' +\n      '<i>' + (i + 1 < 10 ? '0' : '') + (i + 1) + '</i>' +\n      '<div><b>' + esc(p[0]) + '</b><span>' + esc(p[1]) + '</span></div></div>'\n    ).join('');\n\n    const bens = BENS.map((b, i) =>\n      '<div class=\"ben\"><span class=\"mono\">0' + (i + 1) + '</span>' +\n      '<h3>' + esc(b[0]) + '</h3><p>' + esc(b[1]) + '</p></div>'\n    ).join('');\n\n    const apps = APPS.map((a) =>\n      '<div class=\"app ' + a[0] + '\"><span class=\"mono\">' + esc(a[1]) + '</span>' +\n      '<b>' + esc(a[2]) + '</b><em>' + esc(a[3]) + '</em></div>'\n    ).join('');\n\n    const chks = CHECKS.map((c) =>\n      '<li><b>' + esc(c[0]) + '</b><span>' + esc(c[1]) + '</span></li>'\n    ).join('');\n\n    return `<div class=\"wrap\">\n  <div class=\"in\">\n\n    <div class=\"bar\">\n      <div class=\"l\">${markSvg('#000', '')}<div class=\"mono\">Machines &bull; Objects &bull; Ideas</div></div>\n      <div class=\"mono\">Since 2016</div>\n    </div>\n\n    <div class=\"hero\">\n      <div class=\"mono\">Sistema benta&middot;i &nbsp;/&nbsp; Inje&ccedil;&atilde;o eletr&ocirc;nica para cl&aacute;ssicas carburadas</div>\n      <h1>Nada aparece.<br><span>Tudo responde.</span></h1>\n      <p>Oito pe&ccedil;as escondidas debaixo do banco transformam uma carburada dos anos 80 em uma moto que liga na primeira, em qualquer temperatura, com qualquer combust&iacute;vel. <b>Por fora, nada mudou.</b></p>\n    </div>\n\n    <sec>\n      <div class=\"th\">\n        <div>\n          <h2>A camada invis&iacute;vel</h2>\n          <div class=\"sub\">Por fora, a moto que voc&ecirc; conhece. Por dentro, o sistema inteiro. Passe a luz negra sobre a marca e ache as oito pe&ccedil;as.</div>\n        </div>\n        <div class=\"ctrl\">\n          <button class=\"btn2 j-all\" aria-pressed=\"${all ? 'true' : 'false'}\">Acender tudo</button>\n          <button class=\"btn2 j-reset\">Recome&ccedil;ar</button>\n        </div>\n      </div>\n\n      <div class=\"tbody\">\n        <div class=\"stagewrap\">\n          <div class=\"stage${all ? ' all' : ''}\">\n            ${ring('base', false)}\n            <div class=\"uvwrap\">${ring('glow', true)}${ring('uv', true)}${motes}</div>\n            <div class=\"torch\"></div>\n            <div class=\"mono hint\">Arraste a luz negra</div>\n          </div>\n        </div>\n        <div>\n          <div class=\"count\"><b>${all ? 8 : nFound}</b><div class=\"mono\">de 8 pe&ccedil;as reveladas</div></div>\n          <div class=\"items\">${items}</div>\n        </div>\n      </div>\n\n      <p class=\"note\">Oito segmentos. Oito pe&ccedil;as. Cada aplica&ccedil;&atilde;o &eacute; desenvolvida uma vez, medida em dinam&ocirc;metro e instalada quantas vezes precisar.</p>\n    </sec>\n\n    <sec>\n      <div class=\"stats\">\n        <div class=\"stat\"><div class=\"fig\">3<sup>s</sup></div><div class=\"lab\">Da chave girada at&eacute; andar. Motor frio, qualquer temperatura.</div></div>\n        <div class=\"stat\"><div class=\"fig\">0</div><div class=\"lab\">Regulagens de carburador por ano. N&atilde;o existe mais o que regular.</div></div>\n        <div class=\"stat\"><div class=\"fig\">8</div><div class=\"lab\">Pe&ccedil;as instaladas. Nenhuma delas aparece por fora.</div></div>\n        <div class=\"stat\"><div class=\"fig\">100<sup>%</sup></div><div class=\"lab\">Revers&iacute;vel. Os originais voltam numa caixa, etiquetados.</div></div>\n      </div>\n    </sec>\n\n    <sec>\n      <div class=\"bh\"><h2>O que o dono sente</h2></div>\n      <div class=\"bens\">${bens}</div>\n    </sec>\n\n\n\n    <sec class=\"flip\">\n      <div class=\"fin\">\n        <div>\n          ${markSvg('#F2F3F1', '')}\n          <h2>E continua sendo ela.</h2>\n          <p class=\"s\">Essa &eacute; a primeira coisa que a gente resolve, n&atilde;o a &uacute;ltima. Quem tem cl&aacute;ssica n&atilde;o quer uma moto nova &mdash; quer a dele funcionando.</p>\n        </div>\n        <ul class=\"chk\">${chks}</ul>\n      </div>\n    </sec>\n\n    <sec>\n      <div class=\"bh\"><h2>Sua moto j&aacute; est&aacute; na lista?</h2></div>\n      <div class=\"apps\">${apps}</div>\n      <p class=\"note\">Se a sua arquitetura ainda n&atilde;o tem kit, voc&ecirc; entra na fila de desenvolvimento &mdash; e sai com a primeira unidade.</p>\n    </sec>\n\n    <div class=\"close\">\n      <h2>Nove anos fazendo 1/1.<br><span>Agora em s&eacute;rie.</span></h2>\n      <div class=\"row\">\n        <button class=\"cta j-cta\">Consultar minha moto</button>\n        <div class=\"mono\">Instala&ccedil;&atilde;o com laudo e garantia de calibra&ccedil;&atilde;o</div>\n      </div>\n    </div>\n\n    <div class=\"ft\">\n      <div class=\"mono\">benta&middot;i &middot; Linha Cl&aacute;ssicos</div>\n      <div class=\"mono\">Machines &bull; Objects &bull; Ideas</div>\n    </div>\n\n  </div>\n</div>`;\n  },\n\n  mounted(d2, root) {\n    try {\n      const href = 'https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Zen+Kaku+Gothic+New:wght@400;500;700;900&display=swap';\n      if (typeof document !== 'undefined' && !document.querySelector('link[data-serie-cl-font]')) {\n        const l = document.createElement('link');\n        l.rel = 'stylesheet'; l.href = href; l.setAttribute('data-serie-cl-font', '1');\n        document.head.appendChild(l);\n      }\n    } catch (e) { /* non-fatal */ }\n\n    const reduce = typeof window !== 'undefined' &&\n      window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n    let sx = -999, sy = -999, tx = -999, ty = -999;\n    let rect = null, R = 120, lit = false, userOn = false, intro = 0;\n\n    function measure() {\n      const st = d2.$('.stage');\n      if (!st) return;\n      const r = st.getBoundingClientRect();\n      if (r.width > 0) { rect = r; R = Math.max(78, r.width * 0.29); }\n    }\n    measure();\n\n    function paint() {\n      const uv = d2.$('.uvwrap'), t = d2.$('.torch'), st = d2.$('.stage');\n      if (uv) {\n        uv.style.setProperty('--tx', sx + 'px');\n        uv.style.setProperty('--ty', sy + 'px');\n        uv.style.setProperty('--r', R + 'px');\n      }\n      if (t) {\n        t.style.width = (R * 2) + 'px'; t.style.height = (R * 2) + 'px';\n        t.style.transform = 'translate3d(' + (sx - R) + 'px,' + (sy - R) + 'px,0)';\n      }\n      if (st && lit && !st.classList.contains('lit')) st.classList.add('lit');\n    }\n\n    function checkFound() {\n      if (!userOn || !rect) return;\n      const cur = d2.state.found || {};\n      let hit = false;\n      const next = {};\n      Object.keys(cur).forEach((k) => { next[k] = true; });\n      for (let i = 0; i < SEGS.length; i++) {\n        if (next[i]) continue;\n        const px = SEGS[i].c[0] / 100 * rect.width;\n        const py = SEGS[i].c[1] / 100 * rect.height;\n        const dx = px - sx, dy = py - sy;\n        if (Math.sqrt(dx * dx + dy * dy) < R * 0.60) { next[i] = true; hit = true; }\n      }\n      if (hit) d2.setState({ found: next });\n    }\n\n    function drift(t) {\n      if (!rect) return;\n      const nodes = d2.$$('.mote');\n      for (let i = 0; i < nodes.length && i < MOTES.length; i++) {\n        const m = MOTES[i];\n        const bob = Math.sin((t / 1000) * m.sp + m.ph) * 9;\n        const px = m.x / 100 * rect.width;\n        const py = m.y / 100 * rect.height + bob;\n        nodes[i].style.transform = 'translate3d(' + px + 'px,' + py + 'px,0)';\n        nodes[i].style.opacity = lit ? '0.9' : '0';\n      }\n    }\n\n    const introPath = [[0.16, 0.20], [0.82, 0.28], [0.74, 0.80], [0.22, 0.72], [0.50, 0.50]];\n    let t0 = null;\n\n    d2.raf((t) => {\n      if (!rect || rect.width === 0) { measure(); return; }\n      if (t0 === null) t0 = t;\n\n      if (!userOn && !reduce && intro < 1) {\n        const dur = 2600;\n        const p = Math.min((t - t0) / dur, 1);\n        intro = p;\n        lit = true;\n        const seg = p * (introPath.length - 1);\n        const i = Math.min(Math.floor(seg), introPath.length - 2);\n        const f = seg - i;\n        const ease = f * f * (3 - 2 * f);\n        tx = (introPath[i][0] + (introPath[i + 1][0] - introPath[i][0]) * ease) * rect.width;\n        ty = (introPath[i][1] + (introPath[i + 1][1] - introPath[i][1]) * ease) * rect.height;\n        if (p >= 1) { userOn = true; }\n      }\n\n      if (sx < -900) { sx = tx; sy = ty; }\n      sx += (tx - sx) * 0.18;\n      sy += (ty - sy) * 0.18;\n      paint();\n      drift(t);\n      checkFound();\n    });\n\n    if (reduce) { userOn = true; d2.setState({ all: true }); }\n\n    function move(e) {\n      measure();\n      if (!rect) return;\n      tx = e.clientX - rect.left;\n      ty = e.clientY - rect.top;\n      lit = true; userOn = true; intro = 1;\n    }\n\n    d2.on('.stage', 'pointermove', (e) => { move(e); });\n    d2.on('.stage', 'pointerdown', (e) => { move(e); });\n    d2.on(window, 'resize', () => { rect = null; measure(); });\n\n    d2.on('.j-all', 'click', () => {\n      const on = !d2.state.all;\n      d2.setState({ all: on, found: on ? { 0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1 } : {} });\n      userOn = true; intro = 1;\n    });\n    d2.on('.j-reset', 'click', () => {\n      d2.setState({ all: false, found: {} });\n      lit = false; userOn = false; intro = 0; t0 = null;\n      sx = -999; sy = -999; tx = -999; ty = -999;\n      const st = d2.$('.stage'); if (st) st.classList.remove('lit');\n    });\n    d2.on('.j-cta', 'click', () => { d2.emit('onConsult', { source: 'serie-cl' }); });\n  },\n\n  updated(d2) {\n    const st = d2.$('.stage');\n    if (st && !st.classList.contains('lit')) return;\n  }\n};","at":"2026-08-25T21:03:17.007Z"}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-08-06T19:31:23.557Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a8dfa74205ee9c44ee1183f","component":"data2-core-primitives@Artboard","system":"6a8df75d61e8a5edc3832e21","displayName":"Serie CL","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Serie CL"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"yJVi1njDeqn8HsdXNHYhQ","deleteMetadata":{}},{"_id":"f319c3586c1210dd928587ba","parent":"6a8dfa74205ee9c44ee1183f","component":"benta@serie-cl-landing","system":"6a8df75d61e8a5edc3832e21","displayName":"Serie CL Page","params":{"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"BBSz56YY8Wg8Hw1DWYZhT","deleteMetadata":{}}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a8dfd4e61e8a5edc3833b52","displayName":"benta·i","reference":"i8pHBL3Knc_fYt2iSg2tm","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"app"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"yJVi1njDeqn8HsdXNHYhQ"}}},"system":"6a8df75d61e8a5edc3832e21","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}