<commit_before><table class="table table-bordered">
  <tbody ng-if="$ctrl.target.length === 0">
    <tr colspan="5">
      <td class="text-center" translate>
        Security group does not contain any rule yet.
      </td>
    </tr>
  </tbody>
  <thead ng-if="$ctrl.target.length > 0">
    <tr>
        <th translate>IP protocol</th>
        <th translate>From port</th>
        <th translate>To port</th>
        <th translate>Remote CIDR</th>
        <th translate>Actions</th>
    </tr>
  </thead>
  <tbody ng-if="$ctrl.target.length > 0">
    <tr ng-repeat="rule in $ctrl.target">
      <td>
        <select
          ng-options="protocol.toUpperCase() for protocol in $ctrl.protocols"
          ng-model="rule.protocol"
          ng-change="$ctrl.selectProtocol(rule)"
          class="form-control"></select>
      </td>
      <td>
        <input
          ng-model="rule.from_port"
          type="number"
          min="{{ $ctrl.getPortMin(rule) }}"
          max="{{ $ctrl.getPortMax(rule) }}"
          class="form-control"
          required/>
      </td>
      <td>
        <input
          ng-model="rule.to_port"
          type="number"
          min="{{ $ctrl.getPortMin(rule) }}"
          max="{{ $ctrl.getPortMax(rule) }}"
          class="form-control"
          required/>
      </td>
      <td>
        <input
          ng-model="rule.cidr"
          class="form-control"
          ng-pattern="$ctrl.cidrPattern"
          placeholder="10.0.0.1/24"/>
      </td>
      <td>
        <button
          class="btn btn-danger btn-xs"
          type="button"
          ng-click="$ctrl.deleteRule(rule)">
          <i class="fa fa-trash"></i>&nbsp;
          <span translate>Delete</span>
        </button>
      </td>
    </tr>
  </tbody>
</table>

<button
  class="btn btn-primary btn-sm"
  ng-click="$ctrl.addRule()"
  type="button">
  <i class="fa fa-plus"></i>&nbsp;
  <span translate>Add rule</span>
</button><commit_msg>Fix placeholder in security group rule editor.<commit_after><table class="table table-bordered">
  <tbody ng-if="$ctrl.target.length === 0">
    <tr colspan="5">
      <td class="text-center" translate>
        Security group does not contain any rule yet.
      </td>
    </tr>
  </tbody>
  <thead ng-if="$ctrl.target.length > 0">
    <tr>
        <th translate>IP protocol</th>
        <th translate>From port</th>
        <th translate>To port</th>
        <th translate>Remote CIDR</th>
        <th translate>Actions</th>
    </tr>
  </thead>
  <tbody ng-if="$ctrl.target.length > 0">
    <tr ng-repeat="rule in $ctrl.target">
      <td>
        <select
          ng-options="protocol.toUpperCase() for protocol in $ctrl.protocols"
          ng-model="rule.protocol"
          ng-change="$ctrl.selectProtocol(rule)"
          class="form-control"></select>
      </td>
      <td>
        <input
          ng-model="rule.from_port"
          type="number"
          min="{{ $ctrl.getPortMin(rule) }}"
          max="{{ $ctrl.getPortMax(rule) }}"
          class="form-control"
          required/>
      </td>
      <td>
        <input
          ng-model="rule.to_port"
          type="number"
          min="{{ $ctrl.getPortMin(rule) }}"
          max="{{ $ctrl.getPortMax(rule) }}"
          class="form-control"
          required/>
      </td>
      <td>
        <input
          ng-model="rule.cidr"
          class="form-control"
          ng-pattern="$ctrl.cidrPattern"
          placeholder="0.0.0.0/24"/>
      </td>
      <td>
        <button
          class="btn btn-danger btn-xs"
          type="button"
          ng-click="$ctrl.deleteRule(rule)">
          <i class="fa fa-trash"></i>&nbsp;
          <span translate>Delete</span>
        </button>
      </td>
    </tr>
  </tbody>
</table>

<button
  class="btn btn-primary btn-sm"
  ng-click="$ctrl.addRule()"
  type="button">
  <i class="fa fa-plus"></i>&nbsp;
  <span translate>Add rule</span>
</button>
{'fraction_non_alphanumeric': 0.17432363450740174, 'fraction_numerical': 0.005359877488514548, 'mean_word_length': 1.911589895988113, 'pattern_counts': {'":': 0, '<': 109, '<?xml version=': 0, '>': 113, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '381035', 'n_tokens_mistral': 1277, 'n_tokens_neox': 1259, 'n_words': 243}