<?xml version="1.0" encoding="utf-8"?>
<Application>
	<AppTitle>Bitwarden Password Data Converter</AppTitle>
	<AppShortName>BW Converter</AppShortName>
	<Author>Susan McDonald</Author>
	<Version>1.0</Version>
	<Description>Convert BW JSON Passwords to CSV</Description>
	<DesignDeviceName>Desktop</DesignDeviceName>
	<Variables>[buffer(0)],[buffer(2)],[buffer],[detailPropery(0)],[detailPropery],[input],[item([itemProperty])],[item],[itemArray([itemIndex])],[itemArray],[itemIndex],[itemProperty],[json([property])],[json],[jsonlen],[lineBuffer],[loginObject([loginProperty])],[loginObject],[loginProperty],[output],[outputBuffer],[password],[property],[returnValue],[url],&quot;[urlObject(&quot;&quot;uri&quot;&quot;)]&quot;,[urlObject],[username]</Variables>
	<VariablesScanned>True</VariablesScanned>
	<PageWidth>800</PageWidth>
	<PageHeight>600</PageHeight>
	<AutoSizeWidth>False</AutoSizeWidth>
	<AutoSizeHeight>False</AutoSizeHeight>
	<HideScrollbars>False</HideScrollbars>
	<ResponsiveSize>False</ResponsiveSize>
	<PublishPlatform>WebApp</PublishPlatform>
	<EmptyBuildFolder>False</EmptyBuildFolder>
	<AppIcon></AppIcon>
	<LanguageCode>en</LanguageCode>
	<DisplayMode>standalone</DisplayMode>
	<ServiceWorker>Offline page</ServiceWorker>
	<ThemeColor>#000000</ThemeColor>
	<PwaScope>/</PwaScope>
	<MobileOSTypes>[AndroidOS,iOS,WindowsPhoneOS]</MobileOSTypes>
	<WindowState>normal</WindowState>
	<TitleBar>True</TitleBar>
	<Sizeable>True</Sizeable>
	<MaximizeBtn>False</MaximizeBtn>
	<MinimizeBtn>True</MinimizeBtn>
	<SystemMenu>True</SystemMenu>
	<ContextMenu>False</ContextMenu>
	<AlwaysOnTop>False</AlwaysOnTop>
	<ShowInTaskbar>True</ShowInTaskbar>
	<SingleInstance>False</SingleInstance>
	<OrientationLimit>OL_PORTRAITONLY</OrientationLimit>
	<ChromeKioskMode>False</ChromeKioskMode>
	<Components>
		<FunctionList name="Subroutines"/>
		<LibraryList name="Libraries"/>
		<PageList name="Main">
			<Components>
				<Page id="NewPage">
					<style>background-color:#e8ddcb</style>
					<Components>
						<TextArea id="TextArea1">
							<left>16px</left>
							<top>120px</top>
							<width>336px</width>
							<height>464px</height>
							<variable>[input]</variable>
						</TextArea>
						<TextArea id="TextArea2">
							<left>448px</left>
							<top>120px</top>
							<width>336px</width>
							<height>464px</height>
							<neo_custom>wrap=&quot;off&quot;</neo_custom>
							<variable>[output]</variable>
						</TextArea>
						<SVGicon id="SVGicon1">
							<left>360px</left>
							<top>320px</top>
							<width>88px</width>
							<height>56px</height>
							<style>fill:#036564;stroke:black;stroke-width:1px</style>
							<icon>svgArrowRight</icon>
							<preserveAspectRatio>preserve</preserveAspectRatio>
							<click>Try
  ParseJSON [input] [json]
  setVar [outputBuffer] &quot;url,username,password\r\n&quot;
  LoopObject [property] [json]
    if [property] = &quot;items&quot;
      SetVar [itemArray] [json([property])]
      LoopObject [itemIndex] [itemArray]
        SetVar [item] [itemArray([itemIndex])]
        TypeOf [item] [returnValue]
        LoopObject [itemProperty] [item]
          if [itemProperty] = &quot;login&quot;
            SetVar [loginObject] [item([itemProperty])]
            SetVar [url] &quot;&quot;
            SetVar [username] &quot;&quot;
            SetVar [password] &quot;&quot;
            LoopObject [loginProperty] [loginObject]
              SetVar [detailPropery] [loginObject([loginProperty])]
              if [loginProperty] = &quot;uris&quot;
                SetVar [urlObject] [detailPropery(0)]
                SetVar [url] [urlObject(&quot;uri&quot;)]
              endif
              if [loginProperty] = &quot;username&quot;
                SetVar [username] [loginObject([loginProperty])]
                TypeOf [username] [returnValue]
                if [returnValue] = &quot;object&quot;
                  SetVar [username] &quot;&quot;
                endif
              endif
              if [loginProperty] = &quot;password&quot;
                SetVar [password] [loginObject([loginProperty])]
                TypeOf [password] [returnValue]
                if [returnValue] = &quot;object&quot;
                  SetVar [password] &quot;&quot;
                endif
              endif
            EndLoop
            ifex [url] != &quot;&quot; and [username] != &quot;&quot; and [password] != &quot;&quot;
              StrParse [url] &quot;/&quot; [buffer]
              SetVar [url] &quot;[buffer(0)]//[buffer(2)]/&quot;
              StrSearch &quot;,&quot; [password] [returnValue]
              if [returnValue] &gt; -1
                SetVar [password] &apos;&quot;[password]&quot;&apos;
              endif
              setVar [lineBuffer] &quot;[url],[username],[password]&quot;
              SetVar [outputBuffer] &quot;[outputBuffer][lineBuffer]\r\n&quot;
            endif
          endif
        EndLoop
      EndLoop
    endif
  EndLoop
  SetVar [output] [outputBuffer]
Catch
  StrLen [input] [jsonlen]
  if [jsonlen] &lt; 10
    SetVar [output] &quot;Please, first paste the JSON in the left box!&quot;
  else
    SetVar [output] &quot;Sorry, can&apos;t parse the data!&quot;
  endif
EndTry</click>
						</SVGicon>
						<Paragraph id="Paragraph1">
							<left>16px</left>
							<top>72px</top>
							<width>336px</width>
							<height>48px</height>
							<text>Paste the exported and unencrypted JSON data from Bitwarden</text>
						</Paragraph>
						<Paragraph id="Paragraph2">
							<left>448px</left>
							<top>72px</top>
							<width>336px</width>
							<height>48px</height>
							<text>Click on the arrow to convert the JSON to CSV which can be copied and imported into Chrome</text>
						</Paragraph>
						<Container id="Container1">
							<left>0px</left>
							<top>0px</top>
							<width>800px</width>
							<height>64px</height>
							<style>background-color:#033649;border-style:solid;border-width:1px</style>
						</Container>
						<Headline id="Headline1">
							<left>0px</left>
							<top>8px</top>
							<width>800px</width>
							<height>48px</height>
							<style>color:#FFFFFF;text-align:center</style>
							<text>Bitwarden Password Data Converter</text>
						</Headline>
					</Components>
				</Page>
			</Components>
		</PageList>
		<PageList name="Master">
			<Components>
				<Page id="MasterPage"/>
			</Components>
		</PageList>
		<PageList name="Dialog">
			<Components>
				<Page id="NewDialog">
					<Components>
						<DialogContainer id="DialogContainer1">
							<left>0px</left>
							<top>0px</top>
							<width>800px</width>
							<height>600px</height>
							<close_button>False</close_button>
							<kind>custom</kind>
						</DialogContainer>
					</Components>
				</Page>
			</Components>
		</PageList>
	</Components>
</Application>
