# Business Logic — JKKOpSvcHktgiUpdCC.sjishoCC() [155 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKOpSvcHktgiUpdCC` |
| Layer | CC / Common Component (Package: `com.fujitsu.futurity.bp.custom.common`) |
| Module | `common` |

## 1. Role

### JKKOpSvcHktgiUpdCC.sjishoCC()

This method generates and registers **instruction slips (sjisho)** for relay (hiki-watari) data associated with service contract number changes. In Japanese telecom service order processing, when a customer's service contract is transferred (hiki-watari) from one service ID to another, or when one party's service is cancelled during transfer, the system must register instruction slips to coordinate downstream systems with the correct POP ID (authentication identifier) and WEB ID (DSL service identifier) mappings.

The method implements a **conditional routing pattern** based on the direction of transfer: "hiki-saki" (transfer destination / new party) and "hiki-moto" (transfer source / old party). It independently processes each side, populating structured relay data lists with the appropriate CRUD operations (add or delete) for POP IDs and WEB IDs, then delegates the actual instruction slip registration to `JKKAddSjishoCC.addSjisho()`.

Two user-defined data areas are created upfront via `createUserData()`, one for each transfer direction (`renkei_data_list1` and `renkei_data_list2`). Relay flags (`renkei1`, `renkei2`) track whether any data was populated for each side, and only if data exists does the method invoke the instruction slip registration. The Javadoc states this is the "Instruction slip CC call" (shiji-sho CC call) and was modified per IT2-2012-0000585 on 2012/06/14.

This is a **shared utility method** called from `copyOption()` when immediate processing (sokujitsu) is requested during a service contract change screen operation. It is not a screen entry point itself but is part of the core service contract transfer business logic.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["sjishoCC(params)"])

    CREATE["createUserData: renkei_data_list1, renkei_data_list2"]

    COND_NULL1["hikiSakiSysid
is null?"]
    COND_SIZE1["hikiSakiOpSvcKeiB001Sjisho
size > 0?"]
    PUT1["putAxMRenkeiDataKbn
RENKEI_DATA_KBN_POPID = \"03\"
TRN_KBN_ADD = \"01\""]
    SET1["renkei1 = true"]
    COND_SIZE2["hikiSakiDslOpSvcKeiB002Sjisho
size > 0?"]
    PUT2["putAxMRenkeiDataKbn
RENKEI_DATA_KBN_WEBID = \"04\"
TRN_KBN_DEL = \"03\""]
    SET2["renkei1 = true"]
    COND_SIZE3["hikiSakiOpSvcKeiB002Sjisho
size > 0?"]
    PUT3["putAxMRenkeiDataKbn
RENKEI_DATA_KBN_WEBID = \"04\"
TRN_KBN_ADD = \"01\""]
    SET3["renkei1 = true"]
    COND_RENK1["renkei1
equals true?"]
    ADD1["addSjisho(handle, param, 'renkei_data_list1')"]

    COND_NULL2["hikiMotoSysid
is null?"]
    COND_SIZE4["hikiMotoOpSvcKeiB001Sjisho
size > 0?"]
    PUT4["putAxMRenkeiDataKbn
RENKEI_DATA_KBN_POPID = \"03\"
TRN_KBN_DEL = \"03\""]
    SET4["renkei2 = true"]
    COND_SIZE5["hikiMotoOpSvcKeiB002Sjisho
size > 0?"]
    PUT5["putAxMRenkeiDataKbn
RENKEI_DATA_KBN_WEBID = \"04\"
TRN_KBN_DEL = \"03\""]
    SET5["renkei2 = true"]
    COND_NEW1["opSvcKeiNoB002motoNew
is not empty?"]
    PUT6["putAxMRenkeiDataKbn
RENKEI_DATA_KBN_WEBID = \"04\"
TRN_KBN_ADD = \"01\""]
    SET6["renkei2 = true"]
    COND_RENK2["renkei2
equals true?"]
    ADD2["addSjisho(handle, param, 'renkei_data_list2')"]

    END(["Return (void)"])

    START --> CREATE
    CREATE --> COND_NULL1
    COND_NULL1 -- false --> COND_NULL2
    COND_NULL1 -- true --> COND_SIZE1
    COND_SIZE1 -- true --> PUT1
    COND_SIZE1 -- false --> COND_SIZE2
    PUT1 --> SET1
    SET1 --> COND_SIZE2
    COND_SIZE2 -- true --> PUT2
    COND_SIZE2 -- false --> COND_SIZE3
    PUT2 --> SET2
    SET2 --> COND_SIZE3
    COND_SIZE3 -- true --> PUT3
    COND_SIZE3 -- false --> COND_RENK1
    PUT3 --> SET3
    SET3 --> COND_RENK1
    COND_RENK1 -- true --> ADD1
    COND_RENK1 -- false --> COND_NULL2
    ADD1 --> COND_NULL2
    COND_NULL2 -- false --> END
    COND_NULL2 -- true --> COND_SIZE4
    COND_SIZE4 -- true --> PUT4
    COND_SIZE4 -- false --> COND_SIZE5
    PUT4 --> SET4
    SET4 --> COND_SIZE5
    COND_SIZE5 -- true --> PUT5
    COND_SIZE5 -- false --> COND_NEW1
    PUT5 --> SET5
    SET5 --> COND_NEW1
    COND_NEW1 -- true --> PUT6
    COND_NEW1 -- false --> COND_RENK2
    PUT6 --> SET6
    SET6 --> COND_RENK2
    COND_RENK2 -- true --> ADD2
    COND_RENK2 -- false --> END
    ADD2 --> END
```

**Constant Resolution Reference:**

| Constant | Value | Business Meaning |
|----------|-------|-----------------|
| `RENKEI_DATA_KBN_POPID` | `"03"` | Relay data type: POP ID information — identifies the POP (Point of Presence) authentication identifier |
| `RENKEI_DATA_KBN_WEBID` | `"04"` | Relay data type: WEB ID information — identifies the DSL/WAN service identifier |
| `TRN_KBN_ADD` | `"01"` | Transaction type: Add / register |
| `TRN_KBN_DEL` | `"03"` | Transaction type: Delete / cancel |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle used for transaction management and SQL execution by called service methods |
| 2 | `param` | `IRequestParameterReadWrite` | Request/response parameter object carrying structured relay data lists (`renkei_data_list1`, `renkei_data_list2`) that are populated with POP ID and WEB ID mappings for downstream processing |
| 3 | `hikiMotoOpSvcKeiB001Sjisho` | `ArrayList` | Transfer source (old party) service contract numbers — a list of B001-type (POP ID) service contract numbers to **delete** during the hiki-watari transfer. These are service numbers from the party whose service is being transferred away |
| 4 | `hikiSakiOpSvcKeiB001Sjisho` | `ArrayList` | Transfer destination (new party) service contract numbers — a list of B001-type (POP ID) service contract numbers to **register** at the hiki-watari destination. These are the new POP IDs assigned after transfer |
| 5 | `hikiMotoOpSvcKeiB002Sjisho` | `ArrayList` | Transfer source (old party) DSL service numbers — a list of B002-type (WEB ID) service contract numbers to **delete**. Used when the old party's DSL service is being cancelled as part of the transfer |
| 6 | `hikiSakiOpSvcKeiB002Sjisho` | `ArrayList` | Transfer destination (new party) DSL service numbers — a list of B002-type (WEB ID) service contract numbers to **register**. Used when the new party is receiving DSL service after the transfer |
| 7 | `hikiSakiDslOpSvcKeiB002Sjisho` | `ArrayList` | Transfer destination DSL service numbers for **deletion** — these are old DSL service numbers at the hiki-watari destination that must be removed (e.g., when the destination party is deleting a service). Note: distinct from `hikiSakiOpSvcKeiB002Sjisho` which registers new services |
| 8 | `workMap` | `HashMap<String, Object>` | Work data map containing the transfer source SYSID (`hikiMotoSysid`) and transfer destination SYSID (`hikiSakiSysid`). The method extracts these SYSIDs via `getHikiMotoSysid()` and `getHikiSakiSysid()` to determine which sides have active service IDs to process |

**External state / instance fields read:** None — this method is stateless and uses only parameters and local variables.

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| C | `JKKAddSjishoCC.addSjisho` | JKKAddSjishoCC | - | Calls `addSjisho` in `JKKAddSjishoCC` — registers instruction slip data for the relay data list. Called twice: once for `renkei_data_list1` (destination side) and once for `renkei_data_list2` (source side) |
| - | `JKKBpCommon.putAxMRenkeiDataKbn` | JKKBpCommon | - | Populates structured relay data lists with POP ID / WEB ID information and transaction type (add/delete). Called 6 times across both transfer directions |
| C | `JKKOpSvcHktgiUpdCC.createUserData` | JKKOpSvcHktgiUpdCC | - | Creates user-defined data areas in the parameter for `renkei_data_list1` and `renkei_data_list2` |
| R | `JKKOpSvcHktgiUpdCC.getHikiMotoSysid` | JKKOpSvcHktgiUpdCC | - | Retrieves the transfer source (moto) SYSID from `workMap` to determine if there is source-side data to process |
| R | `JKKOpSvcHktgiUpdCC.getHikiSakiSysid` | JKKOpSvcHktgiUpdCC | - | Retrieves the transfer destination (saki) SYSID from `workMap` to determine if there is destination-side data to process |
| - | `JKKOpSvcHktgiUpdCC.isNull` | JKKOpSvcHktgiUpdCC | - | Null-check utility for string values (`hikiSakiSysid`, `hikiMotoSysid`, `opSvcKeiNoB002motoNew`) |
| - | `JFUKyokaIpAdActionChkUtil.toArray` | JFUKyokaIpAdActionChk | - | Converts ArrayList elements to String arrays for relay data population |

**CRUD Classification:**

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| C | `createUserData` | JKKOpSvcHktgiUpdCC | - | Creates user-defined text string area in request parameter for relay data list keys |
| R | `getHikiSakiSysid` | JKKOpSvcHktgiUpdCC | - | Reads transfer destination SYSID from work map |
| R | `getHikiMotoSysid` | JKKOpSvcHktgiUpdCC | - | Reads transfer source SYSID from work map |
| C | `putAxMRenkeiDataKbn` (POPID, ADD) | JKKBpCommon | - | Adds POP ID relay data with RENKEI_DATA_KBN_POPID="03", TRN_KBN_ADD="01" for destination side |
| C | `putAxMRenkeiDataKbn` (WEBID, DEL) | JKKBpCommon | - | Adds WEB ID relay data with RENKEI_DATA_KBN_WEBID="04", TRN_KBN_DEL="03" for DSL deletion at destination |
| C | `putAxMRenkeiDataKbn` (WEBID, ADD) | JKKBpCommon | - | Adds WEB ID relay data with RENKEI_DATA_KBN_WEBID="04", TRN_KBN_ADD="01" for DSL registration at destination |
| C | `putAxMRenkeiDataKbn` (POPID, DEL) | JKKBpCommon | - | Adds POP ID relay data with RENKEI_DATA_KBN_POPID="03", TRN_KBN_DEL="03" for source side cancellation |
| C | `putAxMRenkeiDataKbn` (WEBID, DEL) | JKKBpCommon | - | Adds WEB ID relay data with RENKEI_DATA_KBN_WEBID="04", TRN_KBN_DEL="03" for source DSL cancellation |
| C | `addSjisho` (list1) | JKKAddSjishoCC | - | Registers instruction slip for destination-side relay data |
| C | `addSjisho` (list2) | JKKAddSjishoCC | - | Registers instruction slip for source-side relay data |

## 5. Dependency Trace

### Pre-computed evidence from code analysis graph:

No screen/batch entry points found within 8 hops. Direct callers found: 1 method.
Terminal operations from this method: `addSjisho` [C], `putAxMRenkeiDataKbn` [-], `putAxMRenkeiDataKbn` [-], `putAxMRenkeiDataKbn` [-], `isNull` [-], `putAxMRenkeiDataKbn` [-], `putAxMRenkeiDataKbn` [-], `putAxMRenkeiDataKbn` [-], `toArray` [-], `putAxMRenkeiDataKbn` [-], `putAxMRenkeiDataKbn` [-], `putAxMRenkeiDataKbn` [-], `toArray` [-], `isNull` [-], `addSjisho` [C], `putAxMRenkeiDataKbn` [-], `putAxMRenkeiDataKbn` [-], `putAxMRenkeiDataKbn` [-], `toArray` [-], `putAxMRenkeiDataKbn` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS: `JKKOpSvcHktgiUpdCC.copyOption` | `copyOption(handle, param, mskmDtlNo, workMap)` → `sjishoCC(handle, param, ...)` | `addSjisho [C]`, `putAxMRenkeiDataKbn [-]` |

**Call chain context:** The `copyOption()` method in the same class `JKKOpSvcHktgiUpdCC` (line 767) invokes `sjishoCC()` as part of immediate processing (`isSokujitsu` branch — "sokujitsu shori" = immediate processing) during a service contract change operation. The immediate processing branch is distinct from the scheduled/reserved processing branch (`rsvOpHktgi`) which handles deferred operations.

This method is an internal CC (common component) utility and is not directly invoked by any screen classes or batch entry points. It is exclusively called by `copyOption()`.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] (L793-798)

> Instantiate JKKAddSjishoCC and create two user-defined data areas in the request parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sjishoCC = new JKKAddSjishoCC()` // Instantiate instruction slip controller |
| 2 | CALL | `createUserData(param, "renkei_data_list1")` // Create relay data list 1 (destination side) |
| 3 | CALL | `createUserData(param, "renkei_data_list2")` // Create relay data list 2 (source side) |

**Block 2** — [SET] (L799-822)

> Initialize relay flags and work variables. "Yuu-tei ryouiki sakusei" = User-defined region creation. "Keiken sakirenkei flag" = Past relay flag. "Keigen moto renkei flag" = Past source relay flag. KT1-2013-0000236 comment notes that KM Home Page cases where inheritance occurs require re-registration of the KM Home Page at the source using the source service contract number — not handled in KT1-2013-0000236.

| # | Type | Code |
|---|------|------|
| 1 | SET | `renkei1 = false` // Relay flag for destination (saki) side |
| 2 | SET | `renkei2 = false` // Relay flag for source (moto) side |
| 3 | SET | `opSvcKeiNoB002motoNew = ""` // New B002 service number for source side (unused, not implemented) |

**Block 3** — [SET] (L824-827)

> "Keigen moto SYSID taku-eyu" = Acquire transfer source SYSID. "Keigen saki SYSID taku-eyu" = Acquire transfer destination SYSID.

| # | Type | Code |
|---|------|------|
| 1 | SET | `hikiMotoSysid = getHikiMotoSysid(workMap)` // Get source party SYSID |
| 2 | SET | `hikiSakiSysid = getHikiSakiSysid(workMap)` // Get destination party SYSID |

**Block 4** — [IF] `(isNull(hikiSakiSysid) == false)` — Process hiki-saki (transfer destination) side [L833]

> Comment: "Indication of handling hiki-saki SYSID: call instruction CC". Processing division: registration (toukyoku).
> If a destination SYSID exists, populate relay data lists with destination-side service numbers.

| # | Type | Code |
|---|------|------|
| 1 | SET | (see Block 4 sub-blocks below) |
| 2 | CALL | (see Block 4 sub-blocks below) |

**Block 4.1** — [IF] `(hikiSakiOpSvcKeiB001Sjisho.size() > 0)` — Register destination POP IDs [L837]

> "Meeru: Keigen saki opSvcKeiNo de toukyoku renkei" = Email: Register relay data at destination service contract number.
> Relay data division 03: POPID information. Processing division: registration (add).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKBpCommon.putAxMRenkeiDataKbn(param, "renkei_data_list1", RENKEI_DATA_KBN_POPID="03", TRN_KBN_ADD="01", hikiSakiOpSvcKeiB001Sjisho.toArray(...), hikiSakiSysid)` |
| 2 | SET | `renkei1 = true` // Set relay flag — data was populated |

**Block 4.2** — [IF] `(hikiSakiDslOpSvcKeiB002Sjisho.size() > 0)` — Delete destination DSL service numbers [L849]

> "KM Home Page: Delete old service numbers at destination (when destination is deleting)".
> Relay data division 04: WEBID information. Processing division: deletion (del).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKBpCommon.putAxMRenkeiDataKbn(param, "renkei_data_list1", RENKEI_DATA_KBN_WEBID="04", TRN_KBN_DEL="03", hikiSakiDslOpSvcKeiB002Sjisho.toArray(...), hikiSakiSysid)` |
| 2 | SET | `renkei1 = true` // Set relay flag — data was populated |

**Block 4.3** — [IF] `(hikiSakiOpSvcKeiB002Sjisho.size() > 0)` — Register destination DSL service numbers [L860]

> "KM Home Page: Register new service numbers at destination (registration at hiki-saki)".
> Relay data division 04: WEBID information. Processing division: registration (add).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKBpCommon.putAxMRenkeiDataKbn(param, "renkei_data_list1", RENKEI_DATA_KBN_WEBID="04", TRN_KBN_ADD="01", hikiSakiOpSvcKeiB002Sjisho.toArray(...), hikiSakiSysid)` |
| 2 | SET | `renkei1 = true` // Set relay flag — data was populated |

**Block 4.4** — [IF] `(renkei1 == true)` — Register instruction slip for destination side [L871]

> "Keigen saki de renkei o okonau baai, shiji-sho CC call o okonau" = When relay is performed at destination, call instruction slip CC.
> Comment: "Shiji-sho toukyoku" = Instruction slip registration.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `sjishoCC.addSjisho(handle, param, "renkei_data_list1")` // Register instruction slip with destination relay data |

**Block 5** — [IF] `(isNull(hikiMotoSysid) == false)` — Process hiki-moto (transfer source) side [L881]

> Comment: "Indication of handling hiki-moto SYSID: call instruction CC". Processing division: deletion (kajo).
> If a source SYSID exists, populate relay data lists with source-side service numbers for cancellation.

| # | Type | Code |
|---|------|------|
| 1 | SET | (see Block 5 sub-blocks below) |
| 2 | CALL | (see Block 5 sub-blocks below) |

**Block 5.1** — [IF] `(hikiMotoOpSvcKeiB001Sjisho.size() > 0)` — Delete source POP IDs [L885]

> "Meeru: Keigen moto no opSvcKeiNo wo kajo renkei (keigen moto meeru kajo no renkei)" = Email: Relay source service number cancellation (relay for source-side email cancellation).
> Relay data division 03: POPID information. Processing division: deletion.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKBpCommon.putAxMRenkeiDataKbn(param, "renkei_data_list2", RENKEI_DATA_KBN_POPID="03", TRN_KBN_DEL="03", hikiMotoOpSvcKeiB001Sjisho.toArray(...), hikiMotoSysid)` |
| 2 | SET | `renkei2 = true` // Set relay flag — data was populated |

**Block 5.2** — [IF] `(hikiMotoOpSvcKeiB002Sjisho.size() > 0)` — Delete source DSL service numbers [L896]

> "KM Home Page: Relay source service number cancellation (keigen moto no kajo)" = Relay for source-side DSL cancellation.
> Relay data division 04: WEBID information. Processing division: deletion.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKBpCommon.putAxMRenkeiDataKbn(param, "renkei_data_list2", RENKEI_DATA_KBN_WEBID="04", TRN_KBN_DEL="03", hikiMotoOpSvcKeiB002Sjisho.toArray(...), hikiMotoSysid)` |
| 2 | SET | `renkei2 = true` // Set relay flag — data was populated |

**Block 5.3** — [IF] `(isNull(opSvcKeiNoB002motoNew) == false)` — Register new source B002 service number [L907]

> "KM Home Page: Register new service numbers at source (registration at hiki-saki)".
> Relay data division 04: WEBID information. Processing division: registration (add).
> Note: `opSvcKeiNoB002motoNew` is initialized to `""` and never assigned elsewhere — this branch is a TODO placeholder from KT1-2013-0000236, not yet implemented.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKBpCommon.putAxMRenkeiDataKbn(param, "renkei_data_list2", RENKEI_DATA_KBN_WEBID="04", TRN_KBN_ADD="01", new String[]{opSvcKeiNoB002motoNew}, hikiMotoSysid)` |
| 2 | SET | `renkei2 = true` // Set relay flag — data was populated |

**Block 5.4** — [IF] `(renkei2 == true)` — Register instruction slip for source side [L919]

> "Keigen moto de renkei o okonau baai, shiji-sho CC call o okonau" = When relay is performed at source, call instruction slip CC.
> Comment: "Shiji-sho toukyoku" = Instruction slip registration.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `sjishoCC.addSjisho(handle, param, "renkei_data_list2")` // Register instruction slip with source relay data |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `sjisho` | Field | Instruction slip (shiji-sho) — a document/data structure used to instruct downstream systems to perform specific operations on telecom service records |
| `hiki-watari` | Field | Service contract transfer — the process of transferring a customer's service from one service ID to another (e.g., during migration, cancellation, or reassignment) |
| `hiki-saki` | Field | Transfer destination — the target side of a service contract transfer, where new service records are created |
| `hiki-moto` | Field | Transfer source — the originating side of a service contract transfer, where old service records are cancelled |
| `RENKEI_DATA_KBN` | Field | Relay data type classification — identifies the type of relay data being populated (POP ID, WEB ID, etc.) |
| `POP ID` | Field | POP (Point of Presence) authentication identifier — the identifier used to authenticate and route DSL/broadband connections |
| `WEB ID` | Field | WEB ID (WAN identifier) — the DSL service identifier used for broadband connection management |
| `TRN_KBN` | Field | Transaction type classification — indicates whether the operation is add (01), update (02), or delete (03) |
| `opSvcKeiNo` | Field | Operating service contract number — the unique service contract number assigned to a customer's service |
| `B001` | Field | Service type B001 — refers to POP ID type service contract entries (broadband authentication) |
| `B002` | Field | Service type B002 — refers to WEB ID / DSL service type entries (DSL service numbers) |
| `SYSID` | Field | System ID — the internal system identifier for a service instance in the telecom order management system |
| `createUserData` | Method | Creates user-defined text string areas in the request parameter — initializes named data regions for structured relay data |
| `putAxMRenkeiDataKbn` | Method | Populates structured relay data with type classification and transaction type — writes relay data mappings into the request parameter for downstream consumption |
| `addSjisho` | Method | Registers instruction slip data — commits the populated relay data list as instruction slips for downstream system processing |
| `renkei_data_list1` | Field | Relay data list 1 — data area for hiki-saki (transfer destination) side relay information |
| `renkei_data_list2` | Field | Relay data list 2 — data area for hiki-moto (transfer source) side relay information |
| `sokujitsu` | Field | Immediate processing — same-day / immediate execution mode, as opposed to scheduled/reserved processing |
| `JKKAddSjishoCC` | Class | Instruction slip add CC (Common Component) — service component responsible for registering instruction slip data |
| `JKKBpCommon` | Class | Business process common utilities — shared utility class for relay data population and common operations |
| `IT2-2012-0000585` | Change ticket | Change request ticket from 2012/06/14 — modified this method's documentation and implementation |
| `KT1-2013-0000236` | Change ticket | Change request ticket from 2013-02-27 — added relay flag fields for KM Home Page inheritance; marked as "not yet implemented" (mitaio) |
