{"context":{"domain":"people-gabi-carmo"},"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":"69a704a047c6ef5f14b2dd47","name":"Gabriela Carmo","domain":"people-gabi-carmo","visibility":"private","settings":{"defaultAccessPolicy":"public"},"updatedAt":"2026-07-27T14:19:36.810Z","createdAt":"2026-03-03T15:56:16.236Z"}]}},{"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":"6a397f78e5a95378ceed5bb1","component":"data2-core-types@Component","system":"69a704a047c6ef5f14b2dd47","params":{"extends":"data2-core-primitives@Block","component":"arezzoApp","package":"people-gabi-carmo","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"// Arezzo experimente — rebuild marker\nconst PRIMARY = (p, fmt) => {\n  const imgs = (p && p.images) || [];\n  return (imgs.find(i => i.imageType === 'PRIMARY' && i.format === fmt)\n       || imgs.find(i => i.imageType === 'PRIMARY') || {}).url || '';\n};\nconst readAsDataURL = (file) => new Promise((resolve, reject) => {\n  const r = new FileReader();\n  r.onload = () => {\n    const img = new Image();\n    img.onload = () => {\n      try {\n        const MAX = 1024;\n        let w = img.naturalWidth || img.width, h = img.naturalHeight || img.height;\n        if (w > h && w > MAX) { h = Math.round(h * MAX / w); w = MAX; }\n        else if (h >= w && h > MAX) { w = Math.round(w * MAX / h); h = MAX; }\n        const canvas = document.createElement('canvas');\n        canvas.width = w; canvas.height = h;\n        canvas.getContext('2d').drawImage(img, 0, 0, w, h);\n        resolve(canvas.toDataURL('image/jpeg', 0.85));\n      } catch (e) { resolve(r.result); }\n    };\n    img.onerror = () => resolve(r.result);\n    img.src = r.result;\n  };\n  r.onerror = reject;\n  r.readAsDataURL(file);\n});\nconst CATS = [\n  { label: 'Todos', code: 'SAPATOS' },\n  { label: 'Scarpins', code: 'SCARPINS' },\n  { label: 'Botas', code: 'BOTAS' },\n  { label: 'Sandálias', code: 'SANDALIAS' },\n  { label: 'Tênis', code: 'TENIS' },\n  { label: 'Mules', code: 'MULES' },\n  { label: 'Sapatilhas', code: 'SAPATILHAS' },\n  { label: 'Mocassins', code: 'MOCASSINS' },\n  { label: 'Bolsas', code: 'BOLSAS' }\n];\nconst esc = (s) => String(s == null ? '' : s).replace(/\"/g, '&quot;').replace(/</g, '&lt;');\n\nexport default {\n  css: `\n    @import url('https://fonts.googleapis.com/css2?family=Commissioner:wght@300;400;500;600;700&display=swap');\n    :host { display: block; width: 100%; height: 100%; }\n    * { box-sizing: border-box; margin: 0; padding: 0; }\n    .app { display: flex; flex-direction: column; height: 100%; font-family: 'Commissioner', 'Helvetica Neue', Arial, sans-serif; background: #FFFFFF; overflow: hidden; }\n    .header { display: flex; align-items: center; padding: 0 40px; height: 78px; background: #FFFFFF; border-bottom: 1px solid #EEEEEE; flex-shrink: 0; gap: 24px; }\n    .logo { font-size: 24px; font-weight: 600; letter-spacing: 9px; color: #1C1C1C; text-transform: uppercase; }\n    .search-wrap { margin-left: auto; display: flex; align-items: center; background: #F6F6F6; border: 1px solid #E5E5E5; border-radius: 24px; height: 42px; padding: 0 6px 0 18px; width: 340px; max-width: 38%; }\n    .search-input { flex: 1; background: transparent; border: none; outline: none; color: #1C1C1C; font-size: 14px; font-family: inherit; }\n    .search-input::placeholder { color: #999; }\n    .search-btn, .search-clear { width: 32px; height: 32px; border: none; background: transparent; color: #888; cursor: pointer; font-size: 15px; border-radius: 50%; transition: all 0.2s; }\n    .search-btn:hover, .search-clear:hover { background: #ECECEC; color: #1C1C1C; }\n    .filter-bar { display: flex; align-items: center; padding: 0 40px; gap: 8px; height: 56px; background: #FFFFFF; border-bottom: 1px solid #EEEEEE; flex-shrink: 0; overflow-x: auto; }\n    .filter-btn { padding: 6px 18px; border: 1.5px solid transparent; border-radius: 20px; background: transparent; font-size: 13px; color: #666666; cursor: pointer; transition: all 0.2s; font-family: inherit; letter-spacing: 0.3px; white-space: nowrap; }\n    .filter-btn:hover { background: #F5F3F0; color: #1C1C1C; }\n    .filter-btn.active { background: #1C1C1C; color: #FFFFFF; border-color: #1C1C1C; }\n    .count { margin-left: auto; font-size: 12px; color: #AAA; white-space: nowrap; padding-left: 16px; }\n    .content { display: flex; flex: 1; overflow: hidden; }\n    .grid-wrapper { flex: 1; overflow-y: auto; padding: 22px; background: #FAFAFA; }\n    .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); grid-auto-rows: 284px; gap: 16px; }\n    .card { background: #FFFFFF; border: 1px solid #F0F0F0; border-radius: 10px; overflow: hidden; cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; display: flex; flex-direction: column; }\n    .card:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0,0,0,0.12); }\n    .card-img { width: 100%; height: 192px; object-fit: contain; background: #FFFFFF; display: block; padding: 6px; }\n    .card-body { padding: 12px 16px; flex: 1; }\n    .card-name { font-size: 13px; font-weight: 500; color: #1C1C1C; line-height: 1.4; margin-bottom: 6px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n    .card-price { font-size: 15px; font-weight: 700; color: #E4002B; }\n    .state-msg { grid-column: 1/-1; text-align: center; padding: 80px 0; color: #999; font-size: 15px; }\n    .state-full { display: flex; align-items: center; justify-content: center; height: 100%; color: #999; font-size: 15px; gap: 12px; }\n    .spinner-sm { width: 22px; height: 22px; border: 3px solid #EEE; border-top-color: #E4002B; border-radius: 50%; animation: spin 0.8s linear infinite; }\n    .detail-panel { width: 560px; background: #FFFFFF; border-left: 1px solid #EEEEEE; display: flex; flex-direction: column; overflow-y: auto; flex-shrink: 0; animation: slideIn 0.25s ease; }\n    @keyframes slideIn { from { transform: translateX(40px); opacity: 0; } to { transform: translateX(0); opacity: 1; } }\n    .detail-header { display: flex; align-items: center; justify-content: space-between; padding: 0 24px; height: 56px; border-bottom: 1px solid #EEEEEE; flex-shrink: 0; position: sticky; top: 0; background: #FFFFFF; z-index: 2; }\n    .detail-title { font-size: 14px; font-weight: 600; color: #1C1C1C; letter-spacing: 0.3px; }\n    .close-btn { width: 32px; height: 32px; border: none; background: #F5F3F0; border-radius: 50%; font-size: 14px; cursor: pointer; color: #666; display: flex; align-items: center; justify-content: center; transition: background 0.2s; font-family: inherit; }\n    .close-btn:hover { background: #E0DDD8; }\n    .detail-img { width: 100%; height: 360px; object-fit: contain; background: #FFFFFF; display: block; padding: 16px; }\n    .detail-info { padding: 24px; }\n    .detail-name { font-size: 16px; font-weight: 600; color: #1C1C1C; line-height: 1.4; margin-bottom: 8px; }\n    .detail-price { font-size: 22px; font-weight: 700; color: #E4002B; margin-bottom: 24px; }\n    .size-label { font-size: 11px; font-weight: 600; color: #999; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 1px; }\n    .sizes-row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 28px; }\n    .size-btn { min-width: 48px; height: 44px; padding: 0 12px; border: 1.5px solid #DDDDDD; border-radius: 8px; background: #FFFFFF; font-size: 13px; font-weight: 500; cursor: pointer; transition: all 0.15s; font-family: inherit; color: #1C1C1C; }\n    .size-btn:hover { border-color: #1C1C1C; }\n    .size-btn.active { background: #1C1C1C; color: #FFFFFF; border-color: #1C1C1C; }\n    .tryon-section { border-top: 1px solid #EEEEEE; padding-top: 24px; }\n    .cta-btn { width: 100%; height: 52px; background: #1C1C1C; color: #FFFFFF; border: none; border-radius: 8px; font-size: 15px; font-weight: 600; letter-spacing: 0.5px; cursor: pointer; transition: background 0.2s; font-family: inherit; display: flex; align-items: center; justify-content: center; gap: 8px; }\n    .cta-btn:hover:not(:disabled) { background: #333333; }\n    .cta-hint { margin-top: 12px; font-size: 12px; color: #AAAAAA; text-align: center; line-height: 1.5; }\n    .photo-input { display: none; }\n    .gen-box { margin-top: 16px; text-align: center; }\n    .spinner { width: 40px; height: 40px; border: 3px solid #EEEEEE; border-top-color: #E4002B; border-radius: 50%; margin: 24px auto 12px; animation: spin 0.8s linear infinite; }\n    @keyframes spin { to { transform: rotate(360deg); } }\n    .gen-status { font-size: 13px; color: #666; }\n    .gen-sub { font-size: 11px; color: #AAA; margin-top: 4px; }\n    .result-img { width: 100%; border-radius: 12px; display: block; margin-bottom: 12px; box-shadow: 0 8px 24px rgba(0,0,0,0.12); }\n    .result-badge { font-size: 11px; color: #999; text-align: center; margin-bottom: 16px; }\n    .ghost-btn { width: 100%; height: 44px; background: #FFFFFF; color: #1C1C1C; border: 1.5px solid #DDDDDD; border-radius: 8px; font-size: 13px; font-weight: 500; cursor: pointer; font-family: inherit; transition: border-color 0.2s; }\n    .ghost-btn:hover { border-color: #1C1C1C; }\n    .err-box { margin-top: 16px; padding: 14px 16px; background: #FDECEC; color: #C0392B; font-size: 12px; border-radius: 8px; line-height: 1.5; }\n    .warn-box { margin-bottom: 16px; padding: 14px 16px; background: #FFF4E5; color: #9A5B00; font-size: 13px; border-radius: 8px; line-height: 1.5; }\n    .product-url { display: block; margin-top: 16px; text-align: center; font-size: 12px; color: #999; text-decoration: none; border-top: 1px solid #EEEEEE; padding-top: 16px; }\n    .product-url:hover { color: #1C1C1C; }\n    .gate { position: absolute; inset: 0; z-index: 50; background: linear-gradient(135deg, #FFFFFF 0%, #F5F3F0 100%); display: flex; align-items: center; justify-content: center; padding: 24px; font-family: 'Commissioner', 'Helvetica Neue', Arial, sans-serif; }\n    .gate-card { width: 100%; max-width: 420px; background: #FFFFFF; border: 1px solid #EEEEEE; border-radius: 16px; padding: 40px 36px; box-shadow: 0 20px 60px rgba(0,0,0,0.08); text-align: center; }\n    .gate-logo { font-size: 26px; font-weight: 600; letter-spacing: 9px; text-transform: uppercase; color: #1C1C1C; margin-bottom: 14px; }\n    .gate-title { font-size: 19px; font-weight: 600; color: #1C1C1C; margin-bottom: 8px; }\n    .gate-sub { font-size: 13px; color: #999; line-height: 1.5; margin-bottom: 28px; }\n    .gate-field { text-align: left; margin-bottom: 16px; }\n    .gate-field label { display: block; font-size: 11px; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 6px; }\n    .gate-field input { width: 100%; height: 48px; border: 1.5px solid #DDDDDD; border-radius: 8px; padding: 0 16px; font-size: 14px; font-family: inherit; outline: none; transition: border-color 0.2s; }\n    .gate-field input:focus { border-color: #1C1C1C; }\n    .gate-btn { width: 100%; height: 52px; margin-top: 8px; background: #1C1C1C; color: #FFFFFF; border: none; border-radius: 8px; font-size: 15px; font-weight: 600; letter-spacing: 0.5px; cursor: pointer; font-family: inherit; transition: background 0.2s; }\n    .gate-btn:hover:not(:disabled) { background: #333333; }\n    .gate-btn:disabled { opacity: 0.6; cursor: default; }\n    .gate-err { margin-top: 14px; font-size: 12px; color: #C0392B; }\n    .gate-note { margin-top: 18px; font-size: 11px; color: #BBB; line-height: 1.5; }\n  `,\n\n  render(d2) {\n    const {\n      category = 'SAPATOS', search = '', products = [], gridStatus = 'loading', gridError = null, total = 0,\n      detailOpen = false, selectedProduct = null, selectedSize = null,\n      tryStatus = 'idle', tryImage = null, tryError = null, tryAttempt = 1,\n      gated = true, gateError = null, gateSubmitting = false\n    } = d2.state;\n\n    if (gated) {\n      return `\n        <div class=\"gate\">\n          <div class=\"gate-card\">\n            <div class=\"gate-logo\">Arezzo</div>\n            <div class=\"gate-title\">Experimente antes de comprar</div>\n            <div class=\"gate-sub\">Preencha seus dados para provar virtualmente os produtos da Arezzo com a sua foto.</div>\n            <div class=\"gate-field\">\n              <label>Nome</label>\n              <input class=\"gate-name\" type=\"text\" placeholder=\"Seu nome\" />\n            </div>\n            <div class=\"gate-field\">\n              <label>E-mail</label>\n              <input class=\"gate-email\" type=\"email\" placeholder=\"seu@email.com\" />\n            </div>\n            <button class=\"gate-btn\"${gateSubmitting ? ' disabled' : ''}>${gateSubmitting ? 'Entrando...' : 'Começar a experimentar'}</button>\n            ${gateError ? '<div class=\"gate-err\">' + esc(gateError) + '</div>' : ''}\n            <div class=\"gate-note\">Usamos seus dados apenas para esta experiência.</div>\n          </div>\n        </div>`;\n    }\n\n    const filterBtns = CATS.map(c =>\n      `<button class=\"filter-btn${category === c.code && !search ? ' active' : ''}\" data-code=\"${c.code}\">${c.label}</button>`\n    ).join('');\n\n    let gridHTML;\n    if (gridStatus === 'loading') {\n      gridHTML = `<div class=\"state-full\"><div class=\"spinner-sm\"></div><span>Carregando produtos...</span></div>`;\n    } else if (gridStatus === 'error') {\n      gridHTML = `<div class=\"state-full\"><span>Erro ao carregar: ${esc(gridError)}</span></div>`;\n    } else if (products.length === 0) {\n      gridHTML = `<div class=\"state-msg\">Nenhum produto encontrado${search ? ' para \"' + esc(search) + '\"' : ''}.</div>`;\n    } else {\n      const cards = products.map(p =>\n        `<div class=\"card\" data-code=\"${esc(p.code)}\" data-key=\"${esc(p.code)}\">\n          <img class=\"card-img\" src=\"${PRIMARY(p, 'product')}\" alt=\"\" loading=\"lazy\" />\n          <div class=\"card-body\">\n            <div class=\"card-name\">${esc(p.name)}</div>\n            <div class=\"card-price\">${esc((p.price || {}).formattedValue)}</div>\n          </div>\n        </div>`\n      ).join('');\n      gridHTML = `<div class=\"grid\">${cards}</div>`;\n    }\n\n    const countLabel = gridStatus === 'done' && total ? `${total} ${total === 1 ? 'produto' : 'produtos'}` : '';\n\n    let detailHTML = '';\n    if (detailOpen && selectedProduct) {\n      const sizes = (selectedProduct.variantOptions || []).map(v => {\n        const label = (v.code || '').split('-').pop();\n        return `<button class=\"size-btn${selectedSize === v.code ? ' active' : ''}\" data-size=\"${esc(v.code)}\" data-key=\"${esc(v.code)}\">${esc(label)}</button>`;\n      }).join('');\n\n      let tryOnHTML;\n      if (tryStatus === 'checking' || tryStatus === 'uploading' || tryStatus === 'generating') {\n        const msg = tryStatus === 'checking' ? 'Analisando sua foto...' : (tryStatus === 'uploading' ? 'Preparando sua foto...' : 'Gerando sua prova virtual com IA...');\n        const sub = tryStatus === 'generating' ? ((tryAttempt > 1 ? 'Tentativa ' + tryAttempt + ' de 3 — ' : '') + 'isso pode levar até 30 segundos ✨') : 'Só um instante';\n        tryOnHTML = `\n          <div class=\"gen-box\">\n            <div class=\"spinner\"></div>\n            <div class=\"gen-status\">${msg}</div>\n            <div class=\"gen-sub\">${sub}</div>\n          </div>`;\n      } else if (tryStatus === 'rejected') {\n        tryOnHTML = `\n          <div class=\"warn-box\">📷 ${esc(tryError)}</div>\n          <button class=\"cta-btn tryon-btn\">📸 Enviar outra foto</button>`;\n      } else if (tryStatus === 'done' && tryImage) {\n        tryOnHTML = `\n          <div class=\"gen-box\">\n            <img class=\"result-img\" src=\"${tryImage}\" alt=\"Prova virtual\" />\n            <div class=\"result-badge\">✨ Prova virtual gerada por IA</div>\n            <button class=\"ghost-btn try-again\">Experimentar com outra foto</button>\n          </div>`;\n      } else if (tryStatus === 'error') {\n        tryOnHTML = `\n          <button class=\"cta-btn tryon-btn\">📸 Tentar novamente</button>\n          <div class=\"err-box\">Não consegui gerar a prova virtual: ${esc(tryError)}</div>`;\n      } else {\n        tryOnHTML = `\n          <button class=\"cta-btn tryon-btn\">📸 Experimentar com sua foto</button>\n          <p class=\"cta-hint\">Suba uma foto sua (${selectedProduct.productType === 'bag' ? 'da cintura para cima já funciona' : 'corpo inteiro funciona melhor'}) e a IA vai te mostrar usando ${selectedProduct.productType === 'bag' ? ((/mochila/i.test(selectedProduct.name || '') || (selectedProduct.categories || []).some(c => c.code === 'MOCHILA')) ? 'esta mochila' : 'esta bolsa') : 'este calçado'}.</p>`;\n      }\n\n      detailHTML = `\n        <div class=\"detail-panel\">\n          <div class=\"detail-header\">\n            <span class=\"detail-title\">Detalhes do Produto</span>\n            <button class=\"close-btn\">✕</button>\n          </div>\n          <img class=\"detail-img\" src=\"${PRIMARY(selectedProduct, 'zoom') || PRIMARY(selectedProduct, 'product')}\" alt=\"\" />\n          <div class=\"detail-info\">\n            <h2 class=\"detail-name\">${esc(selectedProduct.name)}</h2>\n            <div class=\"detail-price\">${esc((selectedProduct.price || {}).formattedValue)}</div>\n            <div class=\"size-label\">Tamanhos disponíveis</div>\n            <div class=\"sizes-row\">${sizes}</div>\n            <div class=\"tryon-section\">\n              ${tryOnHTML}\n              <input type=\"file\" class=\"photo-input\" accept=\"image/*\" />\n            </div>\n            <a class=\"product-url\" href=\"https://www.arezzo.com.br${esc(selectedProduct.url)}\" target=\"_blank\">Ver no site da Arezzo →</a>\n          </div>\n        </div>`;\n    }\n\n    return `\n      <div class=\"app\">\n        <header class=\"header\">\n          <span class=\"logo\">Arezzo</span>\n          <div class=\"search-wrap\">\n            <input class=\"search-input\" placeholder=\"Buscar produtos...\" value=\"${esc(search)}\" />\n            ${search ? '<button class=\"search-clear\" title=\"Limpar\">✕</button>' : ''}\n            <button class=\"search-btn\" title=\"Buscar\">🔍</button>\n          </div>\n        </header>\n        <div class=\"filter-bar\">\n          ${filterBtns}\n          <span class=\"count\">${countLabel}</span>\n        </div>\n        <div class=\"content\">\n          <div class=\"grid-wrapper\">${gridHTML}</div>\n          ${detailHTML}\n        </div>\n      </div>`;\n  },\n\n  mounted(d2) {\n    const track = (event, prod) => {\n      try {\n        const kind = prod ? (prod.productType === 'bag' ? ((/mochila/i.test(prod.name || '') || (prod.categories || []).some(c => c.code === 'MOCHILA')) ? 'backpack' : 'bag') : 'shoe') : '';\n        const p = d2.rush('arezzo-track').invoke({ event, productCode: (prod && prod.code) || '', productName: (prod && prod.name) || '', kind });\n        if (p && p.catch) p.catch(() => {});\n      } catch (e) {}\n    };\n\n    let savedLead = null;\n    try { savedLead = JSON.parse(window.localStorage.getItem('arezzo_lead') || 'null'); } catch (e) {}\n    d2.setState({ gated: !(savedLead && savedLead.email) });\n\n    d2.on('.gate-btn', 'click', async () => {\n      const nameEl = d2.$('.gate-name');\n      const emailEl = d2.$('.gate-email');\n      const name = (nameEl && nameEl.value.trim()) || '';\n      const email = (emailEl && emailEl.value.trim()) || '';\n      if (!name) { d2.setState({ gateError: 'Por favor, preencha seu nome.' }); return; }\n      if (!/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(email)) { d2.setState({ gateError: 'Digite um e-mail válido.' }); return; }\n      d2.setState({ gateError: null, gateSubmitting: true });\n      try { await d2.rush('arezzo-lead').invoke({ name, email }); } catch (e) {}\n      try { window.localStorage.setItem('arezzo_lead', JSON.stringify({ name, email })); } catch (e) {}\n      d2.setState({ gated: false, gateSubmitting: false });\n    });\n    d2.on('.gate-email', 'keydown', (e) => { if (e.key === 'Enter') { const b = d2.$('.gate-btn'); if (b) b.click(); } });\n\n    const fetchProducts = async (category, search) => {\n      d2.setState({ gridStatus: 'loading', category, search });\n      try {\n        const r = await d2.rush('arezzo-products').invoke({ category: category || 'SAPATOS', search: search || '' });\n        const payload = (r && r.data) ? r.data : r;\n        const products = (payload && payload.products) || [];\n        const total = (payload && payload.total) || products.length;\n        d2.setState({ products, total, gridStatus: 'done' });\n      } catch (err) {\n        d2.setState({ gridStatus: 'error', gridError: String((err && err.message) || err) });\n      }\n    };\n\n    d2.on('.filter-btn', 'click', (e) => {\n      const el = e.target.closest('.filter-btn');\n      if (el) fetchProducts(el.dataset.code, '');\n    });\n\n    d2.on('.search-btn', 'click', () => {\n      const i = d2.$('.search-input');\n      fetchProducts(d2.state.category || 'SAPATOS', (i && i.value.trim()) || '');\n    });\n\n    d2.on('.search-input', 'keydown', (e) => {\n      if (e.key === 'Enter') fetchProducts(d2.state.category || 'SAPATOS', e.target.value.trim());\n    });\n\n    d2.on('.search-clear', 'click', () => {\n      fetchProducts(d2.state.category || 'SAPATOS', '');\n    });\n\n    d2.on('.card', 'click', (e) => {\n      const el = e.target.closest('.card');\n      const code = el && el.dataset.code;\n      const prod = (d2.state.products || []).find(p => p.code === code);\n      if (prod) d2.setState({ selectedProduct: prod, detailOpen: true, selectedSize: null, tryStatus: 'idle', tryImage: null, tryError: null });\n    });\n\n    d2.on('.close-btn', 'click', () => {\n      d2.setState({ detailOpen: false, selectedProduct: null, tryStatus: 'idle', tryImage: null, tryError: null });\n    });\n\n    d2.on('.size-btn', 'click', (e) => {\n      const el = e.target.closest('.size-btn');\n      if (el) d2.setState({ selectedSize: el.dataset.size });\n    });\n\n    d2.on('.tryon-btn', 'click', () => {\n      track('tryon_click', d2.state.selectedProduct);\n      const input = d2.$('.photo-input');\n      if (input) { input.value = ''; input.click(); }\n    });\n\n    d2.on('.try-again', 'click', () => {\n      d2.setState({ tryStatus: 'idle', tryImage: null, tryError: null });\n      const input = d2.$('.photo-input');\n      if (input) input.value = '';\n    });\n\n    d2.on('.photo-input', 'change', async (e) => {\n      const file = e.target.files && e.target.files[0];\n      if (!file) return;\n      const prod = d2.state.selectedProduct;\n      if (!prod) return;\n\n      d2.setState({ tryStatus: 'checking', tryImage: null, tryError: null });\n      try {\n        const isBag = prod.productType === 'bag';\n        const isBackpack = isBag && (/mochila/i.test(prod.name || '') || (prod.categories || []).some(c => c.code === 'MOCHILA'));\n        const kind = isBag ? 'bag' : 'shoe';\n        const userPhotoUrl = await readAsDataURL(file);\n        const check = await d2.rush('arezzo-photo-check').invoke({ photoUrl: userPhotoUrl, kind });\n        const cp = (check && check.data) ? check.data : check;\n        const verdict = (cp && cp.verdict) || {};\n        if (verdict.ok === false) {\n          d2.setState({ tryStatus: 'rejected', tryError: verdict.motivo || 'A foto não ficou boa para a prova virtual. Tente outra com o corpo inteiro e os pés bem visíveis.' });\n          return;\n        }\n        const shoeUrl = PRIMARY(prod, 'product') || PRIMARY(prod, 'zoom');\n        const shoePrompt = 'Imagem 1 = uma pessoa. Imagem 2 = um calçado da Arezzo (\"' + (prod.name || '') + '\"). A Imagem 2 pode mostrar o calçado sozinho OU em uma modelo — use APENAS o calçado, ignore completamente qualquer pessoa, perna ou pé que apareça na Imagem 2. Gere uma foto realista da MESMA pessoa da Imagem 1 (mesmo rosto, corpo, roupa, pose, iluminação e fundo), trocando o que ela usa nos pés por esse calçado da Arezzo. Remova qualquer outro calçado, pantufa, chinelo, sandália ou sapato que já apareça na Imagem 1 — inclusive atrás, ao lado ou embaixo dos pés — de modo que ela use SOMENTE o calçado da Arezzo, sem nenhum outro calçado visível na cena. Calce o MESMO calçado nos DOIS pés, formando um PAR IDÊNTICO: exatamente o mesmo modelo, mesma altura de cano, mesmo formato de bico, mesmo salto, mesma cor e os mesmos detalhes nos dois pés. NUNCA gere dois calçados diferentes nem de alturas diferentes entre o pé esquerdo e o direito. Use tamanho, ângulo e perspectiva corretos em cada pé e contato natural com o chão. IMPORTANTE: se o calçado for aberto (sandália, rasteira, mule, chinelo, slide, peep toe, anabela aberta, etc.) ou deixar qualquer parte do pé à mostra, o pé deve aparecer DESCALÇO, com pele natural, SEM meia, soquete ou qualquer tecido cobrindo o pé. Nunca adicione meias. Não altere mais nada além do calçado.';\n        const bagPrompt = 'Imagem 1 = uma pessoa. Imagem 2 = uma bolsa da Arezzo (\"' + (prod.name || '') + '\"). A Imagem 2 pode mostrar a bolsa sozinha OU em uma modelo — use APENAS a bolsa, ignore completamente qualquer pessoa que apareça na Imagem 2. Gere uma foto realista da MESMA pessoa da Imagem 1 (mesmo rosto, corpo, roupa, pose, iluminação e fundo), agora carregando essa bolsa da Arezzo de forma natural e condizente com o tipo dela: bolsa tiracolo/transversal atravessada no corpo com a alça sobre um ombro, bolsa shoulder apoiada no ombro, bolsa de mão segurada pela alça na mão, clutch/carteira segurada na mão. Posicione a mão da pessoa interagindo com a alça quando fizer sentido. Mantenha o formato, o tamanho proporcional, a cor, a alça, as ferragens e todos os detalhes IDÊNTICOS aos da Imagem 2. Remova qualquer outra bolsa que já apareça na Imagem 1. Não altere mais nada na pessoa nem no fundo além de adicionar essa bolsa.';\n        const backpackPrompt = 'Imagem 1 = uma pessoa. Imagem 2 = uma mochila da Arezzo (\"' + (prod.name || '') + '\"). Use APENAS a mochila da Imagem 2 (mesma cor, formato, alças, bolsos, ferragens e detalhes); IGNORE completamente como ela aparece posicionada na Imagem 2 e qualquer modelo que apareça lá — NÃO copie a pose nem o jeito que a mochila está sendo carregada na Imagem 2. Gere uma foto realista da MESMA pessoa da Imagem 1 (mesma roupa, cabelo, corpo, iluminação e fundo), mas VISTA POR TRÁS: a pessoa deve estar girada DE COSTAS para a câmera, de modo que vejamos as COSTAS dela e a parte de trás da cabeça/cabelo (pode ser uma vista de três quartos de costas, no máximo um leve perfil do rosto). A mochila fica CENTRALIZADA NAS COSTAS da pessoa, com as DUAS alças passando por cima dos dois ombros, exatamente como uma mochila é usada de verdade. É TERMINANTEMENTE PROIBIDO colocar a mochila na frente do corpo, no peito, na barriga, no colo, pendurada no braço, de lado ou atravessada/transversal — ela aparece SOMENTE nas costas. Remova qualquer outra bolsa ou mochila que já apareça na Imagem 1. Não altere mais nada além de virar a pessoa de costas e adicionar a mochila nas costas.';\n        const prompt = isBackpack ? backpackPrompt : (isBag ? bagPrompt : shoePrompt);\n\n        let img = null, lastErr = null;\n        for (let attempt = 1; attempt <= 3 && !img; attempt++) {\n          d2.setState({ tryStatus: 'generating', tryAttempt: attempt });\n          try {\n            const res = await d2.rush('arezzo-tryon').invoke({ userPhotoUrl, shoeUrl, prompt });\n            const payload = (res && res.data) ? res.data : res;\n            img = (payload && payload.image) || null;\n            if (!img) throw new Error('Resposta sem imagem');\n          } catch (e) { lastErr = e; }\n        }\n        if (img) d2.setState({ tryStatus: 'done', tryImage: img });\n        else d2.setState({ tryStatus: 'error', tryError: 'Não consegui gerar após 3 tentativas. ' + String((lastErr && lastErr.message) || lastErr || '') });\n      } catch (err) {\n        d2.setState({ tryStatus: 'error', tryError: String((err && err.message) || err) });\n      }\n    });\n\n    track('app_open');\n    fetchProducts('SAPATOS', '');\n  }\n}"}},"dataset":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"dataset"}}}}}}}}}}]}},{"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":"6a397e4082efcd29e659ea3b","component":"data2-core-primitives@Artboard","system":"69a704a047c6ef5f14b2dd47","displayName":"Experimentar Arezzo","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Experimentar Arezzo"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"UdSQrZ-62c4bs3x3ck_DG"},{"_id":"04dd89fcb6cba1d64739abc2","parent":"6a397e4082efcd29e659ea3b","component":"people-gabi-carmo@arezzoApp","system":"69a704a047c6ef5f14b2dd47","displayName":"Arezzo App","params":{"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false,"growH":true,"growV":true,"exactX":0,"exactY":0}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"-HZEhQneRwwlKtssTBS3h"}]}},{"_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":"6a397f9ea8e3c7accedf891c","displayName":"Experimentar Arezzo","reference":"qoKuseWYWXN7vJDdn3U_O","params":{"name":{"component":"data2-core-primitives@String","params":{"content":"Experimentar Arezzo"}},"shortName":{"component":"data2-core-primitives@String","params":{"content":"Experimentar Arezzo"}},"domain":{"component":"data2-core-primitives@String","params":{"content":"arezzo"}},"serverSideRendering":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"UdSQrZ-62c4bs3x3ck_DG"}},"responseHeaders":{"X-Frame-Options":{"component":"data2-core-primitives@String","params":{"content":""}},"Content-Security-Policy":{"component":"data2-core-primitives@String","params":{"content":""}},"X-XSS-Protection":{"component":"data2-core-primitives@String","params":{"content":""}}}},"system":"69a704a047c6ef5f14b2dd47","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}