{% set rsyslog_flows = logging_flows | d([ {"name": "default_flow", "inputs": [ item.name ], "outputs": ["default_files"]} ], true) %}
{% set outdict = {} %}
{% for flow in rsyslog_flows %}
{%   if flow.inputs | intersect([ item.name ]) %}
{%     for oname in flow.outputs %}
{%       set _ = outdict.__setitem__(oname, outdict.get(oname,[])|union([ item.name ])) %}
{%     endfor %}
{%   endif %}
{% endfor %}
{% for output in rsyslog_outputs %}
{%   if outdict[output.name] | d(false) %}
if
{%     for inputname in outdict[output.name] %}
{%       if inputname == item.name %}
{%         if not loop.first %}
  or
{%         endif %}
{%         if item.type == "basics" %}
  ($inputname == "imjournal" or $inputname == "imuxsock")
{%         elif item.type == "remote" %}
  ($inputname == "{{ item.name }}")
{%         else %}
  ($syslogtag == "{{ item.name }}")
{%         endif %}
{%       endif %}
{%     endfor %}
  then {
    call {{ output.name }}
}
{%   endif %}
{% endfor %}
